ecom_core 1.0.18 → 1.0.23

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/ecom/core/access_controller.rb +33 -0
  3. data/app/controllers/ecom/core/application_controller.rb +40 -1
  4. data/app/controllers/ecom/core/application_modules_controller.rb +33 -0
  5. data/app/controllers/ecom/core/menus_controller.rb +26 -0
  6. data/app/controllers/ecom/core/user_roles_controller.rb +40 -0
  7. data/app/controllers/ecom/core/users_controller.rb +43 -0
  8. data/app/models/ecom/core/application_module.rb +1 -1
  9. data/app/models/ecom/core/crew_time.rb +1 -1
  10. data/app/models/ecom/core/custom_payment_detail.rb +10 -0
  11. data/app/models/ecom/core/equipment.rb +10 -0
  12. data/app/models/ecom/core/equipment_category.rb +9 -0
  13. data/app/models/ecom/core/equipment_component.rb +9 -0
  14. data/app/models/ecom/core/equipment_item.rb +14 -0
  15. data/app/models/ecom/core/equipment_location.rb +10 -0
  16. data/app/models/ecom/core/equipment_valuation.rb +9 -0
  17. data/app/models/ecom/core/location_type.rb +6 -0
  18. data/app/models/ecom/core/menu.rb +1 -0
  19. data/app/models/ecom/core/payment_detail.rb +1 -1
  20. data/app/models/ecom/core/user.rb +3 -1
  21. data/app/serializers/ecom/core/application_module_serializer.rb +9 -0
  22. data/app/serializers/ecom/core/user_role_serializer.rb +9 -0
  23. data/app/serializers/ecom/core/user_serializer.rb +9 -0
  24. data/app/services/ecom/core/token_auth_service.rb +21 -0
  25. data/config/routes.rb +10 -0
  26. data/db/migrate/20200210095535_add_advance_column_to_payment_details.rb +5 -0
  27. data/db/migrate/20200221123207_add_employee_id_to_crew.rb +5 -0
  28. data/db/migrate/20200307112519_create_ecom_core_custom_payment_details.rb +24 -0
  29. data/db/migrate/20200315145215_create_ecom_core_equipment_locations.rb +14 -0
  30. data/db/migrate/20200315150500_create_ecom_core_equipment_categories.rb +14 -0
  31. data/db/migrate/20200315152143_create_ecom_core_equipment.rb +15 -0
  32. data/db/migrate/20200315153640_create_ecom_core_equipment_items.rb +23 -0
  33. data/db/migrate/20200315160810_create_ecom_core_equipment_valuations.rb +21 -0
  34. data/db/migrate/20200316125323_create_ecom_core_equipment_components.rb +13 -0
  35. data/lib/ecom/core/version.rb +1 -1
  36. data/spec/factories/ecom/core/custom_payment_details.rb +18 -0
  37. data/spec/factories/ecom/core/equipment.rb +8 -0
  38. data/spec/factories/ecom/core/equipment_categories.rb +7 -0
  39. data/spec/factories/ecom/core/equipment_components.rb +7 -0
  40. data/spec/factories/ecom/core/equipment_items.rb +16 -0
  41. data/spec/factories/ecom/core/equipment_locations.rb +8 -0
  42. data/spec/factories/ecom/core/equipment_valuations.rb +15 -0
  43. data/spec/factories/ecom/core/location_types.rb +5 -0
  44. data/spec/factories/ecom/core/payment_details.rb +1 -0
  45. metadata +56 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c63c4901d4cf85366d3f1eab592dfcc1ae7c7ea4eeb022ffdc2722270e1edfee
4
- data.tar.gz: 8b3345e96c6d54525934aad86b009a4fc942966022138782a2cec677c76992f7
3
+ metadata.gz: c71dd789c02616763f898bdd8417b5f18e8ed743890d93024506b911142b1934
4
+ data.tar.gz: 457632bac3ee575a2dd699bb86955b8abf7203795b5d38d420aacc4458859ccf
5
5
  SHA512:
