subj_models 0.3.8 → 0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/subj_models/access_group.rb +22 -0
- data/lib/subj_models/action.rb +31 -0
- data/lib/subj_models/attribute_value.rb +32 -0
- data/lib/subj_models/brand.rb +5 -5
- data/lib/subj_models/brand_line.rb +2 -2
- data/lib/subj_models/category.rb +36 -0
- data/lib/subj_models/city.rb +31 -0
- data/lib/subj_models/content_block.rb +25 -0
- data/lib/subj_models/event_schedule.rb +4 -4
- data/lib/subj_models/event_type.rb +27 -0
- data/lib/subj_models/faq.rb +55 -0
- data/lib/subj_models/global_notification.rb +16 -0
- data/lib/subj_models/measure_unit.rb +2 -2
- data/lib/subj_models/nomenclature2.rb +157 -0
- data/lib/subj_models/nomenclature_access_group.rb +19 -0
- data/lib/subj_models/nomenclature_attribute.rb +27 -0
- data/lib/subj_models/nomenclature_price.rb +38 -0
- data/lib/subj_models/nomenclature_review.rb +38 -0
- data/lib/subj_models/nomenclature_variety.rb +29 -0
- data/lib/subj_models/office.rb +33 -0
- data/lib/subj_models/office_contact.rb +45 -0
- data/lib/subj_models/order.rb +77 -0
- data/lib/subj_models/order_delivery_courier.rb +31 -0
- data/lib/subj_models/order_delivery_nova_poshta_warhouse.rb +17 -0
- data/lib/subj_models/order_delivery_pickup.rb +28 -0
- data/lib/subj_models/order_delivery_privatbank.rb +30 -0
- data/lib/subj_models/order_delivery_subj_courier.rb +24 -0
- data/lib/subj_models/order_item.rb +55 -0
- data/lib/subj_models/quality.rb +21 -0
- data/lib/subj_models/specialist_activity.rb +33 -0
- data/lib/subj_models/specialist_activity_document_type.rb +29 -0
- data/lib/subj_models/template.rb +2 -0
- data/lib/subj_models/user.rb +10 -9
- data/lib/subj_models/user_card.rb +29 -0
- data/lib/subj_models/user_delivery_address.rb +34 -0
- data/lib/subj_models/user_specialization.rb +24 -0
- data/lib/subj_models/user_work_place.rb +29 -0
- data/lib/subj_models/version.rb +1 -1
- data/lib/subj_models.rb +31 -0
- metadata +33 -2
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module Office
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    belongs_to :city
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    has_many :event_schedules
         | 
| 16 | 
            +
                    has_many :order_delivery_pickups
         | 
| 17 | 
            +
                    has_many :office_contacts, dependent: :destroy
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    validates :name, :address, :lat, :lng, presence: true
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    scope :main, -> { where(is_main:  true ) }
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def to_s
         | 
| 28 | 
            +
                  name
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            end
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
            require 'subj_models/services/values_checker'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module SubjModels
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              module OfficeContact
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                include SubjModels::TypesSupport::ContactTypes
         | 
| 9 | 
            +
                include SubjModels::ValuesChecker
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def self.included(including_class)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  including_class.class_eval do
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    enum contact_type: CONTACT_TYPES
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    belongs_to :office
         | 
| 20 | 
            +
                    belongs_to :manager
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    validates :contact_type, inclusion: { in: contact_types.keys }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                    scope :is_phone, -> { where(contact_type: PHONE) }
         | 
| 25 | 
            +
                    scope :is_skype, -> { where(contact_type: SKYPE) }
         | 
| 26 | 
            +
                    scope :is_address, -> { where(contact_type: ADDRESS) }
         | 
| 27 | 
            +
                    scope :is_email, -> { where(contact_type: EMAIL) }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    scope :office_id, -> (office_id) { parent_id_scope("office", office_id) }
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def to_s
         | 
| 36 | 
            +
                  id.to_s # TODO
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                def contact_type=(value)
         | 
| 40 | 
            +
                  super(check_string_for_int(value))
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            end
         | 
| @@ -0,0 +1,77 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
            require 'subj_models/services/values_checker'
         | 
| 3 | 
            +
            require 'subj_models/services/types_support'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module SubjModels
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              module Order
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                include SubjModels::TypesSupport::OrderStatuses
         | 
