spree_cm_commissioner 2.3.2.pre.pre6 → 2.3.2
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/Gemfile.lock +1 -1
- data/app/controllers/spree/api/v2/storefront/intercity_taxi/draft_orders_controller.rb +11 -52
- data/app/factory/spree_cm_commissioner/order_telegram_message_factory.rb +0 -12
- data/app/mailers/spree/order_mailer_decorator.rb +6 -8
- data/app/models/concerns/spree_cm_commissioner/line_item_transitable.rb +89 -34
- data/app/models/concerns/spree_cm_commissioner/service_recommendations.rb +2 -2
- data/app/models/spree_cm_commissioner/adjustment_decorator.rb +1 -1
- data/app/models/spree_cm_commissioner/order_decorator.rb +1 -1
- data/app/models/spree_cm_commissioner/place.rb +0 -7
- data/app/models/spree_cm_commissioner/tenant.rb +0 -4
- data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -3
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -1
- data/app/models/spree_cm_commissioner/vendor_place.rb +0 -9
- data/app/queries/spree_cm_commissioner/trip_query.rb +17 -23
- data/app/serializers/spree/v2/storefront/place_serializer.rb +2 -3
- data/app/serializers/spree/v2/tenant/cart_serializer.rb +0 -1
- data/app/serializers/spree/v2/tenant/line_item_serializer.rb +0 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_line_item_serializer.rb +18 -17
- data/app/services/spree_cm_commissioner/intercity_taxi_order/create.rb +23 -20
- data/app/services/spree_cm_commissioner/intercity_taxi_order/update.rb +72 -36
- data/app/views/spree/order_mailer/confirm_email.html.erb +1 -1
- data/app/views/spree_cm_commissioner/order_mailer/_mailer_stylesheets.html.erb +13 -14
- data/app/views/spree_cm_commissioner/order_mailer/tenant/_greeting.html.erb +4 -6
- data/config/routes.rb +1 -11
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +0 -2
- metadata +4 -51
- data/app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb +0 -63
- data/app/controllers/spree/api/v2/storefront/route_places_controller.rb +0 -68
- data/app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb +0 -81
- data/app/controllers/spree/api/v2/tenant/trip_places_controller.rb +0 -42
- data/app/controllers/spree/api/v2/tenant/trip_search_controller.rb +0 -103
- data/app/controllers/spree/api/v2/tenant/trips_controller.rb +0 -32
- data/app/finders/spree_cm_commissioner/places/find_with_route.rb +0 -43
- data/app/finders/spree_cm_commissioner/routes/find_popular.rb +0 -25
- data/app/models/spree_cm_commissioner/calculators/extra_drop_off_distance.rb +0 -15
- data/app/models/spree_cm_commissioner/calculators/extra_pick_up_distance.rb +0 -15
- data/app/models/spree_cm_commissioner/pricing_action.rb +0 -27
- data/app/models/spree_cm_commissioner/pricing_model.rb +0 -18
- data/app/models/spree_cm_commissioner/pricing_model_variant.rb +0 -6
- data/app/models/spree_cm_commissioner/pricing_rule.rb +0 -15
- data/app/models/spree_cm_commissioner/pricing_rule_group.rb +0 -20
- data/app/models/spree_cm_commissioner/pricing_rules/extra_drop_off_distance.rb +0 -10
- data/app/models/spree_cm_commissioner/pricing_rules/extra_pick_up_distance.rb +0 -12
- data/app/models/spree_cm_commissioner/pricing_rules/nationality.rb +0 -35
- data/app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_schema.rb +0 -10
- data/app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_update_schema.rb +0 -29
- data/app/request_schemas/spree_cm_commissioner/route_places_request_schema.rb +0 -12
- data/app/serializers/spree/v2/tenant/intercity_taxi_cart_serializer.rb +0 -12
- data/app/serializers/spree/v2/tenant/trip_place_serializer.rb +0 -8
- data/app/serializers/spree/v2/tenant/trip_query_result_serializer.rb +0 -8
- data/app/serializers/spree/v2/tenant/trip_serializer.rb +0 -8
- data/app/serializers/spree_cm_commissioner/v2/storefront/route_serializer.rb +0 -12
- data/app/services/spree_cm_commissioner/pricing_models/apply.rb +0 -51
- data/app/services/spree_cm_commissioner/pricing_rules/build_params.rb +0 -53
- data/app/services/spree_cm_commissioner/pricing_rules/build_template.rb +0 -27
- data/app/services/spree_cm_commissioner/pricing_rules/create.rb +0 -10
- data/app/services/spree_cm_commissioner/pricing_rules/update.rb +0 -11
- data/app/services/spree_cm_commissioner/vendor_places/base.rb +0 -24
- data/app/services/spree_cm_commissioner/vendor_places/bulk_create.rb +0 -70
- data/app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb +0 -85
- data/app/services/spree_cm_commissioner/vendor_places/update.rb +0 -56
- data/db/migrate/20250915075830_create_spree_cm_commissioner_pricing_models.rb +0 -17
- data/db/migrate/20250915080733_create_spree_cm_commissioner_pricing_model_variants.rb +0 -14
- data/db/migrate/20251003082144_create_spree_cm_commissioner_pricing_rule_groups.rb +0 -16
- data/db/migrate/20251003093408_create_spree_cm_commissioner_pricing_rule.rb +0 -19
- data/db/migrate/20251003093643_create_spree_cm_commissioner_pricing_action.rb +0 -14
- data/db/migrate/20251119093000_add_tenant_id_to_cm_vendor_places.rb +0 -8
- data/lib/spree_cm_commissioner/intercity_taxi/distance.rb +0 -38
- data/lib/spree_cm_commissioner/intercity_taxi/map_place.rb +0 -31
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_action_factory.rb +0 -5
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_model_factory.rb +0 -8
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_rule_factory.rb +0 -17
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_rule_group_factory.rb +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f69009264c3f351003ddd4885f403db68bc0a589a9e28123188a26bdd382b3d6
|
|
4
|
+
data.tar.gz: fea37b83621c4eb39ee2936ae4d72c377ee6d0767fb240be01c2de82e63d4c83
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8530a8855d325ffae9223d3ed705be0f445bd5ce01c2479ef809f783804af5d4b90cd716a5c10076cbad561f6d57c03becf4d8ccb2e7e33bd57144c29bd1ff5e
|
|
7
|
+
data.tar.gz: 9d2bada64c5ac4701bb9f18d233e8948e0e8b6b9cf6fd0e923157007bd06cde7ef79b13ffa0476aad2a3ec955a268e66249b3f49097fce93136a61dfa0856f4f
|
data/Gemfile.lock
CHANGED
|
@@ -4,70 +4,29 @@ module Spree
|
|
|
4
4
|
module Storefront
|
|
5
5
|
module IntercityTaxi
|
|
6
6
|
class DraftOrdersController < ::Spree::Api::V2::ResourceController
|
|
7
|
-
include Spree::Api::V2::Storefront::OrderConcern
|
|
8
|
-
include SpreeCmCommissioner::OrderConcern
|
|
9
|
-
|
|
10
|
-
before_action :ensure_order, only: :update
|
|
11
|
-
|
|
12
7
|
def create
|
|
13
|
-
|
|
8
|
+
order = SpreeCmCommissioner::IntercityTaxiOrder::Create.call(
|
|
14
9
|
trip_id: params[:trip_id],
|
|
15
10
|
from_date: params[:from_date],
|
|
16
11
|
to_date: params[:to_date],
|
|
17
|
-
|
|
12
|
+
user_id: params[:user_id],
|
|
18
13
|
quantity: params[:quantity]
|
|
19
14
|
)
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
render_error_payload(result.error)
|
|
25
|
-
end
|
|
16
|
+
render_serialized_payload { serialize_resource(order) }
|
|
17
|
+
rescue StandardError => e
|
|
18
|
+
render_error_payload(e.message)
|
|
26
19
|
end
|
|
27
20
|
|
|
28
21
|
def update
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
pickup_map_place_attributes: params.require(:pickup_map_place_attributes).permit(
|
|
33
|
-
:place_name,
|
|
34
|
-
:lat,
|
|
35
|
-
:lng,
|
|
36
|
-
:oob_confirmed
|
|
37
|
-
),
|
|
38
|
-
dropoff_map_place_attributes: params.require(:dropoff_map_place_attributes).permit(
|
|
39
|
-
:place_name,
|
|
40
|
-
:lat,
|
|
41
|
-
:lng,
|
|
42
|
-
:oob_confirmed
|
|
43
|
-
),
|
|
44
|
-
distance_attributes: params.require(:distance_attributes).permit(
|
|
45
|
-
:distance_km,
|
|
46
|
-
:ordered_points,
|
|
47
|
-
:estimated_time_minutes,
|
|
48
|
-
:base_km,
|
|
49
|
-
:detour_pickup_km,
|
|
50
|
-
:detour_dropoff_km,
|
|
51
|
-
:extra_pickup_km,
|
|
52
|
-
:extra_dropoff_km
|
|
53
|
-
)
|
|
22
|
+
order = SpreeCmCommissioner::IntercityTaxiOrder::Update.call(
|
|
23
|
+
order_number: params[:id],
|
|
24
|
+
params: params
|
|
54
25
|
)
|
|
55
26
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
render_error_payload(result.error)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
private
|
|
64
|
-
|
|
65
|
-
def required_schema
|
|
66
|
-
if action_name == 'create'
|
|
67
|
-
SpreeCmCommissioner::IntercityTaxiDraftOrderSchema
|
|
68
|
-
else
|
|
69
|
-
SpreeCmCommissioner::IntercityTaxiDraftOrderUpdateSchema
|
|
70
|
-
end
|
|
27
|
+
render_serialized_payload { serialize_resource(order) }
|
|
28
|
+
rescue StandardError => e
|
|
29
|
+
render_error_payload(e.message)
|
|
71
30
|
end
|
|
72
31
|
|
|
73
32
|
def resource_serializer
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
# Name: Vaneath Awesome
|
|
20
20
|
# Tel: <code>+85570760548</code>
|
|
21
21
|
# Email: <code>admin_dev@cm.com</code>
|
|
22
|
-
# Delivery Address: #123, St. 456, Phnom Penh
|
|
23
22
|
|
|
24
23
|
module SpreeCmCommissioner
|
|
25
24
|
class OrderTelegramMessageFactory < TelegramMessageFactory
|
|
@@ -80,7 +79,6 @@ module SpreeCmCommissioner
|
|
|
80
79
|
text << "Name: #{order.name}"
|
|
81
80
|
text << "Tel: #{inline_code(order.intel_phone_number || order.phone_number)}"
|
|
82
81
|
text << "Email: #{inline_code(order.email)}" if order.email.present?
|
|
83
|
-
text << "Delivery Address: #{formatted_shipping_address.presence || 'N/A'}" if order.delivery_required?
|
|
84
82
|
|
|
85
83
|
if show_details_link && order.guests.any?
|
|
86
84
|
text << ''
|
|
@@ -91,16 +89,6 @@ module SpreeCmCommissioner
|
|
|
91
89
|
text.compact.join("\n")
|
|
92
90
|
end
|
|
93
91
|
|
|
94
|
-
def formatted_shipping_address
|
|
95
|
-
return 'N/A' if order.shipping_address.blank?
|
|
96
|
-
|
|
97
|
-
@formatted_shipping_address ||= [
|
|
98
|
-
order.shipping_address.address1,
|
|
99
|
-
order.shipping_address.address2,
|
|
100
|
-
order.shipping_address.state&.name
|
|
101
|
-
].compact.compact_blank.join(', ')
|
|
102
|
-
end
|
|
103
|
-
|
|
104
92
|
# Result:
|
|
105
93
|
# | No. A24 | No. A24 |
|
|
106
94
|
# | No. A24 | No. A24 |
|
|
@@ -12,20 +12,14 @@ module Spree
|
|
|
12
12
|
return false if @order.email.blank?
|
|
13
13
|
|
|
14
14
|
setup_tenant_and_store
|
|
15
|
-
if @tenant.present?
|
|
16
|
-
@name = @order.tenant.name
|
|
17
|
-
@logo = @order.tenant.active_vendor&.logo&.original_url
|
|
18
|
-
@brand_color = @order.tenant.preferred_brand_primary_color
|
|
19
|
-
end
|
|
20
15
|
@product_type = @order.products.first&.product_type || 'accommodation'
|
|
21
16
|
|
|
22
17
|
subject = build_subject(resend)
|
|
23
18
|
|
|
24
19
|
mail(to: @order.email,
|
|
25
|
-
from: from_email_address,
|
|
26
|
-
subject: subject,
|
|
20
|
+
from: from_email_address, subject: subject,
|
|
27
21
|
store_url: store_url
|
|
28
|
-
|
|
22
|
+
) do |format|
|
|
29
23
|
format.html { render layout: 'spree_cm_commissioner/layouts/order_mailer' }
|
|
30
24
|
format.text
|
|
31
25
|
end
|
|
@@ -44,6 +38,10 @@ module Spree
|
|
|
44
38
|
def setup_tenant_and_store
|
|
45
39
|
@tenant = @order.tenant
|
|
46
40
|
@current_store = @order.store
|
|
41
|
+
return if @tenant.blank?
|
|
42
|
+
|
|
43
|
+
@brand_color = @tenant.preferences[:brand_primary_color]
|
|
44
|
+
@vendor_logo_url = @tenant.active_vendor&.logo&.original_url
|
|
47
45
|
end
|
|
48
46
|
|
|
49
47
|
def build_subject(resend)
|
|
@@ -27,6 +27,11 @@ module SpreeCmCommissioner
|
|
|
27
27
|
validates :boarding_trip_stop_id, numericality: { only_integer: true, greater_than: 0 }, allow_nil: true
|
|
28
28
|
validates :drop_off_trip_stop_id, numericality: { only_integer: true, greater_than: 0 }, allow_nil: true
|
|
29
29
|
|
|
30
|
+
validates :pickup_lat, numericality: { greater_than_or_equal_to: -90, less_than_or_equal_to: 90 }, allow_nil: true
|
|
31
|
+
validates :pickup_lng, numericality: { greater_than_or_equal_to: -180, less_than_or_equal_to: 180 }, allow_nil: true
|
|
32
|
+
validates :drop_off_lat, numericality: { greater_than_or_equal_to: -90, less_than_or_equal_to: 90 }, allow_nil: true
|
|
33
|
+
validates :drop_off_lng, numericality: { greater_than_or_equal_to: -180, less_than_or_equal_to: 180 }, allow_nil: true
|
|
34
|
+
|
|
30
35
|
validates :passenger_count, numericality: { only_integer: true, greater_than: 0 }, allow_nil: true
|
|
31
36
|
|
|
32
37
|
# Groups LineItems by trip fields. Some fields can be null,
|
|
@@ -56,71 +61,121 @@ module SpreeCmCommissioner
|
|
|
56
61
|
def boarding_trip_stop_id = private_metadata['boarding_trip_stop_id']&.to_i
|
|
57
62
|
def drop_off_trip_stop_id = private_metadata['drop_off_trip_stop_id']&.to_i
|
|
58
63
|
|
|
59
|
-
def
|
|
64
|
+
def pickup_place_name = public_metadata['pickup_place_name']
|
|
65
|
+
def drop_off_place_name = public_metadata['drop_off_place_name']
|
|
60
66
|
|
|
61
|
-
def
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
def pickup_lat = public_metadata['pickup_lat']&.to_f
|
|
68
|
+
def pickup_lng = public_metadata['pickup_lng']&.to_f
|
|
69
|
+
def drop_off_lat = public_metadata['drop_off_lat']&.to_f
|
|
70
|
+
def drop_off_lng = public_metadata['drop_off_lng']&.to_f
|
|
71
|
+
def passenger_count = public_metadata['passenger_count']&.to_i
|
|
72
|
+
def distance_km = public_metadata['distance_km']&.to_f
|
|
73
|
+
def ordered_points = public_metadata['ordered_points']
|
|
74
|
+
def base_km = public_metadata['base_km']&.to_f
|
|
75
|
+
def detour_pickup_km = public_metadata['detour_pickup_km']&.to_f
|
|
76
|
+
def detour_dropoff_km = public_metadata['detour_dropoff_km']&.to_f
|
|
77
|
+
def extra_pickup_km = public_metadata['extra_pickup_km']&.to_f
|
|
78
|
+
def extra_dropoff_km = public_metadata['extra_dropoff_km']&.to_f
|
|
79
|
+
def extra_pickup_charge_usd = public_metadata['extra_pickup_charge_usd']&.to_f
|
|
80
|
+
def extra_dropoff_charge_usd = public_metadata['extra_dropoff_charge_usd']&.to_f
|
|
81
|
+
def estimated_time_minutes = public_metadata['estimated_time_minutes']&.to_i
|
|
82
|
+
def pickup_oob_confirmed = private_metadata['pickup_oob_confirmed']
|
|
83
|
+
def drop_off_oob_confirmed = private_metadata['drop_off_oob_confirmed']
|
|
64
84
|
|
|
65
|
-
|
|
85
|
+
def direction=(value)
|
|
86
|
+
set_private_metadata_value('direction', value)
|
|
66
87
|
end
|
|
67
88
|
|
|
68
|
-
def
|
|
69
|
-
|
|
70
|
-
|
|
89
|
+
def trip_id=(value)
|
|
90
|
+
set_private_metadata_value('trip_id', value)
|
|
91
|
+
end
|
|
71
92
|
|
|
72
|
-
|
|
93
|
+
def boarding_trip_stop_id=(value)
|
|
94
|
+
set_private_metadata_value('boarding_trip_stop_id', value)
|
|
73
95
|
end
|
|
74
96
|
|
|
75
|
-
def
|
|
76
|
-
|
|
77
|
-
|
|
97
|
+
def drop_off_trip_stop_id=(value)
|
|
98
|
+
set_private_metadata_value('drop_off_trip_stop_id', value)
|
|
99
|
+
end
|
|
78
100
|
|
|
79
|
-
|
|
101
|
+
def pickup_oob_confirmed=(value)
|
|
102
|
+
set_private_metadata_value('pickup_oob_confirmed', value)
|
|
80
103
|
end
|
|
81
104
|
|
|
82
|
-
def
|
|
83
|
-
|
|
105
|
+
def drop_off_oob_confirmed=(value)
|
|
106
|
+
set_private_metadata_value('drop_off_oob_confirmed', value)
|
|
84
107
|
end
|
|
85
108
|
|
|
86
|
-
def
|
|
87
|
-
|
|
109
|
+
def pickup_place_name=(value)
|
|
110
|
+
set_public_metadata_value('pickup_place_name', value)
|
|
88
111
|
end
|
|
89
112
|
|
|
90
|
-
def
|
|
91
|
-
|
|
113
|
+
def drop_off_place_name=(value)
|
|
114
|
+
set_public_metadata_value('drop_off_place_name', value)
|
|
92
115
|
end
|
|
93
116
|
|
|
94
|
-
def
|
|
95
|
-
|
|
117
|
+
def pickup_lat=(value)
|
|
118
|
+
set_public_metadata_value('pickup_lat', value)
|
|
96
119
|
end
|
|
97
120
|
|
|
98
|
-
def
|
|
99
|
-
|
|
121
|
+
def pickup_lng=(value)
|
|
122
|
+
set_public_metadata_value('pickup_lng', value)
|
|
100
123
|
end
|
|
101
124
|
|
|
102
|
-
def
|
|
103
|
-
|
|
125
|
+
def drop_off_lat=(value)
|
|
126
|
+
set_public_metadata_value('drop_off_lat', value)
|
|
104
127
|
end
|
|
105
128
|
|
|
106
|
-
def
|
|
107
|
-
|
|
129
|
+
def drop_off_lng=(value)
|
|
130
|
+
set_public_metadata_value('drop_off_lng', value)
|
|
108
131
|
end
|
|
109
132
|
|
|
110
133
|
def passenger_count=(value)
|
|
111
134
|
set_public_metadata_value('passenger_count', value)
|
|
112
135
|
end
|
|
113
136
|
|
|
114
|
-
|
|
137
|
+
def distance_km=(value)
|
|
138
|
+
set_public_metadata_value('distance_km', value)
|
|
139
|
+
end
|
|
115
140
|
|
|
116
|
-
def
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
141
|
+
def ordered_points=(value)
|
|
142
|
+
set_public_metadata_value('ordered_points', value)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def base_km=(value)
|
|
146
|
+
set_public_metadata_value('base_km', value)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def detour_pickup_km=(value)
|
|
150
|
+
set_public_metadata_value('detour_pickup_km', value)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def detour_dropoff_km=(value)
|
|
154
|
+
set_public_metadata_value('detour_dropoff_km', value)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def extra_pickup_km=(value)
|
|
158
|
+
set_public_metadata_value('extra_pickup_km', value)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def extra_dropoff_km=(value)
|
|
162
|
+
set_public_metadata_value('extra_dropoff_km', value)
|
|
122
163
|
end
|
|
123
164
|
|
|
165
|
+
def extra_pickup_charge_usd=(value)
|
|
166
|
+
set_public_metadata_value('extra_pickup_charge_usd', value)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def extra_dropoff_charge_usd=(value)
|
|
170
|
+
set_public_metadata_value('extra_dropoff_charge_usd', value)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def estimated_time_minutes=(value)
|
|
174
|
+
set_public_metadata_value('estimated_time_minutes', value)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
private
|
|
178
|
+
|
|
124
179
|
def set_public_metadata_value(key, value)
|
|
125
180
|
if value.nil?
|
|
126
181
|
public_metadata.delete(key)
|
|
@@ -50,9 +50,9 @@ module SpreeCmCommissioner
|
|
|
50
50
|
private
|
|
51
51
|
|
|
52
52
|
def tenant_link_or_default(tenant, default_link)
|
|
53
|
-
return default_link unless tenant.respond_to?(:
|
|
53
|
+
return default_link unless tenant.respond_to?(:url)
|
|
54
54
|
|
|
55
|
-
site = tenant.
|
|
55
|
+
site = tenant.url.to_s.strip
|
|
56
56
|
site.presence || default_link
|
|
57
57
|
rescue StandardError
|
|
58
58
|
default_link
|
|
@@ -2,7 +2,7 @@ module SpreeCmCommissioner
|
|
|
2
2
|
module AdjustmentDecorator
|
|
3
3
|
def self.prepended(base)
|
|
4
4
|
base.belongs_to :payable, polymorphic: true, optional: true
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
base.whitelisted_ransackable_attributes |= %w[payable_id]
|
|
7
7
|
end
|
|
8
8
|
|
|
@@ -21,13 +21,6 @@ module SpreeCmCommissioner
|
|
|
21
21
|
has_many :taxon_places, class_name: 'SpreeCmCommissioner::TaxonPlace', dependent: :destroy
|
|
22
22
|
has_many :taxons, through: :taxon_places
|
|
23
23
|
|
|
24
|
-
has_many :routes_as_origin, class_name: 'SpreeCmCommissioner::Route', foreign_key: :origin_place_id
|
|
25
|
-
has_many :routes_as_destination, class_name: 'SpreeCmCommissioner::Route', foreign_key: :destination_place_id
|
|
26
|
-
|
|
27
|
-
# Scopes for route-based filtering
|
|
28
|
-
scope :with_routes_as_origin, -> { joins(:routes_as_origin).distinct }
|
|
29
|
-
scope :with_routes_as_destination, -> { joins(:routes_as_destination).distinct }
|
|
30
|
-
|
|
31
24
|
def self.ransackable_attributes(auth_object = nil)
|
|
32
25
|
super & %w[name code]
|
|
33
26
|
end
|
|
@@ -30,9 +30,6 @@ module SpreeCmCommissioner
|
|
|
30
30
|
|
|
31
31
|
base.has_many :inventory_items, class_name: 'SpreeCmCommissioner::InventoryItem'
|
|
32
32
|
|
|
33
|
-
base.has_many :pricing_model_variants, class_name: 'SpreeCmCommissioner::PricingModelVariant', dependent: :destroy
|
|
34
|
-
base.has_many :pricing_models, through: :pricing_model_variants, class_name: 'SpreeCmCommissioner::PricingModel'
|
|
35
|
-
|
|
36
33
|
base.scope :subscribable, -> { active.joins(:product).where(product: { subscribable: true, status: :active }) }
|
|
37
34
|
base.scope :with_permanent_stock, -> { where(product_type: base::PERMANENT_STOCK_PRODUCT_TYPES) }
|
|
38
35
|
base.scope :with_non_permanent_stock, -> { where.not(product_type: base::PERMANENT_STOCK_PRODUCT_TYPES) }
|
|
@@ -91,7 +91,6 @@ module SpreeCmCommissioner
|
|
|
91
91
|
base.has_many :trip_stops, through: :trips, class_name: 'SpreeCmCommissioner::TripStop'
|
|
92
92
|
base.has_many :boarding_trip_stops, through: :trips, class_name: 'SpreeCmCommissioner::TripStop', source: :boarding_trip_stops
|
|
93
93
|
base.has_many :drop_off_trip_stops, through: :trips, class_name: 'SpreeCmCommissioner::TripStop', source: :drop_off_trip_stops
|
|
94
|
-
base.has_many :pricing_models, class_name: 'SpreeCmCommissioner::PricingModel', foreign_key: :vendor_id, dependent: :destroy
|
|
95
94
|
|
|
96
95
|
base.validates :account_name, :account_number, presence: true, if: lambda {
|
|
97
96
|
payment_qrcode.present? && Spree::Store.default.code.include?('billing')
|
|
@@ -3,7 +3,6 @@ module SpreeCmCommissioner
|
|
|
3
3
|
enum place_type: { venue: 0, branch: 1, stop: 2, location: 3 }
|
|
4
4
|
acts_as_list scope: :vendor
|
|
5
5
|
|
|
6
|
-
belongs_to :tenant, class_name: 'SpreeCmCommissioner::Tenant', optional: true
|
|
7
6
|
belongs_to :vendor, class_name: 'Spree::Vendor', optional: false
|
|
8
7
|
belongs_to :place, class_name: 'SpreeCmCommissioner::Place', optional: false
|
|
9
8
|
belongs_to :location, class_name: 'SpreeCmCommissioner::VendorPlace', optional: true
|
|
@@ -17,8 +16,6 @@ module SpreeCmCommissioner
|
|
|
17
16
|
|
|
18
17
|
accepts_nested_attributes_for :place, allow_destroy: true
|
|
19
18
|
|
|
20
|
-
before_save :set_tenant_id
|
|
21
|
-
|
|
22
19
|
# include place when using these delegate to avoid N+1
|
|
23
20
|
def display_name
|
|
24
21
|
place&.name
|
|
@@ -31,11 +28,5 @@ module SpreeCmCommissioner
|
|
|
31
28
|
def selected
|
|
32
29
|
vendor.selected_place_references.include?(place&.reference)
|
|
33
30
|
end
|
|
34
|
-
|
|
35
|
-
private
|
|
36
|
-
|
|
37
|
-
def set_tenant_id
|
|
38
|
-
self.tenant_id = vendor&.tenant_id
|
|
39
|
-
end
|
|
40
31
|
end
|
|
41
32
|
end
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
module SpreeCmCommissioner
|
|
2
2
|
class TripQuery
|
|
3
|
-
attr_reader :origin_id, :destination_id, :date, :vendor_id, :
|
|
3
|
+
attr_reader :origin_id, :destination_id, :date, :vendor_id, :number_of_guests, :route_type, :params
|
|
4
4
|
|
|
5
|
-
def initialize(origin_id:, destination_id:, date:, route_type: nil, vendor_id: nil,
|
|
5
|
+
def initialize(origin_id:, destination_id:, date:, route_type: nil, vendor_id: nil, number_of_guests: nil, params: {}) # rubocop:disable Metrics/ParameterLists
|
|
6
6
|
@origin_id = origin_id
|
|
7
7
|
@destination_id = destination_id
|
|
8
8
|
@date = date.to_date == Time.zone.now.to_date ? Time.zone.now : Time.zone.parse(date.to_s)
|
|
9
9
|
@vendor_id = vendor_id
|
|
10
|
-
@tenant_id = tenant_id
|
|
11
10
|
@number_of_guests = number_of_guests || 1
|
|
12
11
|
@route_type = route_type
|
|
13
12
|
@params = params
|
|
@@ -37,9 +36,8 @@ module SpreeCmCommissioner
|
|
|
37
36
|
|
|
38
37
|
def direct_trips
|
|
39
38
|
result = trip_scope
|
|
40
|
-
result = result.where({ vendor_id: vendor_id }.compact)
|
|
39
|
+
result = result.where({ vendor_id: vendor_id }.compact)
|
|
41
40
|
result = result.where(route_type: route_type) if route_type.present?
|
|
42
|
-
result = result.where(spree_vendors: { tenant_id: tenant_id }) if tenant_id.present?
|
|
43
41
|
paginate(result)
|
|
44
42
|
end
|
|
45
43
|
|
|
@@ -58,24 +56,20 @@ module SpreeCmCommissioner
|
|
|
58
56
|
private
|
|
59
57
|
|
|
60
58
|
def trip_scope
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
scope = scope.joins(:vendor) if tenant_id.present?
|
|
77
|
-
|
|
78
|
-
scope
|
|
59
|
+
SpreeCmCommissioner::Trip
|
|
60
|
+
.select(<<~SQL.squish)
|
|
61
|
+
cm_trips.*,
|
|
62
|
+
boarding.departure_time AS boarding_departure_time,
|
|
63
|
+
boarding.stop_place_id AS boarding_stop_id, boarding.stop_name AS boarding_stop_name,
|
|
64
|
+
drop_off.stop_name AS drop_off_stop_name, drop_off.stop_place_id AS drop_off_stop_id,
|
|
65
|
+
drop_off.arrival_time AS drop_off_arrival_time,
|
|
66
|
+
COALESCE(iv.quantity_available, 0) AS quantity_available,
|
|
67
|
+
COALESCE(iv.max_capacity, 0) AS max_capacity,
|
|
68
|
+
origin_places.name AS origin_place_name, dest_places.name AS destination_place_name,
|
|
69
|
+
prices.amount AS amount, prices.compare_at_amount AS compare_at_amount,
|
|
70
|
+
prices.currency AS currency
|
|
71
|
+
SQL
|
|
72
|
+
.includes(vendor: :logo, vehicle: :option_values)
|
|
79
73
|
.joins(<<~SQL.squish)
|
|
80
74
|
INNER JOIN cm_trip_stops AS boarding ON boarding.trip_id = cm_trips.id AND boarding.stop_type = 0
|
|
81
75
|
INNER JOIN cm_trip_stops AS drop_off ON drop_off.trip_id = cm_trips.id AND drop_off.stop_type = 1
|
|
@@ -4,9 +4,8 @@ module Spree
|
|
|
4
4
|
class PlaceSerializer < BaseSerializer
|
|
5
5
|
set_type :place
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
has_many :
|
|
9
|
-
has_many :nearby_places, serializer: :nearby_place, if: proc { |_, params| params.nil? || params[:include_nearby_places] != false }
|
|
7
|
+
has_many :vendors
|
|
8
|
+
has_many :nearby_places, serializer: :nearby_place
|
|
10
9
|
|
|
11
10
|
attributes :reference, :name, :vicinity, :lat, :lon, :icon, :url, :rating,
|
|
12
11
|
:formatted_phone_number, :formatted_address, :address_components, :types
|
|
@@ -20,7 +20,6 @@ module Spree
|
|
|
20
20
|
has_many :promotions, object_method_name: :valid_promotions, id_method_name: :valid_promotion_ids,
|
|
21
21
|
serializer: Spree::V2::Storefront::PromotionSerializer
|
|
22
22
|
|
|
23
|
-
has_many :saved_guests, serializer: SpreeCmCommissioner::V2::Storefront::SavedGuestSerializer
|
|
24
23
|
has_many :variants, serializer: Spree::V2::Tenant::VariantSerializer
|
|
25
24
|
has_many :products, serializer: Spree::V2::Tenant::ProductSerializer
|
|
26
25
|
has_many :line_items, serializer: Spree::V2::Tenant::LineItemSerializer
|
|
@@ -20,7 +20,6 @@ module Spree
|
|
|
20
20
|
|
|
21
21
|
has_one :vendor, serializer: Spree::V2::Tenant::VendorSerializer
|
|
22
22
|
has_one :product, serializer: Spree::V2::Storefront::ProductSerializer
|
|
23
|
-
has_many :saved_guests, serializer: SpreeCmCommissioner::V2::Storefront::SavedGuestSerializer
|
|
24
23
|
|
|
25
24
|
belongs_to :variant, serializer: Spree::V2::Tenant::VariantSerializer
|
|
26
25
|
belongs_to :order, serializer: Spree::V2::Tenant::OrderSerializer
|
data/app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_line_item_serializer.rb
CHANGED
|
@@ -2,28 +2,29 @@ module SpreeCmCommissioner
|
|
|
2
2
|
module V2
|
|
3
3
|
module Storefront
|
|
4
4
|
class IntercityTaxiLineItemSerializer < BaseSerializer
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
:
|
|
8
|
-
:
|
|
5
|
+
attributes :pickup_place_name,
|
|
6
|
+
:drop_off_place_name,
|
|
7
|
+
:pickup_lat,
|
|
8
|
+
:pickup_lng,
|
|
9
|
+
:drop_off_lat,
|
|
10
|
+
:drop_off_lng,
|
|
11
|
+
:passenger_count,
|
|
12
|
+
:distance_km,
|
|
13
|
+
:ordered_points,
|
|
14
|
+
:base_km,
|
|
15
|
+
:detour_pickup_km,
|
|
16
|
+
:detour_dropoff_km,
|
|
17
|
+
:extra_pickup_km,
|
|
18
|
+
:extra_dropoff_km,
|
|
19
|
+
:extra_pickup_charge_usd,
|
|
20
|
+
:extra_dropoff_charge_usd,
|
|
21
|
+
:estimated_time_minutes,
|
|
9
22
|
:from_date,
|
|
10
23
|
:to_date,
|
|
11
|
-
:
|
|
24
|
+
:direction,
|
|
12
25
|
:trip_id
|
|
13
26
|
|
|
14
27
|
cache_options store: nil
|
|
15
|
-
|
|
16
|
-
def pickup_map_place
|
|
17
|
-
object.pickup_map_place&.to_h
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def dropoff_map_place
|
|
21
|
-
object.dropoff_map_place&.to_h
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def distance
|
|
25
|
-
object.distance&.to_h
|
|
26
|
-
end
|
|
27
28
|
end
|
|
28
29
|
end
|
|
29
30
|
end
|