6
- metadata.gz: 28c7be9f236d4b4b08755f0023bd867cac6d8f39a9777952b57d9a8724b8f738ca12b5f2fa34f4a121d257b21c3658fb84a8283ef6d53294788602392f0e3aba
7
- data.tar.gz: e42dcfaf0518e76428729a22951b335d60642322b47754e00ae733b48c1c1d942b5bf6e28e69b6e8ad49474bebd9f533d29e4558ca1965561e5d0299caa1137b
6
+ metadata.gz: b55f2bb4e3017e18f3231d39df50d23529e87bc4654b1c9ca3b64a9ffa5f1c99502fedbdff61d55dbca4e0a67a4a5995e7664b579824382dad0ddd2e5b29ac7f
7
+ data.tar.gz: f19f8aa6b7746d8ccc3887758797dc4f906fc94f3ce82ffd38dbb62908b5f6f33e425e46f5d9f479c9ad6e34ab3445043c529ee6760da25c8898b711d3250c26
@@ -0,0 +1,33 @@
1
+ module Ecom
2
+ module Core
3
+ class AccessController < ApplicationController
4
+ skip_before_action :authenticate, only: [:login]
5
+
6
+ def login
7
+ user = User.find_by(email: auth_params[:email])
8
+ if user
9
+ if user.authenticate(auth_params[:password])
10
+ roles = user.user_roles.each_with_object([]) do |role, result|
11
+ result << role.name
12
+ end
13
+
14
+ payload = { id: user.id, email: user.email, name: user.full_name, roles: roles }
15
+ jwt = TokenAuthService.issue(payload)
16
+ render json: { token: jwt, user: payload, error: nil }
17
+ else
18
+ render json: { error: 'Invalid username or password' }, status: 400
19
+ end
20
+ else
21
+ render json: { error: 'User does not exist' }, status: 400
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def auth_params
28
+ params.require(:auth).permit(:email, :password)
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -1,7 +1,46 @@
1
1
  module Ecom
2
2
  module Core
3
3
  class ApplicationController < ActionController::API
4
- # protect_from_forgery with: :exception
4
+ before_action :authenticate
5
+
6
+ def logged_in?
7
+ !current_user.nil?
8
+ end
9
+
10
+ def current_user
11
+ return unless auth_present?
12
+
13
+ user = User.find(auth['id'])
14
+ @current_user ||= user if user
15
+ end
16
+
17
+ private
18
+
19
+ def authenticate
20
+ render json: { error: 'Unauthorized' }, status: 401 unless logged_in?
21
+ end
22
+
23
+ def token
24
+ return nil if request.env['HTTP_AUTHORIZATION'].nil?
25
+
26
+ request.env['HTTP_AUTHORIZATION'].scan(/Bearer (.*)$/).flatten.last
27
+ end
28
+
29
+ def auth
30
+ TokenAuthService.decode(token)
31
+ end
32
+
33
+ def auth_present?
34
+ !token.nil?
35
+ end
36
+
37
+ def generate_error_message(entity)
38
+ value = entity.errors.details.first[1][0][:value]
39
+ field = entity.errors.keys[0]
40
+ message = entity.errors.values[0][0]
41
+
42
+ entity.errors.full_message(field, "'#{value}' #{message}")
43
+ end
5
44
  end
6
45
  end
7
46
  end