| 10 | 
            +
                include SubjModels::TypesSupport::DeliveryTypes
         | 
| 11 | 
            +
                include SubjModels::TypesSupport::PaymentTypes
         | 
| 12 | 
            +
                include SubjModels::ValuesChecker
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                def self.included(including_class)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  including_class.class_eval do
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    before_create :generate_number
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    enum order_status: ORDER_STATUSES
         | 
| 23 | 
            +
                    enum delivery_type: DELIVERY_TYPES
         | 
| 24 | 
            +
                    enum payment_type: PAYMENT_TYPES
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    belongs_to :user
         | 
| 27 | 
            +
                    belongs_to :user_delivery_address
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    has_one :order_delivery_courier
         | 
| 30 | 
            +
                    has_one :order_delivery_pickup
         | 
| 31 | 
            +
                    has_one :order_delivery_privatbank
         | 
| 32 | 
            +
                    has_one :order_delivery_subj_courier
         | 
| 33 | 
            +
                    has_one :order_delivery_nova_poshta_warhouse
         | 
| 34 | 
            +
                    has_many :order_items, dependent: :destroy
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    validates :order_status, inclusion: { in: order_statuses.keys }, on: :update
         | 
| 37 | 
            +
                    validates :delivery_type, inclusion: { in: delivery_types.keys }, on: :update
         | 
| 38 | 
            +
                    validates :payment_type, inclusion: { in: payment_types.keys }, on: :update
         | 
| 39 | 
            +
                    validates :total_amount, :order_date, presence: true, on: :update
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    scope :user_id, ->  user  { where(user_id: user) }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    scope :last_order, -> (user_id) do
         | 
| 44 | 
            +
                      Order.joins(:user).where("users.id" => user_id).last
         | 
| 45 | 
            +
                    end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                def to_s
         | 
| 52 | 
            +
                  id.to_s # TODO
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                def order_status=(value)
         | 
| 56 | 
            +
                  super(check_string_for_int(value))
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                def delivery_type=(value)
         | 
| 60 | 
            +
                  super(check_string_for_int(value))
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                def payment_type=(value)
         | 
| 64 | 
            +
                  super(check_string_for_int(value))
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                private
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                def generate_number
         | 
| 70 | 
            +
                  begin
         | 
| 71 | 
            +
                    self.order_number = "#{Time.now.strftime('%m')}-#{Time.now.strftime('%S%L')}#{rand(100..999)}"
         | 
| 72 | 
            +
                  end while self.class.exists?(order_number: order_number)
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            end
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module OrderDeliveryCourier
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    belongs_to :order
         | 
| 14 | 
            +
                    belongs_to :city
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    validates :user_first_name, :user_last_name, :delivery_address, :street_name,
         | 
| 17 | 
            +
                              :house_number, :delivery_time,  presence: true
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    scope :order_id, -> (order_id) { parent_id_scope("order", order_id) }
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def to_s
         | 
| 26 | 
            +
                  id.to_s # TODO
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module OrderDeliveryPickup
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    belongs_to :order
         | 
| 14 | 
            +
                    belongs_to :office
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    scope :order_id, -> (order_id) { parent_id_scope("order", order_id) }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def to_s
         | 
| 23 | 
            +
                  id.to_s # TODO
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module OrderDeliveryPrivatbank
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    belongs_to :order
         | 
| 14 | 
            +
                    belongs_to :city
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    validates :privat_bank_address, presence: true
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    scope :order_id, -> (order_id) { parent_id_scope("order", order_id) }
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def to_s
         | 
| 25 | 
            +
                  id.to_s # TODO
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            module SubjModels
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              module OrderDeliverySubjCourier
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def self.included(including_class)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                  including_class.class_eval do
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    belongs_to :order
         | 
| 10 | 
            +
                    belongs_to :city
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    scope :order_id, -> (order_id) { parent_id_scope("order", order_id) }
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def to_s
         | 
| 19 | 
            +
                  id.to_s # TODO
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
            require 'subj_models/services/values_checker'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module SubjModels
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              module OrderItem
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                include SubjModels::TypesSupport::ItemTypes
         | 
| 9 | 
            +
                include SubjModels::ValuesChecker
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def self.included(including_class)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  including_class.class_eval do
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    before_destroy :update_nomenclature_popularity
         | 
