ecom_core 1.3.8 → 1.3.13

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
  SHA256:
3
- metadata.gz: 94e3027df94f50f9f3c06ccd90f7db0656503d24548f9ba4f13a5e08f64d4bfa
4
- data.tar.gz: f322acc0c157ceb5b7e2e39a80bde80cf8b94c6fb6cee08fb3fedf60b918e01d
3
+ metadata.gz: ca77271970adb2814972aed13aa5e7b5e0c04040179bf594b0e6c858a2fff74b
4
+ data.tar.gz: e67ec2ed2362fd9df15c6ac38edf698b5e09b0f5251b2ab37926ca1c1b8080e6
5
5
  SHA512:
6
- metadata.gz: 6c722a056f2070704bac09ffc3fe964d38216de5d172609898697a25f6be90f98a280dbaa53a80d29c7457d81318849b8b05dbc997425c9addd169fa48b9b6b2
7
- data.tar.gz: 44603efa47b064f655e000080a954df972ddc3125389b143343f95f3c9127588130b1de450978d39530b886a18ac37598072e7c3f946667cbb9bcd457852e662
6
+ metadata.gz: 6f62042c5aa8366ec5edd0a019f75cac5538eb79037dd142fa297bd0d3cb40dd7a37223b1baad87492b88ad0ecb11abe8c98a7e22cabe1521a21eb1b3008407f
7
+ data.tar.gz: 761979e88a1dd53ce7ae0c4723b266e9c5bbe6442b39d961d111b0e29887c4e1263a34fc821a9d049acd55b6fbe65846b1e6bd8802665a179d8eb999f00e04c2
@@ -7,6 +7,11 @@ module Ecom
7
7
  render json: User.all
8
8
  end
9
9
 
10
+ def lookup
11
+ data = ActiveModelSerializers::SerializableResource.new(User.all, each_serializer: UserLookupSerializer)
12
+ render json: { success: true, data: data }
13
+ end
14
+
10
15
  def active
11
16
  render json: User.active
12
17
  end
@@ -1,7 +1,6 @@
1
1
  module Ecom
2
2
  module Core
3
3
  class Crew < ApplicationRecord
4
- mount_base64_uploader :photo, PhotoUploader
5
4
  PERMANENT = 'Permanent'.freeze
6
5
  SUPERVISOR = 'Supervisor'.freeze
7
6
  TEMPORARY = 'Temporary'.freeze
@@ -13,6 +12,7 @@ module Ecom
13
12
  after_save :set_employee_id
14
13
 
15
14
  belongs_to :crew_type
15
+ has_one_attached :photo
16
16
 
17
17
  validates :name, :address, :qualification, :employment, :wage, :guarantor_name, :guarantor_phone, presence: true
18
18
  validates :employment, inclusion: EMPLOYMENT_TYPES
@@ -14,6 +14,9 @@ module Ecom
14
14
 
15
15
  validates :title, :status, presence: true
16
16
  validates :status, inclusion: STATUSES
17
+
18
+ scope :approved, -> { where(approved: true) }
19
+ scope :unapproved, -> { where(approved: false) }
17
20
  end
18
21
  end
19
22
  end
@@ -1,6 +1,11 @@
1
1
  module Ecom
2
2
  module Core
3
3
  class MaintenanceStatus < Lookup
4
+ EQUIPMENT_NOT_RECEIVED = 'Equipment not received'.freeze
5
+ RECEIVED_EQUIPMENT = 'Received equipment'.freeze
6
+ IN_PROGRESS = 'In progress'.freeze
7
+ WAITING_FOR_PARTS = 'Waiting for parts'.freeze
8
+ MAINTENANCE_COMPLETED = 'Maintenance completed'.freeze
4
9
  end
5
10
  end
6
11
  end
@@ -13,8 +13,8 @@ module Ecom
13
13
  validates :crew_id, :crew, :site_id, :site, :start_date, :site_crew_type, :status, presence: true
14
14
 
15
15
  validates_uniqueness_of :site_id,
