dscf-marketplace 0.2.94 → 0.2.95
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0527a6d20223fad43a251608164395ab9f5980898a5842ba450e122f541b5236
|
4
|
+
data.tar.gz: 2b66ae4e2d4142eefa0f0f5449f7dcd309b98fe6126d28e515f19533ca40dd21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c79b44a67e6e072223a15f9eb89f6f7e305f091840f0e6b43975a79e4b025a92c3f391a6c7f40af84a1e0df2a4fa111be685d0cdb1bd3dd569c90b8cb91ba17
|
7
|
+
data.tar.gz: 2c83fbc4dcde1eb655eeffbb153c9f52cb80191fe533b6ec083e6d6c1a6c703a1f475b1a7959feff538408e137a6f22e94219c7be79b4ac009be66fceb4d0607
|
@@ -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
|