ecom_core 1.3.8 → 1.3.13

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
  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