@@ -0,0 +1,33 @@
1
+ module Ecom
2
+ module Core
3
+ class ApplicationModulesController < ApplicationController
4
+ def index
5
+ render json: ApplicationModuleSerializer.new(ApplicationModule.all)
6
+ end
7
+
8
+ def create
9
+ application_module = ApplicationModule.new(application_module_params)
10
+ if application_module.save
11
+ render json: ApplicationModuleSerializer.new(application_module), status: :created
12
+ else
13
+ render json: { success: false, errors: application_module.errors }, status: :unprocessable_entity
14
+ end
15
+ end
16
+
17
+ def update
18
+ application_module = ApplicationModule.find(params[:id])
19
+ if application_module.update(application_module_params)
20
+ render json: ApplicationModuleSerializer.new(application_module)
21
+ else
22
+ render json: { success: false, errors: application_module.errors }, status: :unprocessable_entity
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def application_module_params
29
+ params.require(:application_module).permit(:code, :name)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,26 @@
1
+ module Ecom
2
+ module Core
3
+ class MenusController < ApplicationController
4
+ def index
5
+ user = current_user
6
+ roles = user.user_roles
7
+ app_module = roles[0].application_module
8
+ menus = []
9
+ roles.each do |role|
10
+ menu_list = role.menus.where(parent: nil, application_module: app_module)
11
+ menu_list.each do |menu|
12
+ children = []
13
+ menu.children.order(:label).each do |child|
14
+ if role.menus.include? child
15
+ children << { label: child.label, icon: child.icon, route: child.route }
16
+ end
17
+ end
18
+ menus << { label: menu.label, icon: menu.icon, children: children }
19
+ end
20
+ end
21
+
22
+ render json: menus
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,40 @@
1
+ module Ecom
2
+ module Core
3
+ class UserRolesController < ApplicationController
4
+ before_action :set_user_role, only: [:update]
5
+
6
+ def index
7
+ render json: UserRoleSerializer.new(UserRole.all)
8
+ end
9
+
10
+ def create
11
+ user_role = UserRole.new(user_role_params)
12
+
13
+ if user_role.save
14
+ render json: UserRoleSerializer.new(user_role), status: :created
15
+ else
16
+ render json: { success: false, errors: user_role.errors }, status: :unprocessable_entity
17
+ end
18
+ end
19
+
20
+ def update
21
+ if @user_role.update(user_role_params)
22
+ render json: UserRoleSerializer.new(@user_role)
23
+ else
24
+ render json: { success: false, errors: @user_role.errors }, status: :unprocessable_entity
25
+ end
26
+ end
27
+
28
+
29
+ private
30
+
31
+ def set_user_role
32
+ @user_role = UserRole.find(params[:id])
33
+ end
34
+
35
+ def user_role_params
36
+ params.require(:user_role).permit(:name, :application_module_id)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ module Ecom
2
+ module Core
3
+ class UsersController < ApplicationController
4
+ before_action :set_user, only: [:update]
5
+
6
+ def index
7
+ render json: UserSerializer.new(User.all)
8
+ end
9
+
10
+ def active
11
+ render json: UserSerializer.new(User.active)
12
+ end
13
+
14
+ def create
15
+ user = User.new(user_params)
16
+ if user.save
17
+ render json: UserSerializer.new(user), status: :created
18
+ else
19
+ render json: { success: false, errors: user.errors }, status: :unprocessable_entity
20
+ end
21
+ end
22
+
23
+ def update
24
+ if @user.update(user_params)
25
+ render json: UserSerializer.new(@user)
26
+ else
27
+ render json: { success: false, errors: @user.errors }, status: :unprocessable_entity
28
+ end
29
+ end
30
+
31
+
32
+ private
33
+
34
+ def set_user
35
+ @user = User.find(params[:id])
36
+ end
37
+
38
+ def user_params
39
+ params.require(:user).permit(:first_name, :last_name, :email, :password, :active)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,7 +1,7 @@
1
1
  module Ecom
2
2
  module Core
3
3
  class ApplicationModule < ApplicationRecord
4
- validates :code, :name, uniqueness: true
4
+ validates :code, :name, presence: true, uniqueness: true
5
5
  end
6
6
  end
7
7
  end
@@ -6,7 +6,7 @@ module Ecom
6
6
 
7
7
  validates :date, :hours, :converted_hours, presence: true
8
8
  validates_each :date do |record, attr, value|
9
- if record.crew && (value < record.crew.employment_date)
9
+ if record.crew && value && (value < record.crew.employment_date)
10
10
  record.errors.add(attr, 'should be after employment date')
11
11
  end
12
12
  end
@@ -0,0 +1,10 @@
1
+ module Ecom
2
+ module Core
3
+ class CustomPaymentDetail < ApplicationRecord
4
+ belongs_to :payment, class_name: 'Ecom::Core::Payment'
5
+
6
+ validates :name, :hours, :ot_hours, :base_salary, :overtime, :gross_salary, :tax, :pension, :net_salary, :net_pay,
7
+ :advance, :wage, presence: true
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Ecom
2
+ module Core
3
+ class Equipment < ApplicationRecord
4
+ belongs_to :equipment_category
5
+
6
+ validates :name, :minimum_acquisition_time, presence: true
7
+ validates :name, uniqueness: { scope: :equipment_category_id }
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module Ecom
2
+ module Core
3
+ class EquipmentCategory < ApplicationRecord
4
+ belongs_to :equipment_type
5
+
6
+ validates :name, presence: true, uniqueness: { scope: :equipment_type_id }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Ecom
2
+ module Core
3
+ class EquipmentComponent < ApplicationRecord
4
+ belongs_to :equipment_item
5
+
6
+ validates :name, presence: true
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ module Ecom
2
+ module Core
3
+ class EquipmentItem < ApplicationRecord
4
+ READY = 'Ready'
5
+ UNDER_MAINTENANCE = 'Under Maintenance'
6
+
7
+ belongs_to :equipment
8
+ belongs_to :current_location, class_name: 'Ecom::Core::EquipmentLocation'
9
+
10
+ validates :name, :status, :serial_number, :purchase_date, :purchase_price, presence: true
11
+ validates :serial_number, uniqueness: true
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ module Ecom
2
+ module Core
3
+ class EquipmentLocation < ApplicationRecord
4
+ belongs_to :location_type
5
+
6
+ validates :name, :address, presence: true
7
+ validates :name, uniqueness: true
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module Ecom
2
+ module Core
3
+ class EquipmentValuation < ApplicationRecord
4
+ belongs_to :equipment_item
5
+
6
+ validates :equipment_value, :residual_value, :work_hrs_per_yr, :life_year, :insurance_premium, presence: true
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ module Ecom
2
+ module Core
3
+ class LocationType < Lookup
4
+ end
5
+ end
6
+ end
@@ -3,6 +3,7 @@ module Ecom
3
3
  class Menu < ApplicationRecord
