From a5229f1e034ce0a523186e8696025cdaa5eb2d20 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sun, 16 Nov 2025 20:56:36 +0200 Subject: [PATCH] save freight order ids on carrier --- .../UseCases/CreateFreightOrder.php | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/FreightOrder/UseCases/CreateFreightOrder.php b/src/FreightOrder/UseCases/CreateFreightOrder.php index 7c7bdf0..a870380 100644 --- a/src/FreightOrder/UseCases/CreateFreightOrder.php +++ b/src/FreightOrder/UseCases/CreateFreightOrder.php @@ -2,6 +2,7 @@ namespace FreightQuote\FreightOrder\UseCases; +use FreightQuote\Carrier\CarrierRepository; use FreightQuote\FreightOrder\FreightOrderRepository; use FreightQuote\FreightOrder\FreightOrder; @@ -9,10 +10,36 @@ class CreateFreightOrder { public function __construct( private FreightOrderRepository $freightOrderRepo, + private CarrierRepository $carrierRepo, ) {} public function execute( CreateFreightOrderRequestDTO $dto, + ): FreightOrder { + $savedFreightOrder = $this->constructFreightOrder($dto); + foreach ($dto->carrierIds as $carrierId) { + $this->updateCarrier( + $carrierId, + $savedFreightOrder->getId() + ); + } + + return $savedFreightOrder; + } + + private function updateCarrier( + int $carrierId, + int $freightOrderId + ): void { + $carrier = $this->carrierRepo->find($carrierId); + $carrierFreightOrderIds = $carrier->getFreightOrderIds(); + $carrierFreightOrderIds[] = $freightOrderId; + $carrier->setFreightOrderIds($carrierFreightOrderIds); + $this->carrierRepo->save($carrier); + } + + private function constructFreightOrder( + CreateFreightOrderRequestDTO $dto, ): FreightOrder { return $this->freightOrderRepo->save( new FreightOrder(