@ -13,13 +13,14 @@
# ends_at :datetime
# ends_at :datetime
# created_at :datetime not null
# created_at :datetime not null
# updated_at :datetime not null
# updated_at :datetime not null
# published_at :datetime
#
#
class Announcement < ApplicationRecord
class Announcement < ApplicationRecord
scope :unpublished , - > { where ( published : false ) }
scope :unpublished , - > { where ( published : false ) }
scope :published , - > { where ( published : true ) }
scope :published , - > { where ( published : true ) }
scope :without_muted , - > ( account ) { joins ( " LEFT OUTER JOIN announcement_mutes ON announcement_mutes.announcement_id = announcements.id AND announcement_mutes.account_id = #{ account . id } " ) . where ( 'announcement_mutes.id IS NULL' ) }
scope :without_muted , - > ( account ) { joins ( " LEFT OUTER JOIN announcement_mutes ON announcement_mutes.announcement_id = announcements.id AND announcement_mutes.account_id = #{ account . id } " ) . where ( 'announcement_mutes.id IS NULL' ) }
scope :chronological , - > { order ( Arel . sql ( 'COALESCE(announcements.starts_at, announcements.scheduled_at, announcements. created_at) ASC') ) }
scope :chronological , - > { order ( Arel . sql ( 'COALESCE(announcements.starts_at, announcements.scheduled_at, announcements. published_at, announcements. created_at) ASC') ) }
has_many :announcement_mutes , dependent : :destroy
has_many :announcement_mutes , dependent : :destroy
has_many :announcement_reactions , dependent : :destroy
has_many :announcement_reactions , dependent : :destroy
@ -31,10 +32,6 @@ class Announcement < ApplicationRecord
before_validation :set_all_day
before_validation :set_all_day
before_validation :set_published , on : :create
before_validation :set_published , on : :create
def published_at
scheduled_at || created_at
end
def time_range?
def time_range?
starts_at . present? && ends_at . present?
starts_at . present? && ends_at . present?
end
end
@ -73,6 +70,9 @@ class Announcement < ApplicationRecord
end
end
def set_published
def set_published
self . published = true if scheduled_at . blank? || scheduled_at . past?
return unless scheduled_at . blank? || scheduled_at . past?
self . published = true
self . published_at = Time . now . utc
end
end
end
end