announcement-test/app/models/announcement_setting.rb

43 lines
1.8 KiB
Ruby
Raw Normal View History

class AnnouncementSetting
include Mongoid::Document
include Mongoid::Timestamps
field :carousel_image_type, :type => Integer, :default => 0 # 0: carousel, 1: album
field :sub_annc_title_trans, :type => String, :default => "", :localize => true
field :carousel_image_width, type: String, :default => "75%"
field :top_limit, type: Integer, :default => 0
field :pro_enabled, type: Boolean, :default => false
field :approvers, type: Array, :default => []
field :email_to, type: Array, :default => ["admins","managers","approvers"]
field :is_display_edit_only, type: Boolean, :default => false
field :only_manager_can_edit_status, type: Boolean, :default => false
2022-03-29 06:25:10 +00:00
field :top_text , type: String , localize: true
field :hot_text , type: String , localize: true
field :hidden_text , type: String , localize: true
field :enable_manually_sort, type: Boolean, default: false
has_many :anns_status_settings, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :anns_status_settings, :allow_destroy => true
def self.check_limit_for_user(user_id, b_id = nil)
2015-12-22 11:52:35 +00:00
limit = self.first.top_limit rescue 0
return true if limit == 0
count = Bulletin.where(:is_top => true, :create_user_id => user_id, :id.ne => b_id).count
return count < limit
end
def self.is_pro?
self.first.pro_enabled rescue false
end
def get_sub_annc_title_trans(locale=I18n.locale)
I18n.with_locale(locale) do
self.sub_annc_title_trans.blank? ? I18n.t("announcement.table.title") : self.sub_annc_title_trans
end
end
2022-03-29 06:25:10 +00:00
before_save do
if self.enable_manually_sort_changed? && self.enable_manually_sort
AnnsCache.all.delete
Bulletin.index({approved: -1,is_hidden: 1,is_preview: 1, is_top: -1,sort_number: 1,postdate: -1,_id: -1,deadline: -1}, { unique: false, background: true })
Bulletin.create_indexes
end
end
end