dscf-marketplace 0.3.92 → 0.3.94

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: 000d8116a19e742c018a144b6cde46aa1a3221b95735cb78794baa9981ed5228
4
+ data.tar.gz: 41b84e6e4b189dbe622fecc89e8bd4aa33a605b586a82ee7baa416b92c03baec
5
5
  SHA512:
6
- metadata.gz: 7c6773338667d90dfa39c0b711934dce4ed94545a18a70a2d9aef3648536fd775e7fccda79a62004e5d5e6a05efca986cd61337480d629a0dbf7d138f7ba4dcf
7
- data.tar.gz: 06ee3fdc0bd9d2f84934188be8ea9ff44c4bd8fccf06b3381265c9b01fd58389dece18884fb3afe9eef5018852bbc122a90bcebba1200638af43dabce55e3a83
6
+ metadata.gz: 6e24ef4567ecf8373aa62fd33243f71bf9e102826dacbf9f7e9e03f66fab1c44770a71ef8e291ca42392254662d1f7c44646ba46405af12d499a354912b0a42f
7
+ data.tar.gz: d435066b0c124ee9a3ab0dedc1b037353f3433029dbafcf7bb38640c2c2dcbc4e43415a6d1cf323e890166edbfb9567c56f314c21289f043ccfd69d3548f4302
@@ -161,6 +161,10 @@ module Dscf
161
161
 
162
162
  private
163
163
 
164
+ def find_record
165
+ Dscf::Marketplace::DeliveryOrder.find(params[:id])
166
+ end
167
+
164
168
  def model_params
165
169
  params.require(:delivery_order).permit(
166
170
  :driver_id, :pickup_address_id, :delivery_vehicle_id, :status,
@@ -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(
@@ -89,7 +89,8 @@ module Dscf::Marketplace
89
89
 
90
90
  def associate_orders_with_delivery(delivery_order, orders)
91
91
  orders.each do |order|
92
- order.update!(delivery_order: delivery_order)
92
+ order.update!(delivery_order: delivery_order, status: :confirmed)
93
+ order.order_items.update_all(status: OrderItem.statuses[:confirmed])
93
94
  end
94
95
  end
95
96
  end
@@ -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.94".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,13 +1,13 @@
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.94
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-09-18 00:00:00.000000000 Z
10
+ date: 2025-09-19 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -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