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.
187 188 189 190 191 192 193 194 |
# File 'app/models/polymorphic/task.rb', line 187 def self.bucket_empty?(bucket, user, view = "pending") return false if bucket.blank? || !ALLOWED_VIEWS.include?(view) 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.
175 176 177 178 179 180 181 182 183 |
# File 'app/models/polymorphic/task.rb', line 175 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.
198 199 200 201 202 203 204 205 206 |
# File 'app/models/polymorphic/task.rb', line 198 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.
132 133 134 |
# File 'app/models/polymorphic/task.rb', line 132 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.
150 151 152 |
# File 'app/models/polymorphic/task.rb', line 150 def at_specific_time? due_at.present? && !due_end_of_day? && !due_beginning_of_day? end |
#completed? ⇒ Boolean
137 138 139 |
# File 'app/models/polymorphic/task.rb', line 137 def completed? !!completed_at end |
#computed_bucket ⇒ Object
Convert specific due_date to “due_today”, “due_tomorrow”, etc. bucket name.
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'app/models/polymorphic/task.rb', line 156 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.
126 127 128 |
# File 'app/models/polymorphic/task.rb', line 126 def my?(user) (self.user == user && assignee.nil?) || assignee == user end |
#tracked_by?(user) ⇒ Boolean
Matcher for the :tracked_by? named scope.
143 144 145 |
# File 'app/models/polymorphic/task.rb', line 143 def tracked_by?(user) self.user == user || assignee == user end |