subj_models 0.1.03 → 0.1.04

Sign up to get free protection for your applications and to get access to all the features.
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