orbit4-5/app/models/module_app.rb

89 lines
2.4 KiB
Ruby
Raw Normal View History

2014-04-01 07:10:21 +00:00
class ModuleApp
include Mongoid::Document
include Mongoid::Timestamps
2014-04-01 07:10:21 +00:00
field :title, type: String
field :key, type: String
2014-04-21 02:48:36 +00:00
field :taggable, type: Boolean, default: false
field :categorizable, type: Boolean, default: false
field :authorizable, type: Boolean, default: false
field :frontend_enable, type: Boolean, default: false
field :sidebar_order,type: Integer,default: 0
field :authorizable_models, type: Array
2014-04-10 09:55:24 +00:00
has_many :categories, dependent: :destroy, :autosave => true
2014-04-21 02:48:36 +00:00
has_and_belongs_to_many :tags, dependent: :destroy, :autosave => true
has_many :authorizations
2014-04-21 02:48:36 +00:00
scope :frontend_enabled, ->{ where(:frontend_enable => true)}
2014-04-21 02:48:36 +00:00
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
self[:frontend_enable] = reg.is_frontend_enabled
2014-04-21 02:48:36 +00:00
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
2014-04-21 02:48:36 +00:00
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_managers
Authorization.module_authorized_users(self).pluck(:role_id)
end
def module_managers
workgroup = Workgroup.find_by(key: 'sub_managers')
authorized_users = Authorization.module_authorized_users(self).where(:user_id.ne => nil, :workgroup_id.ne => workgroup.id).map {|u| u.user} rescue nil
authorized_members = Authorization.module_authorized_users(self).where(:role_id.ne => nil).map {|m| m.role.member_profiles}.first rescue nil
users_authorized_by_role = authorized_members.map {|u| u.user} rescue []
authorized_users.inject(users_authorized_by_role, :<<) rescue []
end
def data_count
get_registration.get_data_count
end
2014-04-01 07:10:21 +00:00
end