4
4
  belongs_to :parent, class_name: 'Ecom::Core::Menu', optional: true
5
5
  belongs_to :application_module
6
+ has_many :children, class_name: 'Ecom::Core::Menu', foreign_key: 'parent_id'
6
7
 
7
8
  validates :label, :route, presence: true
8
9
  end
@@ -5,7 +5,7 @@ module Ecom
5
5
  belongs_to :payment
6
6
 
7
7
  validates :hours, :ot_hours, :base_salary, :overtime, :gross_salary, :tax, :pension, :net_salary, :net_pay,
8
- presence: true
8
+ :advance, presence: true
9
9
  end
10
10
  end
11
11
  end
@@ -8,7 +8,9 @@ module Ecom
8
8
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i.freeze
9
9
  validates :first_name, :last_name, :active, presence: true
10
10
  validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
11
- validates :password, length: { minimum: 6 }
11
+ validates :password, presence: true, length: { minimum: 6 }, confirmation: true, if: :password
12
+
13
+ scope :active, -> { where(active: true) }
12
14
 
13
15
  def full_name
14
16
  "#{first_name} #{last_name}"
@@ -0,0 +1,9 @@
1
+ module Ecom
2
+ module Core
3
+ class ApplicationModuleSerializer
4
+ include FastJsonapi::ObjectSerializer
5
+
6
+ attributes :code, :name
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Ecom
2
+ module Core
3
+ class UserRoleSerializer
4
+ include FastJsonapi::ObjectSerializer
5
+
6
+ attributes :name
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Ecom
2
+ module Core
3
+ class UserSerializer
4
+ include FastJsonapi::ObjectSerializer
5
+
6
+ attributes :first_name, :last_name, :email, :active
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ require 'jwt'
2
+
3
+ module Ecom
4
+ module Core
5
+ class TokenAuthService
6
+ AUTH_SECRET = '31a70abfaa57e5e77a3fc9f27aeaaf59b9a9f5355b5e16c842ee172035a8ed40bf82c1c971ecc176e4f0b4c9e6141db07fd4a5af3f7db9265e719fbe340b105a'
7
+
8
+ def self.issue(payload)
9
+ JWT.encode(payload, auth_secret, 'HS256')
10
+ end
11
+
12
+ def self.decode(token)
13
+ JWT.decode(token, auth_secret, true, algorithm: 'HS256').first
14
+ end
15
+
16
+ def self.auth_secret
17
+ AUTH_SECRET
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,15 @@
1
1
  Ecom::Core::Engine.routes.draw do
2
+ post '/login', controller: :access, action: :login
3
+
4
+ resources :application_modules, only: %i[index create update]
5
+ resources :user_roles, only: %i[index create update]
6
+ resources :menus, only: %i[index]
7
+ resources :users, only: %i[index create update]
8
+ get '/users/active', controller: :users, action: :active
9
+
10
+
2
11
  resources :crew_types
3
12
  resources :equipment_types
4
13
  resources :material_types
14
+ resources :menus, only: %i[index]
5
15
  end
