class ModuleApp include Mongoid::Document include Mongoid::Timestamps field :title, type: String field :key, type: String field :taggable, type: Boolean, default: false field :categorizable, type: Boolean, default: false field :authorizable, type: Boolean, default: false field :sidebar_order,type: Integer,default: 0 field :authorizable_models, type: Array has_many :categories, dependent: :destroy, :autosave => true has_and_belongs_to_many :tags, dependent: :destroy, :autosave => true has_many :authorizations def refetch_setting!(reg) self[:taggable] = reg.is_taggable self[:categorizable] = reg.is_categorizable self[:authorizable] = reg.is_authorizable self[:authorizable_models] = reg.get_authorizable_models end def get_registration OrbitApp::Module::Registration.find_by_key(key) end def self.find_by_key(key) self.find_by(:key => key) end def module_name I18n.t(get_registration.get_label_i18n) end def label I18n.t(label_i18n) end def label_i18n reg = get_registration reg.nil? ? 'Init is not defined completely' : get_registration.get_label_i18n end def taggable get_registration.is_taggable end def taggable_model get_registration.taggable_model end def categorizable get_registration.is_categorizable end def user_can_manage? self.workgroup.key.eql?("manager") end def authorizable get_registration.is_authorizable end def user_module_managers Authorization.module_authorized_users(self).pluck(:user_id) end def role_module_managers users = Authorization.module_authorized_users(self).pluck(:user_id) roles = Authorization.module_authorized_users(self).pluck(:role_id) users + roles end end