subj_sub_models 0.0.0 → 0.0.1

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.idea/modules.xml +1 -1
  4. data/.idea/workspace.xml +5 -5
  5. data/Gemfile +1 -1
  6. data/README.md +3 -3
  7. data/bin/console +1 -1
  8. data/lib/subj_models/access_group.rb +22 -0
  9. data/lib/subj_models/action_banner.rb +37 -0
  10. data/lib/subj_models/attribute_value.rb +32 -0
  11. data/lib/subj_models/brand.rb +74 -0
  12. data/lib/subj_models/brand_line.rb +51 -0
  13. data/lib/subj_models/category.rb +36 -0
  14. data/lib/subj_models/city.rb +31 -0
  15. data/lib/subj_models/concerns/comprising_external_id.rb +37 -0
  16. data/lib/subj_models/concerns/shared_scopes.rb +15 -0
  17. data/lib/subj_models/content_block.rb +28 -0
  18. data/lib/subj_models/document_file.rb +38 -0
  19. data/lib/subj_models/event.rb +79 -0
  20. data/lib/subj_models/event_booking.rb +39 -0
  21. data/lib/subj_models/event_schedule.rb +37 -0
  22. data/lib/subj_models/event_type.rb +27 -0
  23. data/lib/subj_models/faq.rb +46 -0
  24. data/lib/subj_models/global_notification.rb +16 -0
  25. data/lib/subj_models/manager.rb +31 -0
  26. data/lib/subj_models/measure_unit.rb +28 -0
  27. data/lib/subj_models/nomenclature.rb +166 -0
  28. data/lib/subj_models/nomenclature_access_group.rb +19 -0
  29. data/lib/subj_models/nomenclature_attribute.rb +27 -0
  30. data/lib/subj_models/nomenclature_file.rb +44 -0
  31. data/lib/subj_models/nomenclature_photo.rb +36 -0
  32. data/lib/subj_models/nomenclature_price.rb +39 -0
  33. data/lib/subj_models/nomenclature_review.rb +38 -0
  34. data/lib/subj_models/nomenclature_variety.rb +29 -0
  35. data/lib/subj_models/office.rb +40 -0
  36. data/lib/subj_models/office_contact.rb +41 -0
  37. data/lib/subj_models/order.rb +91 -0
  38. data/lib/subj_models/order_delivery_courier.rb +31 -0
  39. data/lib/subj_models/order_delivery_nova_poshta_warhouse.rb +20 -0
  40. data/lib/subj_models/order_delivery_pickup.rb +28 -0
  41. data/lib/subj_models/order_delivery_privatbank.rb +29 -0
  42. data/lib/subj_models/order_delivery_subj_courier.rb +25 -0
  43. data/lib/subj_models/order_item.rb +60 -0
  44. data/lib/subj_models/quality.rb +25 -0
  45. data/lib/subj_models/services/types_support.rb +122 -0
  46. data/lib/subj_models/services/values_checker.rb +11 -0
  47. data/lib/subj_models/specialist_activity.rb +33 -0
  48. data/lib/subj_models/specialist_activity_document_type.rb +29 -0
  49. data/lib/subj_models/template.rb +18 -0
  50. data/lib/subj_models/user.rb +131 -0
  51. data/lib/subj_models/user_card.rb +29 -0
  52. data/lib/subj_models/user_card_delivery.rb +29 -0
  53. data/lib/subj_models/user_delivery_address.rb +34 -0
  54. data/lib/subj_models/user_specialization.rb +38 -0
  55. data/lib/subj_models/user_specialization_approval.rb +33 -0
  56. data/lib/subj_models/user_work_place.rb +29 -0
  57. data/lib/subj_models/version.rb +3 -0
  58. data/lib/subj_models/video.rb +29 -0
  59. data/lib/subj_models.rb +49 -0
  60. data/subj_models.gemspec +33 -0
  61. data/subj_models.iml +9 -0
  62. metadata +56 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c40fcf4eaf12d344d9d98ecf25b36f03390e868