@@ -0,0 +1,5 @@
1
+ class AddAdvanceColumnToPaymentDetails < ActiveRecord::Migration[6.0]
2
+ def change
3
+ add_column :ecom_core_payment_details, :advance, :float, null: false, default: 0
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddEmployeeIdToCrew < ActiveRecord::Migration[6.0]
2
+ def change
3
+ add_column :ecom_core_crews, :employee_id, :string
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ class CreateEcomCoreCustomPaymentDetails < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_custom_payment_details do |t|
4
+ t.string :name, null: false
5
+ t.float :hours, null: false
6
+ t.float :ot_hours, null: false, default: 0
7
+ t.float :base_salary, null: false
8
+ t.float :overtime, null: false
9
+ t.float :gross_salary, null: false
10
+ t.float :tax, null: false, default: 0
11
+ t.float :pension, null: false, default: 0
12
+ t.float :net_salary, null: false
13
+ t.float :net_pay, null: false
14
+ t.float :advance, null: false
15
+ t.float :wage, null: false
16
+ t.string :qualification
17
+ t.references :payment, null: false, index: { name: 'cpd_on_payment_indx' }
18
+
19
+ t.timestamps
20
+ end
21
+
22
+ add_foreign_key :ecom_core_custom_payment_details, :ecom_core_payments, column: :payment_id
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ class CreateEcomCoreEquipmentLocations < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_equipment_locations do |t|
4
+ t.string :name, null: false, unique: true
5
+ t.string :description
6
+ t.string :address, null: false
7
+ t.references :location_type, null: false, index: { name: 'ecel_on_lt_indx' }
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ add_foreign_key :ecom_core_equipment_locations, :ecom_core_lookups, column: :location_type_id
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ class CreateEcomCoreEquipmentCategories < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_equipment_categories do |t|
4
+ t.string :name, null: false
5
+ t.string :description
6
+ t.references :equipment_type, null: false, index: { name: 'et_on_ecec_indx' }
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :ecom_core_equipment_categories, %i[name equipment_type_id], unique: true, name: 'ecec_name_et_indx'
12
+ add_foreign_key :ecom_core_equipment_categories, :ecom_core_resource_types, column: :equipment_type_id
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ class CreateEcomCoreEquipment < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_equipment do |t|
4
+ t.string :name, null: false
5
+ t.string :description
6
+ t.float :minimum_acquisition_time, null: false, default: 0
7
+ t.references :equipment_category, null: false, index: { name: 'ec_on_ece_indx' }
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ add_index :ecom_core_equipment, %i[name equipment_category_id], unique: true
13
+ add_foreign_key :ecom_core_equipment, :ecom_core_equipment_categories, column: :equipment_category_id
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ class CreateEcomCoreEquipmentItems < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_equipment_items do |t|
4
+ t.string :name, null: false
5
+ t.string :description
6
+ t.string :status, null: false
7
+ t.string :serial_number, unique: true
8
+ t.string :brand
9
+ t.string :item_model
10
+ t.float :purchase_price, null: false
11
+ t.date :purchase_date, null: false
12
+ t.float :license_fee
13
+ t.float :tax
14
+ t.references :equipment, null: false, index: { name: 'equipment_on_ei_indx' }
15
+ t.references :current_location, null: false, index: { name: 'equipment_on_el_indx' }
16
+
17
+ t.timestamps
18
+ end
19
+
20
+ add_foreign_key :ecom_core_equipment_items, :ecom_core_equipment, column: :equipment_id
21
+ add_foreign_key :ecom_core_equipment_items, :ecom_core_equipment_locations, column: :current_location_id
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ class CreateEcomCoreEquipmentValuations < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_equipment_valuations do |t|
4
+ t.float :equipment_value, null: false
5
+ t.float :residual_value, null: false
6
+ t.float :work_hrs_per_yr, null: false
7
+ t.float :life_year, null: false
8
+ t.float :insurance_premium, null: false
9
+ t.float :fuel_cost_per_hr
10
+ t.float :oil_cost
11
+ t.float :repair_rate
12
+ t.float :rate_of_return
13
+ t.boolean :current, null: false, default: true
14
+ t.references :equipment_item, index: { name: 'ev_on_ei_indx' }
15
+
16
+ t.timestamps
17
+ end
18
+
19
+ add_foreign_key :ecom_core_equipment_valuations, :ecom_core_equipment_items, column: :equipment_item_id
20
+ end
21
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEcomCoreEquipmentComponents < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_equipment_components do |t|
4
+ t.string :serial_number
5
+ t.string :name, null: false
6
+ t.references :equipment_item, null: false, index: { name: 'ei_on_ec_indx' }
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_foreign_key :ecom_core_equipment_components, :ecom_core_equipment_items, column: :equipment_item_id
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module Ecom
2
2
  module Core
