OnlyBiggg commited on
Commit
53e9f0b
·
1 Parent(s): 43e4baf
app/dialogflow/api/v1/dialogflow.py CHANGED
@@ -308,13 +308,10 @@ async def get_trip_list(request: Request) -> Response:
308
  if len(data) > 0:
309
  ################################## bug choox nay
310
 
311
- if origin_office:
312
- origin_id = origin_ids
313
- if dest_office:
314
- dest_id = dest_ids
315
 
316
  ## Chưa tìm được
317
- trip_by_time_office = dialog_service.get_trip_by_time_and_office_id(data, time, origin_id, dest_id)
318
  # Nếu có chuyến xe theo thời gian và văn phòng chỉ định
319
  if trip_by_time_office:
320
  print(trip_by_time_office)
@@ -327,11 +324,11 @@ async def get_trip_list(request: Request) -> Response:
327
 
328
  # Danh sách chuyến xe khớp với văn phòng đón hoặc văn phòng trả
329
  if origin_office and dest_office:
330
- data_by_office = dialog_service.get_all_trip_by_office(data, origin_id, dest_id)
331
  elif origin_office:
332
- data_by_office = dialog_service.get_all_trip_by_office(data,origin_id=origin_id)
333
  elif dest_office:
334
- data_by_office = dialog_service.get_all_trip_by_office(data, dest_id=dest_id)
335
  else:
336
  data_by_office = data
337
  # Tìm 4 chuyến xe gần thời gian chỉ định nhất
 
308
  if len(data) > 0:
309
  ################################## bug choox nay
310
 
311
+ if origin_office and dest_office:
 
 
 
312
 
313
  ## Chưa tìm được
314
+ trip_by_time_office = dialog_service.get_trip_by_time_and_office_id(data, time, origin_ids, dest_ids)
315
  # Nếu có chuyến xe theo thời gian và văn phòng chỉ định
316
  if trip_by_time_office:
317
  print(trip_by_time_office)
 
324
 
325
  # Danh sách chuyến xe khớp với văn phòng đón hoặc văn phòng trả
326
  if origin_office and dest_office:
327
+ data_by_office = dialog_service.get_all_trip_by_office(data, origin_ids, dest_ids)
328
  elif origin_office:
329
+ data_by_office = dialog_service.get_all_trip_by_office(data,origin_id=origin_ids)
330
  elif dest_office:
331
+ data_by_office = dialog_service.get_all_trip_by_office(data, dest_id=dest_ids)
332
  else:
333
  data_by_office = data
334
  # Tìm 4 chuyến xe gần thời gian chỉ định nhất
app/dialogflow/services/dialog_service.py CHANGED
@@ -140,17 +140,25 @@ class DialogService:
140
 
141
  result = []
142
  for trip in trips:
143
- if origin_id and dest_id:
144
- if trip["route"]["origin_hub_office_id"] == origin_id and trip["route"]["dest_hub_office_id"] == dest_id:
145
- result.append(trip)
146
- elif origin_id:
147
- if trip["route"]["origin_hub_office_id"] == origin_id:
148
- result.append(trip)
149
- elif dest_id:
150
- if trip["route"]["dest_hub_office_id"] == dest_id:
151
- result.append(trip)
152
-
153
- return result
 
 
 
 
 
 
 
 
154
  # Danh sách 4 chuyến đi xung quanh thời gian chỉ định
155
  @staticmethod
156
  def get_4_surrounding_trip(trips: list, time: str) -> list:
@@ -224,7 +232,8 @@ class DialogService:
224
  return False
225
  pickup_list = await self.pickup_list(route_id, way_id)
226
  for pickup_data in pickup_list:
227
- if pickup_data['name'] == pickup:
 
228
  return True
229
  return False
230
 
@@ -278,8 +287,8 @@ class DialogService:
278
  groups = origin["group"]
279
  for group in groups:
280
  if group.get("name"):
281
- name = group["name"]
282
- if name == office_name:
283
  office_id = group["officeId"]
