diff --git a/app/core/entities/delivery_order.py b/app/core/entities/delivery_order.py index c4fed53..9b27712 100644 --- a/app/core/entities/delivery_order.py +++ b/app/core/entities/delivery_order.py @@ -9,6 +9,7 @@ class DeliveryOrderEntity(BaseModel): count_trucks: int deadline: datetime price: float + truck_name: Optional[str] = None truck_id: Optional[int] = None total_order_id: Optional[int] = None diff --git a/app/core/usecases/delivery_order_service.py b/app/core/usecases/delivery_order_service.py index 0292a1d..4ff3b4c 100644 --- a/app/core/usecases/delivery_order_service.py +++ b/app/core/usecases/delivery_order_service.py @@ -12,15 +12,16 @@ class DeliveryOrdersService: self.repository = DeliveryOrdersRepository(db) def get_all_delivery_orders(self) -> List[DeliveryOrderEntity]: - delivery_orders = self.repository.get_all() + delivery_orders = self.repository.get_all_with_trucks() return [ DeliveryOrderEntity( id=o.id, order_datetime=o.order_datetime, count_trucks=o.count_trucks, deadline=o.deadline, - price=o.price, + price=round(o.price, 2), truck_id=o.truck_id, + truck_name=o.truck.name, total_order_id=o.total_order_id ) for o in delivery_orders @@ -36,6 +37,7 @@ class DeliveryOrdersService: deadline=o.deadline, price=o.price, truck_id=o.truck_id, + truck_name=o.truck.name, total_order_id=o.total_order_id ) for o in delivery_orders @@ -51,6 +53,7 @@ class DeliveryOrdersService: deadline=delivery_order.deadline, price=delivery_order.price, truck_id=delivery_order.truck_id, + truck_name=delivery_order.truck.name, total_order_id=delivery_order.total_order_id ) return None diff --git a/app/core/usecases/new_total_order_service.py b/app/core/usecases/new_total_order_service.py index 6be80d6..4f237ad 100644 --- a/app/core/usecases/new_total_order_service.py +++ b/app/core/usecases/new_total_order_service.py @@ -89,14 +89,6 @@ class NewTotalOrderService: ) session.add(new_delivery_accessory) - response += f"Период: {period}\n" - response += f"Маршрут: {' -> '.join([city.name for city in route])}\n" - selected_vehicle_name = next((truck.name for truck in trucks if truck.id == selected_truck), - "Нет доступного автомобиля") - response += f"Тип автомобиля: {selected_vehicle_name}" - response += f"Количество автомобилей: {vehicle_count}" - response += f"Стоимость перевозки: {cost}\n" - session.commit() return response diff --git a/app/core/usecases/total_order_service.py b/app/core/usecases/total_order_service.py index f224e1e..5f4a28a 100644 --- a/app/core/usecases/total_order_service.py +++ b/app/core/usecases/total_order_service.py @@ -19,7 +19,7 @@ class TotalOrdersService: order_datetime=order.order_datetime, count_robots=order.count_robots, deadline=order.deadline, - price=order.price, + price=round(order.price), user_id=order.user_id, status_id=order.status_id, delivery_orders=[do.id for do in order.delivery_orders] if order.delivery_orders else [], @@ -83,7 +83,8 @@ class TotalOrdersService: price=total_order_model.price, user_id=total_order_model.user_id, status_id=total_order_model.status_id, - delivery_orders=[do.id for do in total_order_model.delivery_orders] if total_order_model.delivery_orders else [] + delivery_orders=[do.id for do in + total_order_model.delivery_orders] if total_order_model.delivery_orders else [] ) return None diff --git a/app/infrastructure/database/repository/delivery_order_repository.py b/app/infrastructure/database/repository/delivery_order_repository.py index 6e1a4f6..0b8b4ec 100644 --- a/app/infrastructure/database/repository/delivery_order_repository.py +++ b/app/infrastructure/database/repository/delivery_order_repository.py @@ -1,4 +1,4 @@ -from sqlalchemy.orm import Session +from sqlalchemy.orm import Session, joinedload from app.infrastructure.database.models.delivery_orders import DeliveryOrder @@ -9,11 +9,20 @@ class DeliveryOrdersRepository: def get_all(self): return self.db.query(DeliveryOrder).all() + def get_all_with_trucks(self): + return self.db.query(DeliveryOrder) \ + .options(joinedload(DeliveryOrder.truck)) \ + .all() + def get_all_by_total_order_id(self, total_order_id): - return self.db.query(DeliveryOrder).filter(DeliveryOrder.total_order_id == total_order_id).all() + return self.db.query(DeliveryOrder).filter(DeliveryOrder.total_order_id == total_order_id) \ + .options(joinedload(DeliveryOrder.truck)) \ + .all() def get_by_id(self, delivery_order_id: int): - return self.db.query(DeliveryOrder).filter(DeliveryOrder.id == delivery_order_id).first() + return self.db.query(DeliveryOrder).filter(DeliveryOrder.id == delivery_order_id) \ + .options(joinedload(DeliveryOrder.truck)) \ + .first() def create(self, delivery_order: DeliveryOrder): self.db.add(delivery_order)