3
- VERSION = '1.0.18'.freeze
3
+ VERSION = '1.0.23'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,18 @@
1
+ FactoryBot.define do
2
+ factory :custom_payment_detail, class: 'Ecom::Core::CustomPaymentDetail' do
3
+ name { FFaker::Name.name }
4
+ hours { 1.5 }
5
+ ot_hours { 1.5 }
6
+ base_salary { 1.5 }
7
+ overtime { 1.5 }
8
+ gross_salary { 100 }
9
+ tax { 15 }
10
+ pension { 5 }
11
+ net_salary { 80 }
12
+ net_pay { 80 }
13
+ advance { 0 }
14
+ wage { 1.5 }
15
+ qualification { FFaker::Name.name }
16
+ association :payment
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :equipment, class: 'Ecom::Core::Equipment' do
3
+ name { FFaker::Name.name }
4
+ description { FFaker::Name.name }
5
+ minimum_acquisition_time { 10 }
6
+ association :equipment_category
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :equipment_category, class: 'Ecom::Core::EquipmentCategory' do
3
+ name { FFaker::Name.name }
4
+ description { FFaker::Name.name }
5
+ association :equipment_type
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :equipment_component, class: 'Ecom::Core::EquipmentComponent' do
3
+ serial_number { FFaker::Name.name }
4
+ name { FFaker::Name.name }
5
+ association :equipment_item
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ FactoryBot.define do
2
+ factory :equipment_item, class: 'Ecom::Core::EquipmentItem' do
3
+ name { FFaker::Name.name }
4
+ description { FFaker::Name.name }
5
+ status { FFaker::Name.name }
6
+ serial_number { FFaker::Name.name }
7
+ brand { FFaker::Name.name }
8
+ item_model { FFaker::Name.name }
9
+ purchase_price { 1000 }
10
+ purchase_date { Date.today }
11
+ license_fee { 200 }
12
+ tax { 500 }
13
+ association :equipment
14
+ association :current_location, factory: :equipment_location
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :equipment_location, class: 'Ecom::Core::EquipmentLocation' do
3
+ name { FFaker::Name.name }
4
+ description { FFaker::Name.name }
5
+ address { FFaker::Name.name }
6
+ association :location_type
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ FactoryBot.define do
2
+ factory :equipment_valuation, class: 'Ecom::Core::EquipmentValuation' do
3
+ equipment_value { 1500 }
4
+ residual_value { 150 }
5
+ work_hrs_per_yr { 150 }
6
+ life_year { 15 }
7
+ insurance_premium { 100 }
8
+ fuel_cost_per_hr { 1.5 }
9
+ oil_cost { 10 }
10
+ repair_rate { 1 }
11
+ rate_of_return { 3 }
12
+ current { false }
13
+ association :equipment_item
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :location_type, class: 'Ecom::Core::LocationType', parent: :lookup do
3
+ type { 'Ecom::Core::LocationType' }
4
+ end
5
+ end
@@ -9,6 +9,7 @@ FactoryBot.define do
9
9
  pension { 5 }
10
10
  net_salary { 80 }
11
11
  net_pay { 80 }
12
+ advance { 0 }
12
13
  association :crew
13
14
  association :payment
14
15
  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.0.18
4
+ version: 1.0.23
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-02-08 00:00:00.000000000 Z
11
+ date: 2020-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -53,21 +53,21 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rails
56
+ name: fast_jsonapi
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 6.0.2
61
+ version: '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: 6.0.2
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: fast_jsonapi
70
+ name: jwt
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 6.0.2
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 6.0.2
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: factory_bot_rails
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -191,17 +205,30 @@ files:
191
205
  - Rakefile
192
206
  - app/controllers/concerns/ecom/core/lookupable.rb
193
207
  - app/controllers/concerns/ecom/core/resource_typeable.rb
208
+ - app/controllers/ecom/core/access_controller.rb
194
209
  - app/controllers/ecom/core/application_controller.rb
210
+ - app/controllers/ecom/core/application_modules_controller.rb
195
211
  - app/controllers/ecom/core/crew_types_controller.rb
196
212
  - app/controllers/ecom/core/equipment_types_controller.rb