16
- scope: :crew_id,
17
- if: -> { status == 'Active' },
16
+ scope: %i[crew_id status],
17
+ if: :active_site_crew_exists?,
18
18
  message: 'There can only be one record with status `Active` for a given site and crew'
19
19
 
20
20
  validates :site_crew_type, inclusion: SITE_CREW_TYPES
@@ -22,6 +22,14 @@ module Ecom
22
22
 
23
23
  belongs_to :crew
24
24
  belongs_to :site
25
+
26
+ def active_site_crew_exists?
27
+ active_site_crew = Ecom::Core::SiteCrew.where(site_id: site_id, crew_id: crew_id, status: ACTIVE)
28
+
29
+ return true if !active_site_crew.count.zero? && status == ACTIVE
30
+
31
+ false
32
+ end
25
33
  end
26
34
  end
27
35
  end
@@ -1,9 +1,8 @@
1
1
  module Ecom
2
2
  module Core
3
3
  class TaskAttachment < ApplicationRecord
4
- mount_base64_uploader :file, TaskAttachmentUploader
5
-
6
4
  belongs_to :task
5
+ has_one_attached :file
7
6
 
8
7
  validates :title, presence: true
9
8
  end
@@ -14,6 +14,7 @@ module Ecom
14
14
 
15
15
  validates :status, presence: true, inclusion: STATUSES
16
16
 
17
+ belongs_to :work_package
17
18
  belongs_to :assigned_to, class_name: 'Ecom::Core::Crew'
18
19
  belongs_to :generated_by, class_name: 'Ecom::Core::User'
19
20
  has_many :tasks
@@ -10,6 +10,7 @@ module Ecom
10
10
  validates :budget, numericality: true, unless: proc { budget.nil? }
11
11
 
12
12
  has_many :tasks
13
+ has_many :work_orders
13
14
  end
14
15
  end
15
16
  end
@@ -0,0 +1,11 @@
1
+ module Ecom
2
+ module Core
3
+ class UserLookupSerializer < ActiveModel::Serializer
4
+ attributes :id, :name
5
+
6
+ def name
7
+ "#{object.first_name} #{object.last_name}"
8
+ end
9
+ end
10
+ end
11
+ end
data/config/routes.rb CHANGED
@@ -6,6 +6,7 @@ Ecom::Core::Engine.routes.draw do
6
6
  resources :menus, only: %i[index]
7
7
  resources :users, only: %i[index create update]
8
8
  get '/users/active', controller: :users, action: :active
9
+ get '/users/lookup', controller: :users, action: :lookup
9
10
 
10
11
 
11
12
  resources :crew_types
@@ -3,6 +3,10 @@ class CreateEcomCoreWorkOrders < ActiveRecord::Migration[6.0]
3
3
  create_table :ecom_core_work_orders do |t|
4
4
  t.string :name
5
5
  t.string :reference_number
6
+ t.references :work_package,
7
+ null: false,
8
+ index: { name: 'wo_on_wp_indx' },
9
+ foreign_key: { to_table: :ecom_core_work_packages }
6
10
  t.references :assigned_to,
7
11
  null: false,
8
12
  index: { name: 'wo_on_at_indx' },
@@ -0,0 +1,6 @@
1
+ class RenamePhotoFields < ActiveRecord::Migration[6.1]
2
+ def change
3
+ rename_column :ecom_core_crews, :photo, :photo_url
4
+ rename_column :ecom_core_task_attachments, :file, :file_url
5
+ end
6
+ end
@@ -0,0 +1,36 @@
1
+ # This migration comes from active_storage (originally 20170806125915)
2
+ class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
3
+ def change
4
+ create_table :active_storage_blobs do |t|
5
+ t.string :key, null: false
6
+ t.string :filename, null: false
7
+ t.string :content_type
8
+ t.text :metadata
9
+ t.string :service_name, null: false
10
+ t.bigint :byte_size, null: false
11
+ t.string :checksum, null: false
12
+ t.datetime :created_at, null: false
13
+
14
+ t.index [ :key ], unique: true
15
+ end
16
+
17
+ create_table :active_storage_attachments do |t|
18
+ t.string :name, null: false
19
+ t.references :record, null: false, polymorphic: true, index: false
20
+ t.references :blob, null: false
21
+
22
+ t.datetime :created_at, null: false
23
+
24
+ t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
25
+ t.foreign_key :active_storage_blobs, column: :blob_id
26
+ end
27
+
28
+ create_table :active_storage_variant_records do |t|
29
+ t.belongs_to :blob, null: false, index: false
30
+ t.string :variation_digest, null: false
31
+
32
+ t.index %i[ blob_id variation_digest ], name: "index_active_storage_variant_records_uniqueness", unique: true
33
+ t.foreign_key :active_storage_blobs, column: :blob_id
34
+ end
35
+ end
36
+ end
@@ -1,5 +1,5 @@
1
1
  module Ecom
