Class: Task
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Task
- Defined in:
- app/models/polymorphic/task.rb
Overview
Schema Information
Table name: tasks
id :integer not null, primary key
user_id :integer
assigned_to :integer
completed_by :integer
name :string(255) default(""), not null
asset_id :integer
asset_type :string(255)
priority :string(32)
category :string(32)
bucket :string(32)
due_at :datetime
completed_at :datetime
deleted_at :datetime
created_at :datetime
updated_at :datetime
background_info :string(255)
Instance Attribute Summary collapse
-
#calendar ⇒ Object
Returns the value of attribute calendar.
Class Method Summary collapse
-
.bucket_empty?(bucket, user, view = "pending") ⇒ Boolean
Returns bucket if it’s empty (i.e. we have to hide it), nil otherwise.
-
.find_all_grouped(user, view) ⇒ Object
Returns list of tasks grouping them by due date as required by tasks/index.
-
.totals(user, view = "pending") ⇒ Object
Returns task totals for each of the views as needed by tasks sidebar.
Instance Method Summary collapse
-
#assigned_by?(user) ⇒ Boolean
Matcher for the :assigned_by named scope.
-
#at_specific_time? ⇒ Boolean
Check whether the due date has specific time ignoring 23:59:59 timestamp set by Time.now.end_of_week.
-
#completed? ⇒ Boolean
—————————————————————————-.
-
#computed_bucket ⇒ Object
Convert specific due_date to “due_today”, “due_tomorrow”, etc.
-
#my?(user) ⇒ Boolean
Matcher for the :my named scope.
-
#tracked_by?(user) ⇒ Boolean
Matcher for the :tracked_by? named scope.
Instance Attribute Details
#calendar ⇒ Object
Returns the value of attribute calendar.
41 42 43 |
# File 'app/models/polymorphic/task.rb', line 41 def calendar @calendar end |
Class Method Details
.bucket_empty?(bucket, user, view = "pending") ⇒ Boolean
Returns bucket if it’s empty (i.e. we have to hide it), nil otherwise.
180 181 182 183 184 185 186 187 |
# File 'app/models/polymorphic/task.rb', line 180 def self.bucket_empty?(bucket, user, view = "pending") return false if bucket.blank? if view == "assigned" assigned_by(user).send(bucket).pending.count else my(user).send(bucket).send(view).count end == 0 end |
.find_all_grouped(user, view) ⇒ Object
Returns list of tasks grouping them by due date as required by tasks/index.
169 170 171 172 173 174 175 176 |
# File 'app/models/polymorphic/task.rb', line 169 def self.find_all_grouped(user, view) settings = (view == "completed" ? Setting.task_completed : Setting.task_bucket) Hash[ settings.map do |key, value| [ key, view == "assigned" ? assigned_by(user).send(key).pending : my(user).send(key).send(view) ] end ] end |
.totals(user, view = "pending") ⇒ Object
Returns task totals for each of the views as needed by tasks sidebar.
191 192 193 194 195 196 197 198 |
# File 'app/models/polymorphic/task.rb', line 191 def self.totals(user, view = "pending") settings = (view == "completed" ? Setting.task_completed : Setting.task_bucket) settings.inject({ :all => 0 }) do |hash, key| hash[key] = (view == "assigned" ? assigned_by(user).send(key).pending.count : my(user).send(key).send(view).count) hash[:all] += hash[key] hash end end |
Instance Method Details
#assigned_by?(user) ⇒ Boolean
Matcher for the :assigned_by named scope.
123 124 125 |
# File 'app/models/polymorphic/task.rb', line 123 def assigned_by?(user) self.user == user && assignee && assignee != user end |
#at_specific_time? ⇒ Boolean
Check whether the due date has specific time ignoring 23:59:59 timestamp set by Time.now.end_of_week.
141 142 143 144 145 |
# File 'app/models/polymorphic/task.rb', line 141 def at_specific_time? self.due_at && (self.due_at.hour != 0 || self.due_at.min != 0 || self.due_at.sec != 0) && (self.due_at.hour != 23 && self.due_at.min != 59 && self.due_at.sec != 59) end |
#completed? ⇒ Boolean
128 129 130 |
# File 'app/models/polymorphic/task.rb', line 128 def completed? !!self.completed_at end |
#computed_bucket ⇒ Object
Convert specific due_date to “due_today”, “due_tomorrow”, etc. bucket name.
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'app/models/polymorphic/task.rb', line 149 def computed_bucket return self.bucket if self.bucket != "specific_time" case when self.due_at < Time.zone.now.midnight "overdue" when self.due_at >= Time.zone.now.midnight && self.due_at < Time.zone.now.midnight.tomorrow "due_today" when self.due_at >= Time.zone.now.midnight.tomorrow && self.due_at < Time.zone.now.midnight.tomorrow + 1.day "due_tomorrow" when self.due_at >= (Time.zone.now.midnight.tomorrow + 1.day) && self.due_at < Time.zone.now.next_week "due_this_week" when self.due_at >= Time.zone.now.next_week && self.due_at < (Time.zone.now.next_week.end_of_week + 1.day) "due_next_week" else "due_later" end end |
#my?(user) ⇒ Boolean
Matcher for the :my named scope.
117 118 119 |
# File 'app/models/polymorphic/task.rb', line 117 def my?(user) (self.user == user && assignee.nil?) || assignee == user end |
#tracked_by?(user) ⇒ Boolean
Matcher for the :tracked_by? named scope.
134 135 136 |
# File 'app/models/polymorphic/task.rb', line 134 def tracked_by?(user) self.user == user || self.assignee == user end |