67 lines
1.7 KiB
PHP
67 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Tests\Fakes\Carrier;
|
|
|
|
use FreightQuote\Carrier\Carrier;
|
|
use FreightQuote\Carrier\CarrierRepository;
|
|
|
|
class FakeCarrierRepository implements CarrierRepository
|
|
{
|
|
private array $existingCarriers = [];
|
|
|
|
public function find(int $id): ?Carrier
|
|
{
|
|
foreach ($this->existingCarriers as $carrier) {
|
|
if ($carrier->getId() === $id) {
|
|
return new Carrier(
|
|
$id,
|
|
$carrier->getEmail(),
|
|
$carrier->getCompanyName(),
|
|
$carrier->getContactPerson(),
|
|
$carrier->getPhoneNumber(),
|
|
$carrier->getNotes(),
|
|
);
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public function save(Carrier $carrier): Carrier
|
|
{
|
|
$id = $carrier->getId();
|
|
if ($id === null) {
|
|
$id = $this->autoIncrementId();
|
|
$carrier->setId($id);
|
|
}
|
|
$this->existingCarriers[$id] = $carrier;
|
|
|
|
return new Carrier(
|
|
$id,
|
|
$carrier->getEmail(),
|
|
$carrier->getCompanyName(),
|
|
$carrier->getContactPerson(),
|
|
$carrier->getPhoneNumber(),
|
|
$carrier->getNotes(),
|
|
);
|
|
}
|
|
|
|
private function autoIncrementId(): int
|
|
{
|
|
return count($this->existingCarriers);
|
|
}
|
|
|
|
public function getAll(): array
|
|
{
|
|
return array_map(function (Carrier $carrier) {
|
|
return new Carrier(
|
|
$carrier->getId(),
|
|
$carrier->getEmail(),
|
|
$carrier->getCompanyName(),
|
|
$carrier->getContactPerson(),
|
|
$carrier->getPhoneNumber(),
|
|
$carrier->getNotes(),
|
|
);
|
|
}, $this->existingCarriers);
|
|
}
|
|
}
|