| 18 | 
            +
                    after_create :update_nomenclature_popularity
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    enum item_type: ITEM_TYPES
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    belongs_to :order
         | 
| 23 | 
            +
                    belongs_to :event_schedule
         | 
| 24 | 
            +
                    belongs_to :nomenclature_variety
         | 
| 25 | 
            +
                    belongs_to :nomenclature
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    validates :item_type, presence: true, inclusion: { in: item_types.keys }
         | 
| 28 | 
            +
                    validates :item_price, :item_count, presence: true
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    scope :order_id, -> (order_id) { parent_id_scope("order", order_id) }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def to_s
         | 
| 37 | 
            +
                  id.to_s # TODO
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def item_type=(value)
         | 
| 41 | 
            +
                  super(check_string_for_int(value))
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                private
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                def update_nomenclature_popularity
         | 
| 47 | 
            +
                  current_popularity = (nomenclature.popularity && nomenclature.popularity > 0) ? nomenclature.popularity : 0
         | 
| 48 | 
            +
                  method = transaction_include_any_action?([:create]) ? :+ : :-
         | 
| 49 | 
            +
                  new_popularity = current_popularity.send(method, self.item_count)
         | 
| 50 | 
            +
                  nomenclature.update(popularity: new_popularity)
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module Quality
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    has_many :nomenclature_prices
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module SpecialistActivity
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    has_many :specialist_activity_document_types, dependent: :destroy
         | 
| 14 | 
            +
                    has_many :user_specialization_approvals, dependent: :destroy
         | 
| 15 | 
            +
                    has_many :nomenclatures
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    belongs_to :document_file
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    validates :name, presence: true
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    scope :unavailable_for_current_user, -> ids { where.not(id: ids) }
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def to_s
         | 
| 28 | 
            +
                  name
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            end
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module SpecialistActivityDocumentType
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    belongs_to :specialist_activity
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    validates :name, presence: true
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    scope :specialist_activity_id, -> (specialist_activity_id) { parent_id_scope("specialist_activity", specialist_activity_id) }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def to_s
         | 
| 24 | 
            +
                  name
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            end
         | 
    
        data/lib/subj_models/template.rb
    CHANGED
    
    
    
        data/lib/subj_models/user.rb
    CHANGED
    
    | @@ -29,17 +29,17 @@ module SubjModels | |
| 29 29 | 
             
                    enum user_type: USER_TYPES
         | 
| 30 30 | 
             
                    enum card_receive_type: CARD_RECEIVE_TYPES
         | 
| 31 31 |  | 
| 32 | 
            -
                     | 
| 33 | 
            -
                     | 
| 34 | 
            -
                     | 
| 35 | 
            -
                     | 
| 36 | 
            -
                     | 
| 32 | 
            +
                    has_many :orders
         | 
| 33 | 
            +
                    has_many :user_specialization_approvals, dependent: :destroy
         | 
| 34 | 
            +
                    has_many :user_cards, dependent: :destroy
         | 
| 35 | 
            +
                    has_one  :user_work_place, dependent: :destroy
         | 
| 36 | 
            +
                    has_many :user_delivery_addresses, dependent: :destroy
         | 
| 37 37 |  | 
| 38 | 
            -
                     | 
| 38 | 
            +
                    has_and_belongs_to_many :user_specializations
         | 
| 39 39 |  | 
| 40 | 
            -
                     | 
| 41 | 
            -
                     | 
| 42 | 
            -
                     | 
| 40 | 
            +
                    belongs_to :document_file
         | 
| 41 | 
            +
                    belongs_to :city
         | 
| 42 | 
            +
                    belongs_to :avatar, class_name: "DocumentFile"
         | 
| 43 43 |  | 
| 44 44 | 
             
                    validates :first_name, :last_name, presence: true,
         | 
| 45 45 | 
             
                              on: :update,
         | 
| @@ -101,6 +101,7 @@ module SubjModels | |
| 101 101 | 
             
                end
         | 
| 102 102 |  | 
| 103 103 | 
             
                def available_nomenclature_ids
         | 
| 104 | 
            +
                  binding.pry
         | 
| 104 105 | 
             
                  Nomenclature.joins(access_groups: [user_specializations: :users]).where("users.id" => self.id).uniq.pluck(:id)
         | 
| 105 106 | 
             
                end
         | 
