Class: Task
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Task
- Includes:
- ActiveModel::Serializers::Xml
- Defined in:
- app/models/polymorphic/task.rb
Overview
Copyright © 2008-2013 Michael Dvorkin and contributors.
Fat Free CRM is freely distributable under the terms of MIT license. See MIT-LICENSE file or www.opensource.org/licenses/mit-license.php
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)
Constant Summary collapse
- ALLOWED_VIEWS =
%w[pending assigned completed]
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.
33 34 35 |
# File 'app/models/polymorphic/task.rb', line 33 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.
190 191 192 193 194 195 196 197 198 199 |
# File 'app/models/polymorphic/task.rb', line 190 def self.bucket_empty?(bucket, user, view = "pending") return false if bucket.blank? || !ALLOWED_VIEWS.include?(view) return false unless Setting.task_bucket.map(&:to_s).include?(bucket.to_s) 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.
177 178 179 180 181 182 183 184 185 186 |
# File 'app/models/polymorphic/task.rb', line 177 def self.find_all_grouped(user, view) return {} unless ALLOWED_VIEWS.include?(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.
203 204 205 206 207 208 209 210 211 212 |
# File 'app/models/polymorphic/task.rb', line 203 def self.totals(user, view = "pending") return {} unless ALLOWED_VIEWS.include?(view) settings = (view == "completed" ? Setting.task_completed : Setting.task_bucket) settings.each_with_object(HashWithIndifferentAccess[all: 0]) do |key, hash| 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.
133 134 135 |
# File 'app/models/polymorphic/task.rb', line 133 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.
151 152 153 |
# File 'app/models/polymorphic/task.rb', line 151 def at_specific_time? due_at.present? && !due_end_of_day? && !due_beginning_of_day? end |
#completed? ⇒ Boolean
138 139 140 |
# File 'app/models/polymorphic/task.rb', line 138 def completed? !!completed_at end |
#computed_bucket ⇒ Object
Convert specific due_date to “due_today”, “due_tomorrow”, etc. bucket name.
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# File 'app/models/polymorphic/task.rb', line 157 def computed_bucket return bucket if bucket != "specific_time" if overdue? "overdue" elsif due_today? "due_today" elsif due_tomorrow? "due_tomorrow" elsif due_this_week? && !due_today? && !due_tomorrow? "due_this_week" elsif due_next_week? "due_next_week" else "due_later" end end |
#my?(user) ⇒ Boolean
Matcher for the :my named scope.
127 128 129 |
# File 'app/models/polymorphic/task.rb', line 127 def my?(user) (self.user == user && assignee.nil?) || assignee == user end |
#tracked_by?(user) ⇒ Boolean
Matcher for the :tracked_by? named scope.
144 145 146 |
# File 'app/models/polymorphic/task.rb', line 144 def tracked_by?(user) self.user == user || assignee == user end |