test bid is created with a freight order

This commit is contained in:
Yisroel Baum 2025-11-17 22:33:53 +02:00
parent d6b3b4b59e
commit 773f438cc1
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
3 changed files with 76 additions and 5 deletions

View file

@ -2,6 +2,8 @@
namespace FreightQuote\FreightOrder\UseCases;
use FreightQuote\Bid\Bid;
use FreightQuote\Bid\BidRepository;
use FreightQuote\Carrier\Carrier;
use FreightQuote\Carrier\CarrierRepository;
use FreightQuote\Email\Email;
@ -14,6 +16,7 @@ class CreateFreightOrder
public function __construct(
private FreightOrderRepository $freightOrderRepo,
private CarrierRepository $carrierRepo,
private BidRepository $bidRepo,
private Emailer $emailer,
) {}
@ -21,26 +24,51 @@ class CreateFreightOrder
CreateFreightOrderRequestDTO $dto,
): CreateFreightOrderResponseDTO {
$savedFreightOrder = $this->saveFreightOrder($dto);
$this->handleCarrierActions(
$bidsCreated = $this->handleCarrierActions(
$dto->carrierIds,
$savedFreightOrder,
);
return new CreateFreightOrderResponseDTO($savedFreightOrder);
return new CreateFreightOrderResponseDTO(
$savedFreightOrder,
$bidsCreated
);
}
/**
* @param int[] $carrierIds
* @return Bid[]
*/
private function handleCarrierActions(
array $carrierIds,
FreightOrder $freightOrder
): void {
FreightOrder $freightOrder,
): array {
$bidsCreated = [];
foreach ($carrierIds as $carrierId) {
$carrier = $this->carrierRepo->find($carrierId);
$this->updateCarrierOrderIds($carrier, $freightOrder->getId());
$freightOrderId = $freightOrder->getId();
$this->updateCarrierOrderIds($carrier, $freightOrderId);
$this->sendEmail($carrier->getEmail(), $freightOrder);
$bidsCreated[] = $this->createBid(
$freightOrderId,
$carrier->getId(),
);
}
return $bidsCreated;
}
private function createBid(
int $freightOrderId,
int $carrierId
): Bid {
return $this->bidRepo->save(
new Bid(
id: null,
freightOrderId: $freightOrderId,
carrierId: $carrierId,
)
);
}
private function sendEmail(string $emailAddress, FreightOrder $freightOrder): void