61 lines
1.8 KiB
PHP
61 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace Tests\Fakes\FreightOrder;
|
|
|
|
use FreightQuote\FreightOrder\FreightOrderRepository;
|
|
use FreightQuote\FreightOrder\FreightOrder;
|
|
|
|
class FakeFreightOrderRepository implements FreightOrderRepository
|
|
{
|
|
/**
|
|
* @var FreightOrder[]
|
|
*/
|
|
private array $existingFreightOrders = [];
|
|
|
|
public function find(int $id): ?FreightOrder
|
|
{
|
|
foreach ($this->existingFreightOrders as $freightOrder) {
|
|
if ($freightOrder->getId() === $id) {
|
|
return new FreightOrder(
|
|
$freightOrder->getId(),
|
|
$freightOrder->getShipFrom(),
|
|
$freightOrder->getShipTo(),
|
|
$freightOrder->getPickupDate(),
|
|
$freightOrder->getDeliveryDeadline(),
|
|
$freightOrder->getLoadDetails(),
|
|
$freightOrder->getNotes(),
|
|
$freightOrder->getFileAttachments(),
|
|
$freightOrder->getDateCreated(),
|
|
);
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public function save(FreightOrder $freightOrder): FreightOrder
|
|
{
|
|
$id = $freightOrder->getId();
|
|
if ($id === null) {
|
|
$id = $this->getNextId();
|
|
$freightOrder->setId($id);
|
|
}
|
|
$this->existingFreightOrders[$id] = $freightOrder;
|
|
return new FreightOrder(
|
|
$freightOrder->getId(),
|
|
$freightOrder->getShipFrom(),
|
|
$freightOrder->getShipTo(),
|
|
$freightOrder->getPickupDate(),
|
|
$freightOrder->getDeliveryDeadline(),
|
|
$freightOrder->getLoadDetails(),
|
|
$freightOrder->getNotes(),
|
|
$freightOrder->getFileAttachments(),
|
|
$freightOrder->getDateCreated(),
|
|
);
|
|
}
|
|
|
|
private function getNextId(): int
|
|
{
|
|
return count($this->existingFreightOrders);
|
|
}
|
|
}
|