2
2
  module Core
3
- VERSION = '1.3.8'.freeze
3
+ VERSION = '1.3.13'.freeze
4
4
  end
5
5
  end
data/lib/ecom_core.rb CHANGED
@@ -3,5 +3,3 @@ require 'ecom/core/engine'
3
3
  require 'ancestry'
4
4
  require 'aasm'
5
5
  require 'active_model_serializers'
6
- require 'carrierwave'
7
- require 'carrierwave/base64'
@@ -10,7 +10,7 @@ FactoryBot.define do
10
10
  wage_in_words { FFaker::Name.name }
11
11
  employment_date { Date.today - 1 }
12
12
  sub_contracted { false }
13
- photo { FFaker::Name.name }
13
+ photo_url { FFaker::Name.name }
14
14
  guarantor_name { FFaker::Name.name }
15
15
  guarantor_phone { FFaker::Name.name }
16
16
  active { true }
@@ -2,7 +2,6 @@ FactoryBot.define do
2
2
  factory :task_attachment, class: Ecom::Core::TaskAttachment do
3
3
  title { FFaker::Name.name }
4
4
  description { FFaker::Name.name }
5
- file { FFaker::Name.name }
6
5
  association :task
7
6
  end
8
7
  end
@@ -1,6 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :work_order, class: Ecom::Core::WorkOrder do
3
3
  name { FFaker::Name.unique.name }
4
+ association :work_package
4
5
  association :assigned_to, factory: :crew
5
6
  association :generated_by, factory: :user
6
7
  start_date { (Time.now + 1.day).to_s }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecom_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.8
4
+ version: 1.3.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-02 00:00:00.000000000 Z
11
+ date: 2021-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -38,26 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.10.0
41
- - !ruby/object:Gem::Dependency
42
- name: after_commit_everywhere
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.1'
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 0.1.5
51
- type: :runtime
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - "~>"
56
- - !ruby/object:Gem::Version
57
- version: '0.1'
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 0.1.5
61
41
  - !ruby/object:Gem::Dependency
62
42
  name: ancestry
63
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,34 +66,6 @@ dependencies:
86
66
  - - ">="
87
67
  - !ruby/object:Gem::Version
88
68
  version: '0'
89
- - !ruby/object:Gem::Dependency
90
- name: carrierwave
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :runtime
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- - !ruby/object:Gem::Dependency
104
- name: carrierwave-base64
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :runtime
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
69
  - !ruby/object:Gem::Dependency
118
70
  name: jwt
119
71
  requirement: !ruby/object:Gem::Requirement
@@ -134,42 +86,14 @@ dependencies:
134
86
  requirements:
135
87
  - - "~>"
136
88
  - !ruby/object:Gem::Version
137
- version: 6.1.1
138
- type: :runtime
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: 6.1.1
145
- - !ruby/object:Gem::Dependency
146
- name: json-schema
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: '0'
152
- type: :runtime
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: '0'
159
- - !ruby/object:Gem::Dependency
160
- name: fog-google
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: 1.12.0
89
+ version: 6.1.3
166
90
  type: :runtime
167
91
  prerelease: false
168
92
  version_requirements: !ruby/object:Gem::Requirement
169
93
  requirements:
170
94
  - - "~>"
171
95
  - !ruby/object:Gem::Version
