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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/controllers/spree/api/v2/storefront/intercity_taxi/draft_orders_controller.rb +11 -52
  4. data/app/factory/spree_cm_commissioner/order_telegram_message_factory.rb +0 -12
  5. data/app/mailers/spree/order_mailer_decorator.rb +6 -8
  6. data/app/models/concerns/spree_cm_commissioner/line_item_transitable.rb +89 -34
  7. data/app/models/concerns/spree_cm_commissioner/service_recommendations.rb +2 -2
  8. data/app/models/spree_cm_commissioner/adjustment_decorator.rb +1 -1
  9. data/app/models/spree_cm_commissioner/order_decorator.rb +1 -1
  10. data/app/models/spree_cm_commissioner/place.rb +0 -7
  11. data/app/models/spree_cm_commissioner/tenant.rb +0 -4
  12. data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -3
  13. data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -1
  14. data/app/models/spree_cm_commissioner/vendor_place.rb +0 -9
  15. data/app/queries/spree_cm_commissioner/trip_query.rb +17 -23
  16. data/app/serializers/spree/v2/storefront/place_serializer.rb +2 -3
  17. data/app/serializers/spree/v2/tenant/cart_serializer.rb +0 -1
  18. data/app/serializers/spree/v2/tenant/line_item_serializer.rb +0 -1
  19. data/app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_line_item_serializer.rb +18 -17
  20. data/app/services/spree_cm_commissioner/intercity_taxi_order/create.rb +23 -20
  21. data/app/services/spree_cm_commissioner/intercity_taxi_order/update.rb +72 -36
  22. data/app/views/spree/order_mailer/confirm_email.html.erb +1 -1
  23. data/app/views/spree_cm_commissioner/order_mailer/_mailer_stylesheets.html.erb +13 -14
  24. data/app/views/spree_cm_commissioner/order_mailer/tenant/_greeting.html.erb +4 -6
  25. data/config/routes.rb +1 -11
  26. data/lib/spree_cm_commissioner/version.rb +1 -1
  27. data/lib/spree_cm_commissioner.rb +0 -2
  28. metadata +4 -51
  29. data/app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb +0 -63
  30. data/app/controllers/spree/api/v2/storefront/route_places_controller.rb +0 -68
  31. data/app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb +0 -81
  32. data/app/controllers/spree/api/v2/tenant/trip_places_controller.rb +0 -42
  33. data/app/controllers/spree/api/v2/tenant/trip_search_controller.rb +0 -103
  34. data/app/controllers/spree/api/v2/tenant/trips_controller.rb +0 -32
  35. data/app/finders/spree_cm_commissioner/places/find_with_route.rb +0 -43
  36. data/app/finders/spree_cm_commissioner/routes/find_popular.rb +0 -25
  37. data/app/models/spree_cm_commissioner/calculators/extra_drop_off_distance.rb +0 -15
  38. data/app/models/spree_cm_commissioner/calculators/extra_pick_up_distance.rb +0 -15
  39. data/app/models/spree_cm_commissioner/pricing_action.rb +0 -27
  40. data/app/models/spree_cm_commissioner/pricing_model.rb +0 -18
  41. data/app/models/spree_cm_commissioner/pricing_model_variant.rb +0 -6
  42. data/app/models/spree_cm_commissioner/pricing_rule.rb +0 -15
  43. data/app/models/spree_cm_commissioner/pricing_rule_group.rb +0 -20
  44. data/app/models/spree_cm_commissioner/pricing_rules/extra_drop_off_distance.rb +0 -10
  45. data/app/models/spree_cm_commissioner/pricing_rules/extra_pick_up_distance.rb +0 -12
  46. data/app/models/spree_cm_commissioner/pricing_rules/nationality.rb +0 -35
  47. data/app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_schema.rb +0 -10
  48. data/app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_update_schema.rb +0 -29
  49. data/app/request_schemas/spree_cm_commissioner/route_places_request_schema.rb +0 -12
  50. data/app/serializers/spree/v2/tenant/intercity_taxi_cart_serializer.rb +0 -12
  51. data/app/serializers/spree/v2/tenant/trip_place_serializer.rb +0 -8
  52. data/app/serializers/spree/v2/tenant/trip_query_result_serializer.rb +0 -8
  53. data/app/serializers/spree/v2/tenant/trip_serializer.rb +0 -8
  54. data/app/serializers/spree_cm_commissioner/v2/storefront/route_serializer.rb +0 -12
  55. data/app/services/spree_cm_commissioner/pricing_models/apply.rb +0 -51
  56. data/app/services/spree_cm_commissioner/pricing_rules/build_params.rb +0 -53
  57. data/app/services/spree_cm_commissioner/pricing_rules/build_template.rb +0 -27
  58. data/app/services/spree_cm_commissioner/pricing_rules/create.rb +0 -10
  59. data/app/services/spree_cm_commissioner/pricing_rules/update.rb +0 -11
  60. data/app/services/spree_cm_commissioner/vendor_places/base.rb +0 -24
  61. data/app/services/spree_cm_commissioner/vendor_places/bulk_create.rb +0 -70
  62. data/app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb +0 -85
  63. data/app/services/spree_cm_commissioner/vendor_places/update.rb +0 -56
  64. data/db/migrate/20250915075830_create_spree_cm_commissioner_pricing_models.rb +0 -17
  65. data/db/migrate/20250915080733_create_spree_cm_commissioner_pricing_model_variants.rb +0 -14
  66. data/db/migrate/20251003082144_create_spree_cm_commissioner_pricing_rule_groups.rb +0 -16
  67. data/db/migrate/20251003093408_create_spree_cm_commissioner_pricing_rule.rb +0 -19
  68. data/db/migrate/20251003093643_create_spree_cm_commissioner_pricing_action.rb +0 -14
  69. data/db/migrate/20251119093000_add_tenant_id_to_cm_vendor_places.rb +0 -8
  70. data/lib/spree_cm_commissioner/intercity_taxi/distance.rb +0 -38
  71. data/lib/spree_cm_commissioner/intercity_taxi/map_place.rb +0 -31
  72. data/lib/spree_cm_commissioner/test_helper/factories/pricing_action_factory.rb +0 -5
  73. data/lib/spree_cm_commissioner/test_helper/factories/pricing_model_factory.rb +0 -8
  74. data/lib/spree_cm_commissioner/test_helper/factories/pricing_rule_factory.rb +0 -17
  75. 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: c0ca9307610d54be6741944d0ebe1d7afc65a2769cd4efa059d71d9c1bbbdb9d
