123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- class Group < ApplicationRecord
-
-
-
- has_secure_token :api_token
- has_many :members,
- dependent: :destroy
- has_many :people, through: :members
- has_many :activities,
- dependent: :destroy
- has_many :default_subgroups,
- dependent: :destroy
- validates :name,
- presence: true,
- uniqueness: {
- case_sensitive: false
- }
-
- def leaders
- members.includes(:person).where(is_leader: true)
- end
-
- def future_activities
- activities.where('start > ?', Time.now)
- end
-
-
- def current_activities(reference = nil)
- reference ||= Time.zone.now
- activities
- .where('start < ?', reference)
- .where('activities.end > ?', reference)
- end
-
-
- def previous_activities(reference = nil)
- reference ||= Time.zone.now
- activities
- .where('activities.end < ?', reference)
- .order(end: :desc)
- .limit(3)
- end
-
-
- def upcoming_activities(reference = nil)
- reference ||= Time.zone.now
- activities
- .where('start > ?', reference)
- .where('start < ?', reference.days_since(2))
- .order(start: :asc)
- end
-
-
- def member?(person)
- Member.exists?(
- person: person,
- group: self
- ) || person.is_admin?
- end
-
-
- def leader?(person)
- Member.exists?(
- person: person,
- group: self,
- is_leader: true
- ) || person.is_admin?
- end
- end
|