172
- version: 1.12.0
96
+ version: 6.1.3
173
97
  - !ruby/object:Gem::Dependency
174
98
  name: factory_bot_rails
175
99
  requirement: !ruby/object:Gem::Requirement
@@ -372,6 +296,7 @@ files:
372
296
  - app/serializers/ecom/core/lookup_serializer.rb
373
297
  - app/serializers/ecom/core/resource_type_serializer.rb
374
298
  - app/serializers/ecom/core/unit_cost_serializer.rb
299
+ - app/serializers/ecom/core/user_lookup_serializer.rb
375
300
  - app/serializers/ecom/core/user_role_serializer.rb
376
301
  - app/serializers/ecom/core/user_serializer.rb
377
302
  - app/services/ecom/core/crew_contract_transaction_service.rb
@@ -379,11 +304,8 @@ files:
379
304
  - app/services/ecom/core/menu_service.rb
380
305
  - app/services/ecom/core/site_crew_service.rb
381
306
  - app/services/ecom/core/token_auth_service.rb
382
- - app/uploaders/ecom/core/photo_uploader.rb
383
- - app/uploaders/ecom/core/task_attachment_uploader.rb
384
307
  - app/validators/ecom/core/date_range_validator.rb
385
308
  - config/database.ci.yml
386
- - config/initializers/carrierwave.rb
387
309
  - config/routes.rb
388
310
  - db/migrate/20190101085530_create_ecom_core_companies.rb
389
311
  - db/migrate/20190101112620_create_ecom_core_lookups.rb
@@ -462,6 +384,8 @@ files:
462
384
  - db/migrate/20201125191158_create_ecom_core_work_item_resource_requirement_templates.rb
463
385
  - db/migrate/20201126191334_create_ecom_core_resource_requisitions.rb
464
386
  - db/migrate/20201126191349_create_ecom_core_resource_requisition_items.rb
387
+ - db/migrate/20210417095657_rename_photo_fields.rb
388
+ - db/migrate/20210417120215_create_active_storage_tables.active_storage.rb
465
389
  - lib/ecom/core.rb
466
390
  - lib/ecom/core/engine.rb
467
391
  - lib/ecom/core/version.rb
@@ -572,7 +496,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
572
496
  - !ruby/object:Gem::Version
573
497
  version: '0'
574
498
  requirements: []
575
- rubygems_version: 3.1.4
499
+ rubygems_version: 3.2.15
576
500
  signing_key:
577
501
  specification_version: 4
578
502
  summary: Core engine for construction management application.
@@ -1,30 +0,0 @@
1
- module Ecom
2
- module Core
3
- class PhotoUploader < CarrierWave::Uploader::Base
4
- if Rails.env.production?
5
- storage :fog
6
- else
7
- storage :file
8
- end
9
-
10
- def store_dir
11
- "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
12
- end
13
-
14
- def extension_whitelist
15
- %w[jpg jpeg gif png]
16
- end
17
-
18
- def filename
19
- "#{secure_token}.#{file.extension}" if original_filename.present?
20
- end
21
-
22
- protected
23
-
24
- def secure_token
25
- var = :"@#{mounted_as}_secure_token"
26
- model.instance_variable_get(var) || model.instance_variable_set(var, SecureRandom.uuid)
27
- end
28
- end
29
- end
30
- end
@@ -1,11 +0,0 @@
1
- module Ecom
2
- module Core
3
- class TaskAttachmentUploader < CarrierWave::Uploader::Base
4
- storage :file
5
-
6
- def store_dir
7
- "#{ENV.fetch('UPLOAD_PREFIX')}uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
8
- end
9
- end
10
- end
11
- end
@@ -1,8 +0,0 @@
1
- CarrierWave.configure do |config|
2
- config.fog_credentials = {
3
- provider: 'Google',
4
- google_storage_access_key_id: ENV["GOOGLE_STORAGE_ACCESS_KEY"],
5
- google_storage_secret_access_key: ENV["GOOGLE_STORAGE_SECRETE_KEY"]
6
- }
7
- config.fog_directory = ENV["GOOGLE_STORAGE_BUCKET_NAME"]
8
- end