Module: SpreeCmCommissioner::UserDecorator
- Defined in:
- app/models/spree_cm_commissioner/user_decorator.rb
Class Method Summary collapse
- .define_user_places(base) ⇒ Object
-
.prepended(base) ⇒ Object
rubocop:disable Metrics/AbcSize.
Instance Method Summary collapse
- #display_name ⇒ Object
- #early_adopter? ⇒ Boolean
- #ensure_unique_database_delivery_method(attributes) ⇒ Object
- #full_name ⇒ Object
-
#has_spree_role?(role_name) ⇒ Boolean
override.
- #normal_user? ⇒ Boolean
- #operator? ⇒ Boolean
- #organizer? ⇒ Boolean
- #permissions_for_vendor(vendor_id) ⇒ Object
- #push_notificable? ⇒ Boolean
- #soft_deleted? ⇒ Boolean
- #super_admin? ⇒ Boolean
- #update_otp_enabled ⇒ Object
- #update_tracked_fields!(request) ⇒ Object
- #validate_current_password!(password) ⇒ Object
Class Method Details
.define_user_places(base) ⇒ Object
57 58 59 60 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 57 def self.define_user_places(base) base.has_many :user_places, class_name: 'SpreeCmCommissioner::UserPlace' base.has_many :places, through: :user_places, class_name: 'SpreeCmCommissioner::Place' end |
.prepended(base) ⇒ Object
rubocop:disable Metrics/AbcSize
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 4 def self.prepended(base) # rubocop:disable Metrics/AbcSize base.include SpreeCmCommissioner::UserNotification base.include SpreeCmCommissioner::UserIdentity base.include SpreeCmCommissioner::UserPreference base.enum gender: i[male female other] base.has_many :subscriptions, through: :customer, class_name: 'SpreeCmCommissioner::Subscription' base.has_many :payments, as: :payable, class_name: 'Spree::Payment', dependent: :nullify base.has_many :role_permissions, through: :spree_roles, class_name: 'SpreeCmCommissioner::RolePermission' base.has_many :permissions, through: :role_permissions, class_name: 'SpreeCmCommissioner::Permission' base.has_many :line_items, through: :orders, source: :line_items base.has_many :check_ins, foreign_key: 'check_in_by_id', class_name: 'SpreeCmCommissioner::CheckIn' base.has_many :user_events, class_name: 'SpreeCmCommissioner::UserEvent' base.has_many :events, through: :user_events, class_name: 'Spree::Taxon', source: 'taxon' base.has_many :guests, class_name: 'SpreeCmCommissioner::Guest', dependent: :destroy base.has_many :google_user_identity_providers, -> { where(identity_type: :google) }, class_name: 'SpreeCmCommissioner::UserIdentityProvider' base.has_many :wished_items, class_name: 'Spree::WishedItem', through: :wishlists base.has_many :promotions, through: :promotion_rules, class_name: 'Spree::Promotion' base.has_one :profile, as: :viewable, dependent: :destroy, class_name: 'SpreeCmCommissioner::UserProfile' base.has_one :customer, class_name: 'SpreeCmCommissioner::Customer' base.has_secure_password :confirm_pin_code, validations: false base.multi_tenant :tenant, class_name: 'SpreeCmCommissioner::Tenant' base.scope :by_tenant, -> (tenant_id) { where(tenant_id: tenant_id) } base.whitelisted_ransackable_attributes = %w[email first_name last_name gender phone_number] base.before_save :update_otp_enabled define_user_places(base) def base.end_users joins('LEFT JOIN spree_vendor_users ON spree_users.id = spree_vendor_users.user_id').where(spree_vendor_users: { user_id: nil }) end def normal_user? system_user = admin? || !vendors.empty? normal_user = spree_roles.length == 1 ? spree_roles[0].name == 'user' : spree_roles.empty? normal_user && !system_user end def soft_deleted? !account_deletion_at.nil? end end |
Instance Method Details
#display_name ⇒ Object
91 92 93 94 95 96 97 98 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 91 def display_name return full_name if full_name.present? return first_name if first_name.present? return last_name if last_name.present? return email if email.present? phone_number end |
#early_adopter? ⇒ Boolean
75 76 77 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 75 def early_adopter? has_spree_role?('early_adopter') end |
#ensure_unique_database_delivery_method(attributes) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 100 def ensure_unique_database_delivery_method(attributes) recipient = self = { recipient_id: recipient.id, notificable_id: attributes[:notificable].id, notificable_type: attributes[:notificable].class.to_s, type: attributes[:type] } notification = recipient.notifications.where().first_or_initialize if notification.persisted? notification.update(attributes) else notification.assign_attributes(attributes) notification.save! end notification end |
#full_name ⇒ Object
87 88 89 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 87 def full_name [first_name, last_name].compact_blank.join(' ') end |
#has_spree_role?(role_name) ⇒ Boolean
override
67 68 69 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 67 def has_spree_role?(role_name) # rubocop:disable Naming/PredicateName spree_roles.non_vendor.exists?(name: role_name) end |
#normal_user? ⇒ Boolean
46 47 48 49 50 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 46 def normal_user? system_user = admin? || !vendors.empty? normal_user = spree_roles.length == 1 ? spree_roles[0].name == 'user' : spree_roles.empty? normal_user && !system_user end |
#operator? ⇒ Boolean
83 84 85 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 83 def operator? has_spree_role?('operator') end |
#organizer? ⇒ Boolean
79 80 81 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 79 def organizer? has_spree_role?('organizer') end |
#permissions_for_vendor(vendor_id) ⇒ Object
62 63 64 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 62 def (vendor_id) .joins(role_permissions: :role).where(spree_roles: { vendor_id: vendor_id }) end |
#push_notificable? ⇒ Boolean
122 123 124 125 126 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 122 def push_notificable? return false if device_tokens_count.blank? device_tokens_count.positive? end |
#soft_deleted? ⇒ Boolean
52 53 54 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 52 def soft_deleted? !account_deletion_at.nil? end |
#super_admin? ⇒ Boolean
71 72 73 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 71 def super_admin? has_spree_role?('super_admin') end |
#update_otp_enabled ⇒ Object
134 135 136 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 134 def update_otp_enabled self.otp_enabled = otp_email || otp_phone_number end |
#update_tracked_fields!(request) ⇒ Object
138 139 140 141 142 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 138 def update_tracked_fields!(request) ActiveRecord::Base.connected_to(role: :writing) do super(request) end end |
#validate_current_password!(password) ⇒ Object
128 129 130 131 132 |
# File 'app/models/spree_cm_commissioner/user_decorator.rb', line 128 def validate_current_password!(password) return if valid_password?(password) errors.add(:password, I18n.t('spree_user.invalid_password')) end |