4
- data.tar.gz: 998984150b755cadaddd27b62aebd2dd227999d23e5f92829698b1d234af20a5
3
+ metadata.gz: f69009264c3f351003ddd4885f403db68bc0a589a9e28123188a26bdd382b3d6
4
+ data.tar.gz: fea37b83621c4eb39ee2936ae4d72c377ee6d0767fb240be01c2de82e63d4c83
5
5
  SHA512:
6
- metadata.gz: 8cd9413f816f3bacea04edaf65dd7536a31f933f2884015f81d11e84e1eb67b1c82a0bd910f95b017735eeaa7d1b1455ad4cec6ba678ef3ac7012bfbaa72cfc3
7
- data.tar.gz: 285883b393f3e67ab6a969b3bd13f2c468ca419e306ade9206dc0e3ead9d8c63630fc65dd67cfed1ac5517c732b8d9e675e46c9c74a9b08dcac3bf338c74f126
6
+ metadata.gz: 8530a8855d325ffae9223d3ed705be0f445bd5ce01c2479ef809f783804af5d4b90cd716a5c10076cbad561f6d57c03becf4d8ccb2e7e33bd57144c29bd1ff5e
7
+ data.tar.gz: 9d2bada64c5ac4701bb9f18d233e8948e0e8b6b9cf6fd0e923157007bd06cde7ef79b13ffa0476aad2a3ec955a268e66249b3f49097fce93136a61dfa0856f4f
data/Gemfile.lock CHANGED
@@ -34,7 +34,7 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (2.3.2.pre.pre6)
37
+ spree_cm_commissioner (2.3.2)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
@@ -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
- result = SpreeCmCommissioner::IntercityTaxiOrder::Create.call(
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
- user: spree_current_user,
12
+ user_id: params[:user_id],
18
13
  quantity: params[:quantity]
19
14
  )
20
15
 
21
- if result.success?
22
- render_serialized_payload { serialize_resource(result.value) }
23
- else
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
- result = SpreeCmCommissioner::IntercityTaxiOrder::Update.call(
30
- order: spree_current_order,
31
- remark: params[:remark],
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
- if result.success?
57
- render_serialized_payload { serialize_resource(result.value) }
58
- else
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
- ) do |format|
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 passenger_count = public_metadata['passenger_count']&.to_i
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 pickup_map_place
62
- pickup_hash = public_metadata&.dig('pickup_map_place')
63
- return nil if pickup_hash.blank?
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
- SpreeCmCommissioner::IntercityTaxi::MapPlace.from_hash(pickup_hash)
85
+ def direction=(value)
86
+ set_private_metadata_value('direction', value)
66
87
  end
67
88
 
68
- def dropoff_map_place
69
- dropoff_hash = public_metadata&.dig('dropoff_map_place')
70
- return nil if dropoff_hash.blank?
89
+ def trip_id=(value)
90
+ set_private_metadata_value('trip_id', value)
91
+ end
71
92
 
72
- SpreeCmCommissioner::IntercityTaxi::MapPlace.from_hash(dropoff_hash)
93
+ def boarding_trip_stop_id=(value)
94
+ set_private_metadata_value('boarding_trip_stop_id', value)
73
95
  end
74
96
 
75
- def distance
76
- distance_hash = public_metadata&.dig('distance')
77
- return nil if distance_hash.blank?
97
+ def drop_off_trip_stop_id=(value)
98
+ set_private_metadata_value('drop_off_trip_stop_id', value)
99
+ end
78
100
 