284
  office_id = office_id[0] if isinstance(office_id, tuple) else office_id
285
  return office_id
@@ -294,9 +303,10 @@ class DialogService:
294
  groups = origin["group"]
295
  for group in groups:
296
  if group.get("name"):
297
- name = group["name"]
298
- if name == office_name:
299
- return group["provinceId"]
 
300
  return None
301
 
302
  async def find_all_origin_by_name_office(self, office_name: str):
@@ -315,8 +325,8 @@ class DialogService:
315
  groups = origin["group"]
316
  for group in groups:
317
  if group.get("name"):
318
- name = group["name"]
319
- if name == office_name:
320
  province_id = group["provinceId"]
321
  province_code = group["provinceCode"]
322
  province_id = province_id[0] if isinstance(province_id, tuple) else province_id
@@ -332,8 +342,8 @@ class DialogService:
332
  groups = origin["group"]
333
  for group in groups:
334
  if group.get("name"):
335
- name = group["name"]
336
- if name == origin_office:
337
  return group["provinceName"]
338
  return None
339
 
@@ -346,8 +356,8 @@ class DialogService:
346
  groups = dest["group"]
347
  for group in groups:
348
  if group.get("name"):
349
- name = group["name"]
350
- if name == dest_office:
351
  return group["provinceName"]
352
  return None
353
 
 
140
 
141
  result = []
142
  for trip in trips:
143
+ pickup_points = trip.get("pickup_points", [])
144
+ pickup_point_ids = {p["OfficeId"] for p in pickup_points if "OfficeId" in p}
145
+
146
+ origin_match = (
147
+ (origin_id is None) or
148
+ (trip["route"]["origin_hub_office_id"] == origin_id) or
149
+ (origin_id in pickup_point_ids)
150
+ )
151
+
152
+ dest_match = (
153
+ (dest_id is None) or
154
+ (trip["route"]["dest_hub_office_id"] == dest_id) or
155
+ (dest_id in pickup_point_ids)
156
+ )
157
+
158
+ if origin_match and dest_match:
159
+ result.append(trip)
160
+
161
+ return result if result else trips
162
  # Danh sách 4 chuyến đi xung quanh thời gian chỉ định
163
  @staticmethod
164
  def get_4_surrounding_trip(trips: list, time: str) -> list:
 
232
  return False
233
  pickup_list = await self.pickup_list(route_id, way_id)
234
  for pickup_data in pickup_list:
235
+ pickup_name: str = pickup_data['name']
236
+ if pickup_name.lower() == pickup.lower():
237
  return True
238
  return False
239
 
 
287
  groups = origin["group"]
288
  for group in groups:
289
  if group.get("name"):
290
+ name: str = group["name"]
291
+ if name.lower() == office_name.lower():
292
  office_id = group["officeId"]
293
  office_id = office_id[0] if isinstance(office_id, tuple) else office_id
294
  return office_id
 
303
  groups = origin["group"]
304
  for group in groups:
305
  if group.get("name"):
306
+ name: str = group["name"]
307
+ if name.lower() == office_name.lower():
308
+ province_id = group["provinceId"]
309
+ return province_id
310
  return None
311
 
312
  async def find_all_origin_by_name_office(self, office_name: str):
 
325
  groups = origin["group"]
326
  for group in groups:
327
  if group.get("name"):
328
+ name: str = group["name"]
329
+ if name.lower() == office_name.lower():
330
  province_id = group["provinceId"]
331
  province_code = group["provinceCode"]
332
  province_id = province_id[0] if isinstance(province_id, tuple) else province_id
 
342
  groups = origin["group"]
343
  for group in groups:
344
  if group.get("name"):
345
+ name:str = group["name"]
346
+ if name.lower() == origin_office.lower():
347
  return group["provinceName"]
348
  return None
349
 
 
356
  groups = dest["group"]
357
  for group in groups:
358
  if group.get("name"):
359
+ name: str = group["name"]
360
+ if name.lower() == dest_office.lower():
361
  return group["provinceName"]
362
  return None
363