ecom_core 1.1.4 → 1.1.9
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 +4 -4
- data/app/controllers/concerns/ecom/core/resource_typeable.rb +3 -3
- data/app/controllers/ecom/core/application_modules_controller.rb +3 -3
- data/app/controllers/ecom/core/user_roles_controller.rb +3 -3
- data/app/controllers/ecom/core/users_controller.rb +4 -4
- data/app/models/ecom/core/attendance_sheet.rb +58 -0
- data/app/models/ecom/core/attendance_sheet_entry.rb +8 -0
- data/app/models/ecom/core/crew.rb +0 -1
- data/app/models/ecom/core/crew_time.rb +7 -7
- data/app/serializers/ecom/core/application_module_serializer.rb +2 -2
- data/app/serializers/ecom/core/lookup_serializer.rb +2 -2
- data/app/serializers/ecom/core/resource_type_serializer.rb +2 -2
- data/app/serializers/ecom/core/user_role_serializer.rb +2 -2
- data/app/serializers/ecom/core/user_serializer.rb +2 -2
- data/db/data/20200401064242_move_date_to_attendance_sheet.rb +20 -0
- data/db/migrate/20200401040433_create_ecom_core_attendance_sheets.rb +13 -0
- data/db/migrate/20200401071343_remove_date_column_from_crew_times.rb +5 -0
- data/db/migrate/20200401122539_create_ecom_core_attendance_sheet_entries.rb +14 -0
- data/db/migrate/20200401142959_relate_crew_time_with_attendance_sheet_entry.rb +8 -0
- data/db/migrate/20200401144137_remove_crew_time_id_from_crew.rb +7 -0
- data/lib/ecom/core/version.rb +1 -1
- data/lib/ecom_core.rb +2 -1
- data/spec/factories/ecom/core/attendance_sheet_entries.rb +7 -0
- data/spec/factories/ecom/core/attendance_sheets.rb +9 -0
- data/spec/factories/ecom/core/crew_times.rb +1 -2
- metadata +22 -13
- data/app/serializers/ecom/core/application_serializer.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8709c2c3e2b254d5f9ad43731d7b8211dbec9c1c575540b9e5467cc572253574
|
4
|
+
data.tar.gz: 277e6297a78b839ba8d182d53e121e1226e958656e1672eb0033e686efc8d72e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 160eb086e465388d14de00a33449fc7bfdb335cc69a90dbcb3cd4689f09143dde9e2db67548087e2baeecd46cf97184395c5aab35a1625f34185ed3d472a9cde
|
7
|
+
data.tar.gz: dacf08a193c3eb2a8106b555653183e48ce8b7bf25273040c7d740f9c292ade85e3abb7a09e18e18580d7b6069285cfcec75df9ae6d1ffdac9035da3b9be7ada
|
@@ -8,13 +8,13 @@ module Ecom
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def index
|
11
|
-
render json:
|
11
|
+
render json: @clazz.all
|
12
12
|
end
|
13
13
|
|
14
14
|
def create
|
15
15
|
resource_type = @clazz.new(resource_type_params)
|
16
16
|
if resource_type.save
|
17
|
-
render json:
|
17
|
+
render json: resource_type, status: :created
|
18
18
|
else
|
19
19
|
render json: { success: false, errors: resource_type.errors }, status: :unprocessable_entity
|
20
20
|
end
|
@@ -23,7 +23,7 @@ module Ecom
|
|
23
23
|
def update
|
24
24
|
resource_type = @clazz.find(params[:id])
|
25
25
|
if resource_type.update(resource_type_params)
|
26
|
-
render json:
|
26
|
+
render json: resource_type
|
27
27
|
else
|
28
28
|
render json: { success: false, errors: resource_type.errors }, status: :unprocessable_entity
|
29
29
|
end
|
@@ -2,13 +2,13 @@ module Ecom
|
|
2
2
|
module Core
|
3
3
|
class ApplicationModulesController < ApplicationController
|
4
4
|
def index
|
5
|
-
render json:
|
5
|
+
render json: ApplicationModule.all
|
6
6
|
end
|
7
7
|
|
8
8
|
def create
|
9
9
|
application_module = ApplicationModule.new(application_module_params)
|
10
10
|
if application_module.save
|
11
|
-
render json:
|
11
|
+
render json: application_module, status: :created
|
12
12
|
else
|
13
13
|
render json: { success: false, errors: application_module.errors }, status: :unprocessable_entity
|
14
14
|
end
|
@@ -17,7 +17,7 @@ module Ecom
|
|
17
17
|
def update
|
18
18
|
application_module = ApplicationModule.find(params[:id])
|
19
19
|
if application_module.update(application_module_params)
|
20
|
-
render json:
|
20
|
+
render json: application_module
|
21
21
|
else
|
22
22
|
render json: { success: false, errors: application_module.errors }, status: :unprocessable_entity
|
23
23
|
end
|
@@ -4,14 +4,14 @@ module Ecom
|
|
4
4
|
before_action :set_user_role, only: [:update]
|
5
5
|
|
6
6
|
def index
|
7
|
-
render json:
|
7
|
+
render json: UserRole.all
|
8
8
|
end
|
9
9
|
|
10
10
|
def create
|
11
11
|
user_role = UserRole.new(user_role_params)
|
12
12
|
|
13
13
|
if user_role.save
|
14
|
-
render json:
|
14
|
+
render json: user_role, status: :created
|
15
15
|
else
|
16
16
|
render json: { success: false, errors: user_role.errors }, status: :unprocessable_entity
|
17
17
|
end
|
@@ -19,7 +19,7 @@ module Ecom
|
|
19
19
|
|
20
20
|
def update
|
21
21
|
if @user_role.update(user_role_params)
|
22
|
-
render json:
|
22
|
+
render json: @user_role
|
23
23
|
else
|
24
24
|
render json: { success: false, errors: @user_role.errors }, status: :unprocessable_entity
|
25
25
|
end
|
@@ -4,17 +4,17 @@ module Ecom
|
|
4
4
|
before_action :set_user, only: [:update]
|
5
5
|
|
6
6
|
def index
|
7
|
-
render json:
|
7
|
+
render json: User.all
|
8
8
|
end
|
9
9
|
|
10
10
|
def active
|
11
|
-
render json:
|
11
|
+
render json: User.active
|
12
12
|
end
|
13
13
|
|
14
14
|
def create
|
15
15
|
user = User.new(user_params)
|
16
16
|
if user.save
|
17
|
-
render json:
|
17
|
+
render json: user, status: :created
|
18
18
|
else
|
19
19
|
render json: { success: false, errors: user.errors }, status: :unprocessable_entity
|
20
20
|
end
|
@@ -22,7 +22,7 @@ module Ecom
|
|
22
22
|
|
23
23
|
def update
|
24
24
|
if @user.update(user_params)
|
25
|
-
render json:
|
25
|
+
render json: @user
|
26
26
|
else
|
27
27
|
render json: { success: false, errors: @user.errors }, status: :unprocessable_entity
|
28
28
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Ecom
|
2
|
+
module Core
|
3
|
+
class AttendanceSheet < ApplicationRecord
|
4
|
+
OPEN = 'Open'.freeze
|
5
|
+
CLOSED = 'Closed'.freeze
|
6
|
+
|
7
|
+
validates :date, :opened_at, presence: true, uniqueness: true
|
8
|
+
validates :status, inclusion: [OPEN, CLOSED]
|
9
|
+
|
10
|
+
has_many :attendance_sheet_entries
|
11
|
+
|
12
|
+
scope :open, -> { find_by(status: OPEN) }
|
13
|
+
|
14
|
+
def self.exists_for_today?
|
15
|
+
AttendanceSheet.where(date: Date.today).exists?
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.open_exists_for_today?
|
19
|
+
where(status: OPEN, date: Date.today).exists?
|
20
|
+
end
|
21
|
+
|
22
|
+
# Attendance sheet should be created using the
|
23
|
+
# method below only. This is because we need to
|
24
|
+
# check if there is an open attendance already,
|
25
|
+
# and also that we have only one attendace sheet
|
26
|
+
# per day.
|
27
|
+
def self.create_current
|
28
|
+
raise 'Attendance sheet already created for the day.' if AttendanceSheet.exists_for_today?
|
29
|
+
|
30
|
+
AttendanceSheet.create(date: Date.today, opened_at: Time.now, status: OPEN)
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.close_current
|
34
|
+
sheet = AttendanceSheet.find_by(date: Date.today, status: OPEN)
|
35
|
+
|
36
|
+
raise 'There is no attendance sheet to close.' if sheet.nil?
|
37
|
+
|
38
|
+
sheet.closed_at = Time.now
|
39
|
+
sheet.status = CLOSED
|
40
|
+
sheet.save
|
41
|
+
sheet
|
42
|
+
end
|
43
|
+
|
44
|
+
# This method should be used by privileged users
|
45
|
+
# to close the attendance sheet after the date has
|
46
|
+
# passed. Normally, timekeepers need to open and close
|
47
|
+
# an attendance sheet of a date on the specific date.
|
48
|
+
def self.close
|
49
|
+
raise 'There is no attendance sheet to close.' unless AttendanceSheet.open_exists_for_today?
|
50
|
+
|
51
|
+
sheet = AttendanceSheet.open
|
52
|
+
sheet.closed_at = Time.now
|
53
|
+
sheet.save
|
54
|
+
sheet
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
module Ecom
|
2
2
|
module Core
|
3
3
|
class CrewTime < ApplicationRecord
|
4
|
-
belongs_to :
|
4
|
+
belongs_to :attendance_sheet_entry
|
5
5
|
belongs_to :overtime_type, optional: true
|
6
6
|
|
7
|
-
validates :
|
8
|
-
validates_each :date do |record, attr, value|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
7
|
+
validates :hours, :converted_hours, presence: true
|
8
|
+
# validates_each :date do |record, attr, value|
|
9
|
+
# if record.crew && value && (value < record.crew.employment_date)
|
10
|
+
# record.errors.add(attr, 'should be after employment date')
|
11
|
+
# end
|
12
|
+
# end
|
13
13
|
|
14
14
|
before_save :calculate_converted_hours
|
15
15
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class MoveDateToAttendanceSheet < ActiveRecord::Migration[6.0]
|
2
|
+
def up
|
3
|
+
dates = Ecom::Core::CrewTime.pluck('DISTINCT date(date)')
|
4
|
+
|
5
|
+
return if dates.count.zero?
|
6
|
+
|
7
|
+
attendances = []
|
8
|
+
dates.each do |date|
|
9
|
+
attendances << Ecom::Core::AttendanceSheet.new(date: date)
|
10
|
+
end
|
11
|
+
|
12
|
+
Ecom::Core::AttendanceSheet.transaction do
|
13
|
+
attendances.each(&:save)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def down
|
18
|
+
raise ActiveRecord::IrreversibleMigration
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateEcomCoreAttendanceSheets < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :ecom_core_attendance_sheets do |t|
|
4
|
+
t.date :date, null: false, unique: true
|
5
|
+
t.time :opened_at, null: false
|
6
|
+
t.time :closed_at
|
7
|
+
t.string :remark
|
8
|
+
t.string :status, null: false, default: 'Open'
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateEcomCoreAttendanceSheetEntries < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :ecom_core_attendance_sheet_entries do |t|
|
4
|
+
t.references :attendance_sheet, null: false, index: { name: 'ase_on_as_indx' }
|
5
|
+
t.references :crew, null: false, index: { name: 'ase_on_crew_indx' }
|
6
|
+
t.float :total_hours
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
add_foreign_key :ecom_core_attendance_sheet_entries, :ecom_core_attendance_sheets,
|
11
|
+
column: :attendance_sheet_id
|
12
|
+
add_foreign_key :ecom_core_attendance_sheet_entries, :ecom_core_crews, column: :crew_id
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class RelateCrewTimeWithAttendanceSheetEntry < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
add_column :ecom_core_crew_times, :attendance_sheet_entry_id, :integer,
|
4
|
+
index: { name: 'ase_on_ct_indx' }
|
5
|
+
add_foreign_key :ecom_core_crew_times, :ecom_core_attendance_sheet_entries,
|
6
|
+
column: :attendance_sheet_entry_id
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
class RemoveCrewTimeIdFromCrew < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
remove_foreign_key :ecom_core_crew_times, :ecom_core_crews, column: :crew_id
|
4
|
+
remove_index :ecom_core_crew_times, name: 'ct_on_crew_indx'
|
5
|
+
remove_column :ecom_core_crew_times, :crew_id
|
6
|
+
end
|
7
|
+
end
|
data/lib/ecom/core/version.rb
CHANGED
data/lib/ecom_core.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :crew_time, class: 'Ecom::Core::CrewTime' do
|
3
|
-
date { Date.today }
|
4
3
|
checkin_time { Time.now }
|
5
4
|
checkout_time { Time.now + 2 * 60 * 60 }
|
6
5
|
hours { 2 }
|
7
6
|
converted_hours { 2 }
|
8
|
-
association :crew
|
9
7
|
remark { FFaker::Name.name }
|
10
8
|
overtime { false }
|
11
9
|
overtime_type { nil }
|
10
|
+
association :attendance_sheet_entry
|
12
11
|
end
|
13
12
|
end
|
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.1.
|
4
|
+
version: 1.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aasm
|
@@ -53,19 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: active_model_serializers
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.10.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.10.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jwt
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,13 +95,13 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 6.0.2
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: data_migrate
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
|
-
type: :
|
104
|
+
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: factory_bot_rails
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: ffaker
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: rspec-rails
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -216,6 +216,8 @@ files:
|
|
216
216
|
- app/controllers/ecom/core/users_controller.rb
|
217
217
|
- app/models/ecom/core/application_module.rb
|
218
218
|
- app/models/ecom/core/application_record.rb
|
219
|
+
- app/models/ecom/core/attendance_sheet.rb
|
220
|
+
- app/models/ecom/core/attendance_sheet_entry.rb
|
219
221
|
- app/models/ecom/core/crew.rb
|
220
222
|
- app/models/ecom/core/crew_time.rb
|
221
223
|
- app/models/ecom/core/crew_type.rb
|
@@ -251,7 +253,6 @@ files:
|
|
251
253
|
- app/models/ecom/core/work_product.rb
|
252
254
|
- app/models/ecom/core/work_product_template.rb
|
253
255
|
- app/serializers/ecom/core/application_module_serializer.rb
|
254
|
-
- app/serializers/ecom/core/application_serializer.rb
|
255
256
|
- app/serializers/ecom/core/lookup_serializer.rb
|
256
257
|
- app/serializers/ecom/core/resource_type_serializer.rb
|
257
258
|
- app/serializers/ecom/core/user_role_serializer.rb
|
@@ -260,6 +261,7 @@ files:
|
|
260
261
|
- app/services/ecom/core/token_auth_service.rb
|
261
262
|
- config/database.ci.yml
|
262
263
|
- config/routes.rb
|
264
|
+
- db/data/20200401064242_move_date_to_attendance_sheet.rb
|
263
265
|
- db/migrate/20190101112620_create_ecom_core_lookups.rb
|
264
266
|
- db/migrate/20190101112625_create_ecom_core_overtime_types.rb
|
265
267
|
- db/migrate/20191119010518_create_ecom_core_task_template_types.rb
|
@@ -296,12 +298,19 @@ files:
|
|
296
298
|
- db/migrate/20200315153640_create_ecom_core_equipment_items.rb
|
297
299
|
- db/migrate/20200315160810_create_ecom_core_equipment_valuations.rb
|
298
300
|
- db/migrate/20200316125323_create_ecom_core_equipment_components.rb
|
301
|
+
- db/migrate/20200401040433_create_ecom_core_attendance_sheets.rb
|
302
|
+
- db/migrate/20200401071343_remove_date_column_from_crew_times.rb
|
303
|
+
- db/migrate/20200401122539_create_ecom_core_attendance_sheet_entries.rb
|
304
|
+
- db/migrate/20200401142959_relate_crew_time_with_attendance_sheet_entry.rb
|
305
|
+
- db/migrate/20200401144137_remove_crew_time_id_from_crew.rb
|
299
306
|
- lib/ecom/core.rb
|
300
307
|
- lib/ecom/core/engine.rb
|
301
308
|
- lib/ecom/core/version.rb
|
302
309
|
- lib/ecom_core.rb
|
303
310
|
- lib/tasks/ecom_core_tasks.rake
|
304
311
|
- spec/factories/ecom/core/application_modules.rb
|
312
|
+
- spec/factories/ecom/core/attendance_sheet_entries.rb
|
313
|
+
- spec/factories/ecom/core/attendance_sheets.rb
|
305
314
|
- spec/factories/ecom/core/crew_times.rb
|
306
315
|
- spec/factories/ecom/core/crew_types.rb
|
307
316
|
- spec/factories/ecom/core/crews.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Ecom
|
2
|
-
module Core
|
3
|
-
class ApplicationSerializer
|
4
|
-
include FastJsonapi::ObjectSerializer
|
5
|
-
|
6
|
-
def serializable_hash
|
7
|
-
data = super[:data]
|
8
|
-
if data.is_a? Hash
|
9
|
-
data[:attributes]
|
10
|
-
elsif data.is_a? Array
|
11
|
-
data.map { |d| d[:attributes] }
|
12
|
-
elsif data.nil?
|
13
|
-
nil
|
14
|
-
else
|
15
|
-
data
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|