4
- data.tar.gz: b35e2d8f550f3064c1e16bf68e864b3f719fbe32
3
+ metadata.gz: 2ea8cddfadab4bbb7e5b2b7d2503453fd6d9254d
4
+ data.tar.gz: 89e29d038a91a18f4b821119e56dc952eae71db6
5
5
  SHA512:
6
- metadata.gz: a668306d0b731eed1754882b25e8ff75bf40a296987187415e9e79027072514f07ecf01c2f23830ecae1d73e5d9fba8765685de4e2a0ae59727545e5ec1893ab
7
- data.tar.gz: 64a8fa397fec051d18cb0f8c1a90d8e823a2d426c3a88dbb915c620801761de6e6db09b22098ac5974a719ecff68c6edbd168fa57693afb73b9dcf1bd6185c97
6
+ metadata.gz: 4b1f10492b0889c42293200ed6f2e836308c370c0e07ce86206d5c2026619d5b2ef435ee92defc8637f1cb432401d261f57c263119db941525286d2eaa739929
7
+ data.tar.gz: 26192b43ac16f52292ff2e53deb16234014086ace79361a29784666f877bba0260f5088cc5e49f94b3a5f1c8d08bcaa3a9a4245d659f88423ee48d1e7615f8a3
data/.gitignore CHANGED
@@ -7,5 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
- /lib/subj_sub_models/.DS_Store
10
+ /lib/subj_models/.DS_Store
11
11
  lib/.DS_Store
data/.idea/modules.xml CHANGED
@@ -2,7 +2,7 @@
2
2
  <project version="4">
3
3
  <component name="ProjectModuleManager">
4
4
  <modules>
5
- <module fileurl="file://$PROJECT_DIR$/subj_sub_models.iml" filepath="$PROJECT_DIR$/subj_sub_models.iml" />
5
+ <module fileurl="file://$PROJECT_DIR$/subj_models.iml" filepath="$PROJECT_DIR$/subj_models.iml" />
6
6
  </modules>
7
7
  </component>
8
8
  </project>
data/.idea/workspace.xml CHANGED
@@ -2,7 +2,7 @@
2
2
  <project version="4">
3
3
  <component name="ChangeListManager">
4
4
  <list default="true" id="df7164a7-6c43-42fd-8a2b-5000b47cabac" name="Default" comment="" />
5
- <ignored path="subj_sub_models.iws" />
5
+ <ignored path="subj_models.iws" />
6
6
  <ignored path=".idea/workspace.xml" />
7
7
  <ignored path="$PROJECT_DIR$/out/" />
8
8
  <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -17,7 +17,7 @@
17
17
  </component>
18
18
  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
19
19
  <component name="FavoritesManager">
20
- <favorites_list name="subj_sub_models" />
20
+ <favorites_list name="subj_models" />
21
21
  </component>
22
22
  <component name="GradleLocalSettings">
23
23
  <option name="externalProjectsViewState">
@@ -65,17 +65,17 @@
65
65
  <subPane>
66
66
  <PATH>
67
67
  <PATH_ELEMENT>
68
- <option name="myItemId" value="subj_sub_models" />
68
+ <option name="myItemId" value="subj_models" />
69
69
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
70
70
  </PATH_ELEMENT>
71
71
  </PATH>
72
72
  <PATH>
73
73
  <PATH_ELEMENT>
74
- <option name="myItemId" value="subj_sub_models" />
74
+ <option name="myItemId" value="subj_models" />
75
75
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
76
76
  </PATH_ELEMENT>
77
77
  <PATH_ELEMENT>
78
- <option name="myItemId" value="subj_sub_models" />
78
+ <option name="myItemId" value="subj_models" />
79
79
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
80
80
  </PATH_ELEMENT>
81
81
  </PATH>
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in subj_sub_models.gemspec
3
+ # Specify your gem's dependencies in subj_models.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # SubjSubModels
1
+ # SubjModels
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/subj_sub_models`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/subj_models`. To experiment with that code, run `bin/console` for an interactive prompt.
4
4
 
5
5
  TODO: Delete this and the text above, and describe your gem
6
6
 
@@ -32,5 +32,5 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
32
 
33
33
  ## Contributing
