dscf-marketplace 0.3.92 → 0.3.93

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: 5f9f514677184147e40e66e85e6c1454265d0af758412f5dd892247a00082b25
4
- data.tar.gz: 4bd18580c906728236c541ce5970323710ab5f350e3fd2c4aed132203b5fa309
3
+ metadata.gz: 83b9e16160c50312669963822847e82d13756edfa0e0fd54d799bfe7130cd29a
4
+ data.tar.gz: e8b248ae95abd6813eb78729aad97dd5611d15f6164cfc5cecaf8e9087fd6227
5
5
  SHA512:
6
- metadata.gz: 7c6773338667d90dfa39c0b711934dce4ed94545a18a70a2d9aef3648536fd775e7fccda79a62004e5d5e6a05efca986cd61337480d629a0dbf7d138f7ba4dcf
7
- data.tar.gz: 06ee3fdc0bd9d2f84934188be8ea9ff44c4bd8fccf06b3381265c9b01fd58389dece18884fb3afe9eef5018852bbc122a90bcebba1200638af43dabce55e3a83
6
+ metadata.gz: 85f8a61f30863c23de3c0ca9e8eb1fbddbe4c5a12796c994c314e8e401931009e164bd2bd5e05fc20bed84c36e2c5c4db1f29a23db27a15d6db45046b6a22150
7
+ data.tar.gz: 89b3cb139f4404b538154ab6769a9fe133fc543eee181337d3be535cf6b37b5181884e2977265e368693d979d62a71af05a597324023860447495f28b51958c6
@@ -6,6 +6,9 @@ module Dscf
6
6
  def create
7
7
  vehicle = @clazz.new(model_params.except(:vehicle_license, :driver_license))
8
8
  if vehicle.save
9
+ # Auto-assign Driver role to the vehicle's driver
10
+ Dscf::Marketplace::RoleService.assign_driver_role(vehicle.driver)
11
+
9
12
  # Handle vehicle license upload
10
13
  if params[:delivery_vehicle][:vehicle_license].present?
11
14
  document = Dscf::Core::Document.new(
@@ -0,0 +1,28 @@
1
+ module Dscf::Marketplace
2
+ class RoleService
3
+ DRIVER_ROLE_CODE = "driver"
4
+
5
+ def self.assign_driver_role(user)
6
+ return if user_has_driver_role?(user)
7
+
8
+ driver_role = find_or_create_driver_role
9
+ assign_role_to_user(user, driver_role)
10
+ end
11
+
12
+ private
13
+
14
+ def self.user_has_driver_role?(user)
15
+ user.roles.exists?(code: DRIVER_ROLE_CODE)
16
+ end
17
+
18
+ def self.find_or_create_driver_role
19
+ Dscf::Core::Role.find_or_create_by!(code: DRIVER_ROLE_CODE) do |role|
20
+ role.name = "Driver"
21
+ end
22
+ end
23
+
24
+ def self.assign_role_to_user(user, role)
25
+ Dscf::Core::UserRole.find_or_create_by!(user: user, role: role)
26
+ end
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module Dscf
2
2
  module Marketplace
3
- VERSION = "0.3.92".freeze
3
+ VERSION = "0.3.93".freeze
4
4
  end
5
5
  end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :dscf_core_role, class: "Dscf::Core::Role" do
3
+ sequence(:code) { |n| "role_#{n}" }
4
+ sequence(:name) { |n| "Role #{n}" }
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :dscf_core_user_role, class: "Dscf::Core::UserRole" do
3
+ association :user, factory: :dscf_core_user
4
+ association :role, factory: :dscf_core_role
5
+ end
6
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dscf-marketplace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.92
4
+ version: 0.3.93
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat
@@ -472,6 +472,7 @@ files:
472
472
  - app/services/dscf/marketplace/delivery_order_service.rb
473
473
  - app/services/dscf/marketplace/my_resource_service.rb
474
474
  - app/services/dscf/marketplace/rfq_response_service.rb
475
+ - app/services/dscf/marketplace/role_service.rb
475
476
  - config/environments/production.rb
476
477
  - config/locales/en.yml
477
478
  - config/routes.rb
@@ -509,6 +510,8 @@ files:
509
510
  - spec/factories/dscf/core/addresses.rb
510
511
  - spec/factories/dscf/core/business_types.rb
511
512
  - spec/factories/dscf/core/businesses.rb
513
+ - spec/factories/dscf/core/roles.rb
514
+ - spec/factories/dscf/core/user_roles.rb
512
515
  - spec/factories/dscf/core/users.rb
513
516
  - spec/factories/dscf/marketplace/categories.rb
514
517
  - spec/factories/dscf/marketplace/delivery_order_items.rb