| 106 107 |  | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module UserCard
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    belongs_to :user
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    validates :first_digits, :last_digits, :expire_number, :expire_year, presence: true
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    scope :user_id, -> (user_id) { parent_id_scope("user", user_id) }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def to_s
         | 
| 24 | 
            +
                  id.to_s # TODO
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            end
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module UserDeliveryAddress
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    belongs_to :user
         | 
| 14 | 
            +
                    belongs_to :city
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    has_many :orders
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    validates :street_name, :house_number, :city, presence: true, unless: :skip_validations
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    attr_accessor :skip_validations
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    scope :user_id, -> (user_id) { parent_id_scope("user", user_id) }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def to_s
         | 
| 27 | 
            +
                    id.to_s # TODO
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module UserSpecialization
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    has_and_belongs_to_many :users
         | 
| 14 | 
            +
                    has_and_belongs_to_many :access_groups
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    scope :user_id, -> (user_id) { parent_id_scope("user", user_id) }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            require 'subj_models/concerns/comprising_external_id'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SubjModels
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              module UserWorkPlace
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.included(including_class)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  including_class.class_eval do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    include SubjModels::ComprisingExternalId
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    belongs_to :user
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    validates :work_place_name, presence: true
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    scope :user_id, -> (user_id) { parent_id_scope("user", user_id) }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def to_s
         | 
| 24 | 
            +
                  work_place_name
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            end
         | 
    
        data/lib/subj_models/version.rb
    CHANGED
    
    
    
        data/lib/subj_models.rb
    CHANGED
    
    | @@ -11,6 +11,37 @@ require 'subj_models/user_specialization_approval' | |
| 11 11 | 
             
            require 'subj_models/video'
         | 
| 12 12 | 
             
            require 'subj_models/nomenclature_file'
         | 
| 13 13 | 
             
            require 'subj_models/nomenclature_photo'
         | 
| 14 | 
            +
            require 'subj_models/nomenclature2'
         | 
| 15 | 
            +
            require 'subj_models/content_block'
         | 
| 16 | 
            +
            require 'subj_models/city'
         | 
| 17 | 
            +
            require 'subj_models/office'
         | 
| 18 | 
            +
            require 'subj_models/order_item'
         | 
| 19 | 
            +
            require 'subj_models/attribute_value'
         | 
| 20 | 
            +
            require 'subj_models/nomenclature_price'
         | 
| 21 | 
            +
            require 'subj_models/order'
         | 
| 22 | 
            +
            require 'subj_models/user_card'
         | 
| 23 | 
            +
            require 'subj_models/user_work_place'
         | 
| 24 | 
            +
            require 'subj_models/user_delivery_address'
         | 
| 25 | 
            +
            require 'subj_models/user_specialization'
         | 
| 26 | 
            +
            require 'subj_models/nomenclature_variety'
         | 
| 27 | 
            +
            require 'subj_models/access_group'
         | 
| 28 | 
            +
            require 'subj_models/specialist_activity'
         | 
| 29 | 
            +
            require 'subj_models/specialist_activity_document_type'
         | 
| 30 | 
            +
            require 'subj_models/nomenclature_attribute'
         | 
| 31 | 
            +
            require 'subj_models/category'
         | 
| 32 | 
            +
            require 'subj_models/nomenclature_review'
         | 
| 33 | 
            +
            require 'subj_models/action'
         | 
| 34 | 
            +
            require 'subj_models/event_type'
         | 
| 35 | 
            +
            require 'subj_models/office_contact'
         | 
| 36 | 
            +
            require 'subj_models/order_delivery_courier'
         | 
| 37 | 
            +
            require 'subj_models/order_delivery_nova_poshta_warhouse'
         | 
| 38 | 
            +
            require 'subj_models/order_delivery_pickup'
         | 
| 39 | 
            +
            require 'subj_models/order_delivery_privatbank'
         | 
| 40 | 
            +
            require 'subj_models/order_delivery_subj_courier'
         | 
| 41 | 
            +
            require 'subj_models/quality'
         | 
| 42 | 
            +
            require 'subj_models/nomenclature_access_group'
         | 
| 43 | 
            +
            require 'subj_models/faq'
         | 
| 44 | 
            +
            require 'subj_models/global_notification'
         | 
| 14 45 |  | 
| 15 46 | 
             
            module SubjModels
         | 
| 16 47 |  |