dscf-marketplace 0.2.94 → 0.2.96
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/dscf/marketplace/delivery_vehicles_controller.rb +84 -6
- data/app/models/dscf/marketplace/delivery_vehicle.rb +10 -1
- data/app/serializers/dscf/marketplace/delivery_vehicle_serializer.rb +2 -1
- data/app/serializers/dscf/marketplace/document_serializer.rb +4 -0
- data/app/serializers/dscf/marketplace/user_serializer.rb +9 -0
- data/lib/dscf/marketplace/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 337301146588e5fb9301adbb623f086e2cbc44ab193247ef22095868e2bcfc6e
|
4
|
+
data.tar.gz: 07f2f4c37075de27e77f71f09043aae1ef6e67ac0d8b9cb3ec6c13a87aad6b43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6953d8e4c94403e5856d6f6095ad6891886d186c5f69a12c86c002974fb90c07f4f21b12051aaac77443b1830334b509da64b97f712e2bd21f97c395358a2c46
|
7
|
+
data.tar.gz: 3e3e8c5b5d5f627a186ba00c07559c73716410bafc426f18ec140d427b5171ee39d49dc28d0914b164bd4df2dae3a173ca13e184933bc30c2a0122cd2c319232
|
@@ -3,24 +3,102 @@ module Dscf
|
|
3
3
|
class DeliveryVehiclesController < ApplicationController
|
4
4
|
include Dscf::Core::Common
|
5
5
|
|
6
|
+
def create
|
7
|
+
vehicle = @clazz.new(model_params.except(:vehicle_license, :driver_license))
|
8
|
+
if vehicle.save
|
9
|
+
# Handle vehicle license upload
|
10
|
+
if params[:delivery_vehicle][:vehicle_license].present?
|
11
|
+
document = Dscf::Core::Document.new(
|
12
|
+
documentable: vehicle,
|
13
|
+
document_type: :business_license
|
14
|
+
)
|
15
|
+
document.file.attach(params[:delivery_vehicle][:vehicle_license])
|
16
|
+
document.save!
|
17
|
+
end
|
18
|
+
|
19
|
+
# Handle driver license upload
|
20
|
+
if params[:delivery_vehicle][:driver_license].present?
|
21
|
+
driver_document = Dscf::Core::Document.new(
|
22
|
+
documentable: vehicle.driver,
|
23
|
+
document_type: :drivers_license
|
24
|
+
)
|
25
|
+
driver_document.file.attach(params[:delivery_vehicle][:driver_license])
|
26
|
+
driver_document.save!
|
27
|
+
end
|
28
|
+
|
29
|
+
vehicle = @clazz.includes(eager_loaded_associations).find(vehicle.id) if eager_loaded_associations.present?
|
30
|
+
includes = serializer_includes_for_action(:create)
|
31
|
+
options = {include: includes} if includes.present?
|
32
|
+
render_success(data: vehicle, serializer_options: options, status: :created)
|
33
|
+
else
|
34
|
+
render_error(errors: vehicle.errors.full_messages[0], status: :unprocessable_entity)
|
35
|
+
end
|
36
|
+
rescue => e
|
37
|
+
render_error(error: e.message)
|
38
|
+
end
|
39
|
+
|
40
|
+
def update
|
41
|
+
vehicle = @clazz.find(params[:id])
|
42
|
+
if vehicle.update(model_params.except(:vehicle_license, :driver_license))
|
43
|
+
# Handle vehicle license update/replacement
|
44
|
+
if params[:delivery_vehicle][:vehicle_license].present?
|
45
|
+
# Remove existing vehicle license if any
|
46
|
+
vehicle.documents.where(document_type: :business_license).destroy_all
|
47
|
+
|
48
|
+
# Add new vehicle license
|
49
|
+
document = Dscf::Core::Document.new(
|
50
|
+
documentable: vehicle,
|
51
|
+
document_type: :business_license
|
52
|
+
)
|
53
|
+
document.file.attach(params[:delivery_vehicle][:vehicle_license])
|
54
|
+
document.save!
|
55
|
+
end
|
56
|
+
|
57
|
+
# Handle driver license update/replacement
|
58
|
+
if params[:delivery_vehicle][:driver_license].present?
|
59
|
+
# Remove existing driver license if any
|
60
|
+
vehicle.driver.documents.where(document_type: :drivers_license).destroy_all
|
61
|
+
|
62
|
+
# Add new driver license
|
63
|
+
driver_document = Dscf::Core::Document.new(
|
64
|
+
documentable: vehicle.driver,
|
65
|
+
document_type: :drivers_license
|
66
|
+
)
|
67
|
+
driver_document.file.attach(params[:delivery_vehicle][:driver_license])
|
68
|
+
driver_document.save!
|
69
|
+
end
|
70
|
+
|
71
|
+
vehicle = @clazz.includes(eager_loaded_associations).find(vehicle.id) if eager_loaded_associations.present?
|
72
|
+
includes = serializer_includes_for_action(:update)
|
73
|
+
options = {include: includes} if includes.present?
|
74
|
+
render_success(data: vehicle, serializer_options: options)
|
75
|
+
else
|
76
|
+
render_error(errors: vehicle.errors.full_messages[0], status: :unprocessable_entity)
|
77
|
+
end
|
78
|
+
rescue => e
|
79
|
+
render_error(error: e.message)
|
80
|
+
end
|
81
|
+
|
6
82
|
private
|
7
83
|
|
8
84
|
def model_params
|
9
85
|
params.require(:delivery_vehicle).permit(
|
10
|
-
:driver_id, :plate_number, :vehicle_type, :year, :brand, :model, :color
|
86
|
+
:driver_id, :plate_number, :vehicle_type, :year, :brand, :model, :color,
|
87
|
+
vehicle_license: :file,
|
88
|
+
driver_license: :file
|
11
89
|
)
|
12
90
|
end
|
13
91
|
|
14
92
|
def eager_loaded_associations
|
15
|
-
[ :driver, :delivery_orders ]
|
93
|
+
[ :driver, :delivery_orders, :documents ]
|
16
94
|
end
|
17
95
|
|
18
96
|
def default_serializer_includes
|
19
97
|
{
|
20
|
-
index: [ :driver ],
|
21
|
-
show: [ :driver, :delivery_orders ],
|
22
|
-
create: [ :driver ],
|
23
|
-
update: [ :driver ]
|
98
|
+
index: [ :driver, :documents ],
|
99
|
+
show: [ :driver, :delivery_orders, :documents ],
|
100
|
+
create: [ :driver, :documents ],
|
101
|
+
update: [ :driver, :documents ]
|
24
102
|
}
|
25
103
|
end
|
26
104
|
end
|
@@ -5,6 +5,7 @@ module Dscf
|
|
5
5
|
|
6
6
|
belongs_to :driver, class_name: "Dscf::Core::User"
|
7
7
|
has_many :delivery_orders, dependent: :nullify
|
8
|
+
has_many :documents, as: :documentable, class_name: "Dscf::Core::Document"
|
8
9
|
|
9
10
|
validates :driver_id, presence: true
|
10
11
|
validates :plate_number, presence: true, uniqueness: true
|
@@ -20,7 +21,7 @@ module Dscf
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def self.ransackable_associations(_auth_object = nil)
|
23
|
-
%w[driver delivery_orders]
|
24
|
+
%w[driver delivery_orders documents]
|
24
25
|
end
|
25
26
|
|
26
27
|
def motorcycle?
|
@@ -65,6 +66,14 @@ module Dscf
|
|
65
66
|
return 0 if total_deliveries.zero?
|
66
67
|
(completed_deliveries.count.to_f / total_deliveries * 100).round(2)
|
67
68
|
end
|
69
|
+
|
70
|
+
def vehicle_license
|
71
|
+
documents.find_by(document_type: :business_license)
|
72
|
+
end
|
73
|
+
|
74
|
+
def driver_license
|
75
|
+
driver.documents.find_by(document_type: :drivers_license)
|
76
|
+
end
|
68
77
|
end
|
69
78
|
end
|
70
79
|
end
|
@@ -5,8 +5,9 @@ module Dscf
|
|
5
5
|
:model, :color, :created_at, :updated_at, :display_name,
|
6
6
|
:total_deliveries, :success_rate
|
7
7
|
|
8
|
-
belongs_to :driver
|
8
|
+
belongs_to :driver, serializer: Dscf::Marketplace::UserSerializer
|
9
9
|
has_many :delivery_orders
|
10
|
+
has_many :documents, each_serializer: Dscf::Marketplace::DocumentSerializer
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module Dscf
|
2
|
+
module Marketplace
|
3
|
+
class UserSerializer < ActiveModel::Serializer
|
4
|
+
attributes :id, :email, :phone, :verified_at, :temp_password, :created_at, :updated_at
|
5
|
+
|
6
|
+
has_many :documents, each_serializer: Dscf::Marketplace::DocumentSerializer
|
7
|
+
end
|
8
|
+
end
|
9
|
+
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.2.
|
4
|
+
version: 0.2.96
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Asrat
|
@@ -468,6 +468,7 @@ files:
|
|
468
468
|
- app/serializers/dscf/marketplace/supplier_product_serializer.rb
|
469
469
|
- app/serializers/dscf/marketplace/unit_conversion_serializer.rb
|
470
470
|
- app/serializers/dscf/marketplace/unit_serializer.rb
|
471
|
+
- app/serializers/dscf/marketplace/user_serializer.rb
|
471
472
|
- app/services/dscf/marketplace/my_resource_service.rb
|
472
473
|
- app/services/dscf/marketplace/rfq_response_service.rb
|
473
474
|
- config/environments/production.rb
|