34
34
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/subj_sub_models.
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/subj_models.
36
36
 
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "bundler/setup"
4
- require "subj_sub_models"
4
+ require "subj_models"
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -0,0 +1,22 @@
1
+ require 'subj_models/concerns/comprising_external_id'
2
+
3
+ module SubjModels
4
+
5
+ module AccessGroupModule
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 :user_specializations
14
+ has_and_belongs_to_many :nomenclatures, through: :nomenclature_access_groups
15
+
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,37 @@
1
+ require 'subj_models/concerns/comprising_external_id'
2
+
3
+ module SubjModels
4
+
5
+ module ActionBannerModule
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 :cities
14
+ has_and_belongs_to_many :nomenclatures
15
+ has_and_belongs_to_many :brands
16
+ belongs_to :image, class_name: "DocumentFile"
17
+ belongs_to :categories_list_image, class_name: "DocumentFile"
18
+
19
+ validates :nomenclatures, presence: true
20
+ validates :name, presence: true
21
+ # validates :discount_percent,
22
+ # presence: true,
23
+ # numericality: {only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 100}
24
+
25
+ scope :to_show, -> condition { where(to_show: condition) }
26
+
27
+ end
28
+
29
+ end
30
+
31
+ def to_s
32
+ name
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,32 @@
1
+ require 'subj_models/concerns/comprising_external_id'
2
+
3
+ module SubjModels
4
+
5
+ module AttributeValueModule
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 :nomenclature_varieties
14
+
15
+ belongs_to :nomenclature
16
+ belongs_to :nomenclature_attribute
17
+
18
+ validates :nomenclature_value, :nomenclature_attribute, presence: true
19
+
20
+ scope :nomenclature_id, -> (nomenclature_id) { parent_id_scope("nomenclature", nomenclature_id) }
21
+
22
+ end
23
+
24
+ end
25
+
26
+ def to_s
27
+ nomenclature_value
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,74 @@
1
+ require 'subj_models/concerns/comprising_external_id'
2
+ require 'subj_models/concerns/shared_scopes'
3
+
4
+ module SubjModels
5
+
6
+ module BrandModule
7
+
8
+ def self.included(including_class)
9
+
10
+ including_class.class_eval do
11
+
12
+ include SubjModels::SharedScopes
13
+ include SubjModels::ComprisingExternalId
14
+
15
+ has_many :brand_lines, dependent: :destroy
16
+ has_many :nomenclatures
17
+ has_many :videos
18
+ has_many :events
19
+
20
+ has_and_belongs_to_many :users
21
+ has_and_belongs_to_many :action_banners
22
+
23
+ belongs_to :content_block1, class_name: "ContentBlock"
24
+ belongs_to :content_block2, class_name: "ContentBlock"
25
+ belongs_to :content_block3, class_name: "ContentBlock"
26
+ belongs_to :document_file
27
+
28
+ before_validation :set_first_letter, if: :name_changed?
29
+
30
+ validates :name, presence: true
31
+
32
+ scope :in_index_list, -> condition { where(show_on_index: condition) }
33
+ scope :in_recommended_list, -> condition { where(is_recommended: condition) }
34
+
35
+ scope :category_id, -> (category_id) do
36
+ return all if category_id.blank?
37
+ joins(brand_lines: [{ nomenclatures: :category}]).where('categories.id' => category_id)
38
+ end
39
+
40
+ scope :by_first_letters, -> (by_first_letters) do
41
+ unless by_first_letters.blank?
42
+ where(first_letter: by_first_letters)
43
+ end
44
+ end
45
+
46
+ scope :has_events, -> do
47
+ joins(events: :event_schedule).where('event_schedules.event_date >= ?', DateTime.now.beginning_of_day).uniq
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ def to_s
55
+ name
56
+ end
57
+
58
+ private
59
+
60
+ def self.searchable_fields
61
+ [:name, :hidden_name]
62
+ end
63
+
64
+ def order_params
65
+ [ :order_by_name, :order_by_popularity ]
66
+ end
67
+
68
+ def set_first_letter
69
+ self.first_letter = name[0].downcase
70
+ end
71
+
72
+ end
73
+
74
+ end
@@ -0,0 +1,51 @@
1
+ require 'subj_models/concerns/comprising_external_id'
2
+ require 'subj_models/concerns/shared_scopes'
3
+
4
+ module SubjModels
5
+
6
+ module BrandLineModule
7
+
8
+ def self.included(including_class)
9
+
10
+ including_class.class_eval do
11
+
12
+ include SubjModels::SharedScopes
13
+ include SubjModels::ComprisingExternalId
14
+
15
+ belongs_to :brand
16
+ belongs_to :document_file
17
+
18
+ has_many :nomenclatures
19
+
20
+ validates :name, presence: true
21
+
22
+ scope :brand_id, -> (brand) do
23
+ return all unless brand.present?
24
+ parent_id_scope("brand", brand)
25
+ end
26
+
27
+ scope :to_show, -> () { where(show_on_index: true) }
28
+ scope :is_recommended, -> (condition) { where(is_recommended: condition) }
29
+
30
+ scope :category_id, -> (category) do
31
+ return all unless category.present?
32
+ joins(:brand, nomenclatures: :category).where('categories.id' => category)
33
+ end
34
+
35
+ scope :brand_ids, -> (brand_ids_string) do
36
+ unless brand_ids_string.blank?
37
+ joins(:brand).where('brands.id' => brand_ids_string.split(','))
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ end
44
+
45
+ def to_s
46
+ name
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,36 @@
1
+ require 'subj_models/concerns/comprising_external_id'
2
+
3
+ module SubjModels
4
+
5
+ module CategoryModule
6
+
7
+ def self.included(including_class)
8
+
9
+ including_class.class_eval do
10
+
11
+ include SubjModels::ComprisingExternalId
12
+
13
+ has_many :nomenclatures
14
+
15
+ belongs_to :image, class_name: "DocumentFile"
16
+ belongs_to :image_big, class_name: "DocumentFile"
17
+
18
+ validates :name, presence: true
19
+ #validates :slug_url, length: { minimum: 4, maximum: 50 }, uniqueness: true, presence: true
20
+
21
+ scope :by_slug_url, -> slug_url { where(slug_url: slug_url) }
22
+ scope :is_public, -> condition { where(is_public: condition) }
23
+ scope :by_id, -> ids { where(id: ids) }
24
+ scope :exclude_by_id, -> ids { where.not(id: ids) }
25
+
26
+ end
27
+
28
+ end
29
+
30
+ def to_s
31
+ name
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,31 @@
1
+ require 'subj_models/concerns/comprising_external_id'
2
+
3
+ module SubjModels
4
+
5
+ module CityModule
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 :action_banners
14
+ has_many :offices
15
+ has_many :users
16
+
17
+ validates :name, presence: true, uniqueness: true
18
+
19
+ scope :with_office, -> { joins(:offices).where("offices.id IS NOT NULL").group(:id) }
20
+
21
+ end
22
+
23
+ end
24
+
25
+ def to_s
26
+ name
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,37 @@
1
+ module SubjModels
2
+
3
+ module ComprisingExternalId
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ validates :external_id, uniqueness: true, allow_nil: true, allow_blank: true
9
+ scope :external_id, -> id { where(external_id: id) }
10
+ end
11
+
12
+ module ClassMethods
13
+ def find_by_external_or_internal_id(id)
14
+ if is_integer?(id)
15
+ self.find(id)
16
+ else
17
+ self.find_by!(external_id: id)
18
+ end
19
+ end
20
+
21
+ def is_integer?(value)
22
+ return true if value.is_a?(Integer)
23
+ value.to_i.to_s == value
24
+ end
25
+
26
+ def parent_id_scope(parent, id)
27
+ if id.is_a?(Array) || is_integer?(id)
28
+ joins(parent.to_sym).where("#{parent.pluralize}.id = ?", id)
29
+ else
30
+ joins(parent.to_sym).where("#{parent.pluralize}.external_id = ?", id)
31
+ end
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,15 @@
1
+ module SubjModels
2
+
3
+ module SharedScopes
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ scope :with_photos, -> {
9
+ joins(:document_file).where{{:document_file => {file_data.not_eq => nil}}}
10
+ }
11
+ end
12
+
13
+ end
14
+
15
+ end