79
- SpreeCmCommissioner::IntercityTaxi::Distance.from_hash(distance_hash)
101
+ def pickup_oob_confirmed=(value)
102
+ set_private_metadata_value('pickup_oob_confirmed', value)
80
103
  end
81
104
 
82
- def pickup_map_place=(value)
83
- set_public_metadata_object('pickup_map_place', value)
105
+ def drop_off_oob_confirmed=(value)
106
+ set_private_metadata_value('drop_off_oob_confirmed', value)
84
107
  end
85
108
 
86
- def dropoff_map_place=(value)
87
- set_public_metadata_object('dropoff_map_place', value)
109
+ def pickup_place_name=(value)
110
+ set_public_metadata_value('pickup_place_name', value)
88
111
  end
89
112
 
90
- def distance=(value)
91
- set_public_metadata_object('distance', value)
113
+ def drop_off_place_name=(value)
114
+ set_public_metadata_value('drop_off_place_name', value)
92
115
  end
93
116
 
94
- def direction=(value)
95
- set_private_metadata_value('direction', value)
117
+ def pickup_lat=(value)
118
+ set_public_metadata_value('pickup_lat', value)
96
119
  end
97
120
 
98
- def trip_id=(value)
99
- set_private_metadata_value('trip_id', value)
121
+ def pickup_lng=(value)
122
+ set_public_metadata_value('pickup_lng', value)
100
123
  end
101
124
 
102
- def boarding_trip_stop_id=(value)
103
- set_private_metadata_value('boarding_trip_stop_id', value)
125
+ def drop_off_lat=(value)
126
+ set_public_metadata_value('drop_off_lat', value)
104
127
  end
105
128
 
106
- def drop_off_trip_stop_id=(value)
107
- set_private_metadata_value('drop_off_trip_stop_id', value)
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
- private
137
+ def distance_km=(value)
138
+ set_public_metadata_value('distance_km', value)
139
+ end
115
140
 
116
- def set_public_metadata_object(key, value)
117
- if value.nil?
118
- public_metadata.delete(key)
119
- else
120
- public_metadata[key] = value.to_h.stringify_keys
121
- end
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?(:formatted_url)
53
+ return default_link unless tenant.respond_to?(:url)
54
54
 
55
- site = tenant.formatted_url.to_s.strip
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
- base.scope :pricing_action, -> { where(source_type: 'SpreeCmCommissioner::PricingAction') }
5
+
6
6
  base.whitelisted_ransackable_attributes |= %w[payable_id]
7
7
  end
8
8
 
@@ -243,7 +243,7 @@ module SpreeCmCommissioner
243
243
 
244
244
  # override spree_vpago method
245
245
  def payment_host
246
- tenant&.formatted_url.presence || ENV.fetch('DEFAULT_URL_HOST')
246
+ tenant&.host.presence || ENV.fetch('DEFAULT_URL_HOST')
247
247
  end
248
248
 
249
249
  private
@@ -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
@@ -26,10 +26,6 @@ module SpreeCmCommissioner
26
26
  end
27
27
 
28
28
  def url
29
- host
30
- end
31
-
32
- def formatted_url
33
29
  return if host.blank?
34
30
 
35
31
  Rails.env.development? || Rails.env.test? ? "http://#{host}" : "https://#{host}"
@@ -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, :tenant_id, :number_of_guests, :route_type, :params
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, tenant_id: nil, number_of_guests: nil, params: {}) # rubocop:disable Metrics/ParameterLists
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) if vendor_id.present?
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
- scope = SpreeCmCommissioner::Trip
62
- .select(<<~SQL.squish)
63
- cm_trips.*,
64
- boarding.departure_time AS boarding_departure_time,
65
- boarding.stop_place_id AS boarding_stop_id, boarding.stop_name AS boarding_stop_name,
66
- drop_off.stop_name AS drop_off_stop_name, drop_off.stop_place_id AS drop_off_stop_id,
67
- drop_off.arrival_time AS drop_off_arrival_time,
68
- COALESCE(iv.quantity_available, 0) AS quantity_available,
69
- COALESCE(iv.max_capacity, 0) AS max_capacity,
70
- origin_places.name AS origin_place_name, dest_places.name AS destination_place_name,
71
- prices.amount AS amount, prices.compare_at_amount AS compare_at_amount,
72
- prices.currency AS currency
73
- SQL
74
- .includes(vendor: :logo, vehicle: :option_values)
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
- # Included by default, pass false to exclude
8
- has_many :vendors, if: proc { |_, params| params.nil? || params[:include_vendors] != false }
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
@@ -2,28 +2,29 @@ module SpreeCmCommissioner
2
2
  module V2
3
3
  module Storefront
4
4
  class IntercityTaxiLineItemSerializer < BaseSerializer
5
- # Nested-only API shape
6
- attributes :pickup_map_place,
7
- :dropoff_map_place,
8
- :distance,
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
- :remark,
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