forked from redbooth/teambox
/
scopes.rb
36 lines (28 loc) · 1.48 KB
/
scopes.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Task
default_scope :order => 'position ASC, created_at DESC'
scope :archived, :conditions => ['status >= ?', 3], :include => [:project, :task_list, :assigned]
scope :unarchived, :conditions => ['status < ?', 3], :include => [:project, :task_list, :assigned]
scope :active, :conditions => {:status => ACTIVE_STATUS_CODES}
scope :assigned_to, lambda { |user|
joins(:assigned => :project).where(:people => {:user_id => user.id}).where(:projects => {:archived => false})
}
scope :urgent, :conditions => { :urgent => true }, :include => [:project, :task_list, :assigned]
scope :due_sooner_than_two_weeks, lambda {
{ :conditions => ['tasks.due_on < ?', 2.weeks.from_now] }
}
scope :due_today,
:conditions => ["due_on = ? AND tasks.completed_at is null",
Date.today],
:include => :task_list
scope :upcoming,
:conditions => ["due_on >= ? AND due_on <= ? AND tasks.completed_at is null",
Date.today.monday, Date.today.monday + 2.weeks],
:include => :task_list
scope :upcoming_for_project, lambda {|project_id| {
:conditions => ["tasks.due_on >= ? AND tasks.due_on <= ? AND task_lists.project_id = ? AND tasks.completed_at is null",
Date.today.monday, Date.today.monday + 2.weeks, project_id],
:include => :task_list }}
scope :from_pivotal_tracker, lambda { |story_id|
{ :conditions => ['name LIKE ?', "%[PT#{story_id}]%"] }
}
end