subj_models 0.1.03 → 0.1.04

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c9c6e36400b6b5c435283714589c69913e081705
4
- data.tar.gz: d8ee2a2d4056b0611210fc322f90fd2628121791
3
+ metadata.gz: 6765247548ac23e7be393451439a03b56a857825
4
+ data.tar.gz: bddc812ec6f1b1811c367a535f87cf38256dd36d
5
5
  SHA512:
6
- metadata.gz: 75a6f5491d8b2e4bfb72042473eec66d6694e056931e457ee9c3302bdf0d99edeaf290c39368646062921963ed9c9f690e7c86579ebe781573ad5b1d4a75730d
7
- data.tar.gz: 9083d0587d1c80bff1f3f899c62b4c386431db60e305cc90de1a79f56b20f8d7597d9e6479033aba53e6264b84961ded511c5f2ca4045aedc0dc7611a2d69a82
6
+ metadata.gz: ad866aa40debc766de5c9b025af568c25c98d07f23c62d17e630eb576e0562c8ce00c323a5f46d53560ef6aca3f97b644888f87abf5c00d52fef57584b90f941
7
+ data.tar.gz: d598b3ac3496b583a221c6412f8bce5fa5b2c03a43491e3d1ad60fddeda4eb2fa9c7301d511df5f6c7afb628c5c2ec8f0a44f64ccd01f832cf4f3cd6fc190a0c
data/lib/subj_models.rb CHANGED
@@ -1,8 +1,7 @@
1
1
  require "subj_models/version"
2
2
  require 'subj_models/measure_unit'
3
+ require 'subj_models/user'
3
4
 
4
5
  module SubjModels
5
6
 
6
-
7
-
8
7
  end
@@ -0,0 +1,99 @@
1
+ module SubjModels
2
+
3
+ module User
4
+
5
+ include ComprisingExternalId
6
+ include TypesSupport::UserTypes
7
+ include TypesSupport::CardReceiveTypes
8
+ include RademadeAdmin::UserModule
9
+ include SharedScopes
10
+ include ValuesChecker
11
+
12
+ enum user_type: USER_TYPES
13
+ enum card_receive_type: CARD_RECEIVE_TYPES
14
+
15
+ has_many :orders
16
+ has_many :user_specialization_approvals, dependent: :destroy
17
+ has_many :user_cards, dependent: :destroy
18
+ has_one :user_work_place, dependent: :destroy
19
+ has_many :user_delivery_addresses, dependent: :destroy
20
+
21
+ has_and_belongs_to_many :user_specializations
22
+
23
+ belongs_to :document_file
24
+ belongs_to :city
25
+ belongs_to :avatar, class_name: "DocumentFile"
26
+
27
+ validates :first_name, :last_name, presence: true,
28
+ on: :update,
29
+ unless: lambda { |user| user.legal_person? || user.skip_validations }
30
+ validates :email, uniqueness: { case_sensitive: false }, presence: true,
31
+ on: :update,
32
+ unless: :skip_validations
33
+ validates :phone, uniqueness: { case_sensitive: false }, presence: true,
34
+ on: :update,
35
+ unless: :skip_validations
36
+ validates :user_type, inclusion: { in: user_types.keys },
37
+ on: :update,
38
+ unless: :skip_validations
39
+
40
+
41
+ attr_accessor :skip_validations
42
+
43
+ scope :external_id, -> external_id do
44
+ external_id ? where(external_id: external_id) : User.none
45
+ end
46
+
47
+ def natural_person?
48
+ user_type == USER_TYPES.key(NATURAL_PERSON)
49
+ end
50
+
51
+ def legal_person?
52
+ user_type == USER_TYPES.key(LEGAL_PERSON)
53
+ end
54
+
55
+ def user_type=(value)
56
+ super(check_string_for_int(value))
57
+ end
58
+
59
+ def self.get_by_email(email)
60
+ self.where(:email => email).first
61
+ end
62
+
63
+ def password=(password)
64
+ self.encrypted_password = encrypt_password(password) unless password.blank?
65
+ end
66
+
67
+ def password
68
+ self.encrypted_password
69
+ end
70
+
71
+ def valid_password?(password)
72
+ self.encrypted_password == encrypt_password(password)
73
+ end
74
+
75
+ def to_s
76
+ email
77
+ end
78
+
79
+ def admin?
80
+ self.user_type == 'админ'
81
+ end
82
+
83
+ def available_nomenclature_ids
84
+ Nomenclature.joins(access_groups: [user_specializations: :users]).where("users.id" => self.id).uniq.pluck(:id)
85
+ end
86
+
87
+ def available_categories_ids
88
+ Category.joins(:nomenclatures).where("nomenclatures.id IN (?) OR nomenclatures.is_professional=FALSE", available_nomenclature_ids).uniq.pluck(:id)
89
+ end
90
+
91
+ private
92
+
93
+ def encrypt_password(password)
94
+ Digest::SHA1.hexdigest(password)
95
+ end
96
+
97
+ end
98
+
99
+ end
@@ -1,3 +1,3 @@
1
1
  module SubjModels
2
- VERSION = "0.1.03"
2
+ VERSION = "0.1.04"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: subj_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.03
4
+ version: 0.1.04
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denys Dvoriashyn
@@ -58,6 +58,7 @@ files:
58
58
  - bin/setup
59
59
  - lib/subj_models.rb
60
60
  - lib/subj_models/measure_unit.rb
61
+ - lib/subj_models/user.rb
61
62
  - lib/subj_models/version.rb
62
63
  - subj_models.gemspec
63
64
  - subj_models.iml