197
213
  - app/controllers/ecom/core/material_types_controller.rb
214
+ - app/controllers/ecom/core/menus_controller.rb
215
+ - app/controllers/ecom/core/user_roles_controller.rb
216
+ - app/controllers/ecom/core/users_controller.rb
198
217
  - app/models/ecom/core/application_module.rb
199
218
  - app/models/ecom/core/application_record.rb
200
219
  - app/models/ecom/core/crew.rb
201
220
  - app/models/ecom/core/crew_time.rb
202
221
  - app/models/ecom/core/crew_type.rb
203
222
  - app/models/ecom/core/currency.rb
223
+ - app/models/ecom/core/custom_payment_detail.rb
224
+ - app/models/ecom/core/equipment.rb
225
+ - app/models/ecom/core/equipment_category.rb
226
+ - app/models/ecom/core/equipment_component.rb
227
+ - app/models/ecom/core/equipment_item.rb
228
+ - app/models/ecom/core/equipment_location.rb
204
229
  - app/models/ecom/core/equipment_type.rb
230
+ - app/models/ecom/core/equipment_valuation.rb
231
+ - app/models/ecom/core/location_type.rb
205
232
  - app/models/ecom/core/lookup.rb
206
233
  - app/models/ecom/core/material_type.rb
207
234
  - app/models/ecom/core/menu.rb
@@ -223,8 +250,12 @@ files:
223
250
  - app/models/ecom/core/work_component_template.rb
224
251
  - app/models/ecom/core/work_product.rb
225
252
  - app/models/ecom/core/work_product_template.rb
253
+ - app/serializers/ecom/core/application_module_serializer.rb
226
254
  - app/serializers/ecom/core/lookup_serializer.rb
227
255
  - app/serializers/ecom/core/resource_type_serializer.rb
256
+ - app/serializers/ecom/core/user_role_serializer.rb
257
+ - app/serializers/ecom/core/user_serializer.rb
258
+ - app/services/ecom/core/token_auth_service.rb
228
259
  - config/database.ci.yml
229
260
  - config/routes.rb
230
261
  - db/migrate/20190101112620_create_ecom_core_lookups.rb
@@ -254,6 +285,15 @@ files:
254
285
  - db/migrate/20200126183218_create_ecom_core_payment_details.rb
255
286
  - db/migrate/20200207035823_add_additional_columns_to_payment.rb
256
287
  - db/migrate/20200207040844_add_net_pay_column_to_payment_details.rb
288
+ - db/migrate/20200210095535_add_advance_column_to_payment_details.rb
289
+ - db/migrate/20200221123207_add_employee_id_to_crew.rb
290
+ - db/migrate/20200307112519_create_ecom_core_custom_payment_details.rb
291
+ - db/migrate/20200315145215_create_ecom_core_equipment_locations.rb
292
+ - db/migrate/20200315150500_create_ecom_core_equipment_categories.rb
293
+ - db/migrate/20200315152143_create_ecom_core_equipment.rb
294
+ - db/migrate/20200315153640_create_ecom_core_equipment_items.rb
295
+ - db/migrate/20200315160810_create_ecom_core_equipment_valuations.rb
296
+ - db/migrate/20200316125323_create_ecom_core_equipment_components.rb
257
297
  - lib/ecom/core.rb
258
298
  - lib/ecom/core/engine.rb
259
299
  - lib/ecom/core/version.rb
@@ -264,7 +304,15 @@ files:
264
304
  - spec/factories/ecom/core/crew_types.rb
265
305
  - spec/factories/ecom/core/crews.rb
266
306
  - spec/factories/ecom/core/currencies.rb
307
+ - spec/factories/ecom/core/custom_payment_details.rb
308
+ - spec/factories/ecom/core/equipment.rb
309
+ - spec/factories/ecom/core/equipment_categories.rb
310
+ - spec/factories/ecom/core/equipment_components.rb
311
+ - spec/factories/ecom/core/equipment_items.rb
312
+ - spec/factories/ecom/core/equipment_locations.rb
267
313
  - spec/factories/ecom/core/equipment_types.rb
314
+ - spec/factories/ecom/core/equipment_valuations.rb
315
+ - spec/factories/ecom/core/location_types.rb
268
316
  - spec/factories/ecom/core/lookups.rb
269
317
  - spec/factories/ecom/core/material_types.rb
270
318
  - spec/factories/ecom/core/menus.rb