create carrier files

controller, entity, repository, creation use case and corresponding
request dto
This commit is contained in:
Yisroel Baum 2025-11-06 10:17:10 +02:00
parent 8a7d919be9
commit 4ff6cb9879
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
5 changed files with 88 additions and 0 deletions

26
src/Carrier/Carrier.php Normal file
View file

@ -0,0 +1,26 @@
<?php
namespace FreightQuote\Carrier;
class Carrier
{
public function __construct(
private ?int $id,
private string $email,
) {}
public function getId(): ?int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getEmail(): string
{
return $this->email;
}
}

View file

@ -0,0 +1,21 @@
<?php
namespace FreightQuote\Carrier;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Views\Twig;
class CarrierController
{
public function page(Request $request, Response $response): Response
{
$twig = Twig::fromRequest($request);
return $twig->render($response, 'carriers.html.twig');
}
public function create(Request $request, Response $response): Response
{
}
}

View file

@ -0,0 +1,9 @@
<?php
namespace FreightQuote\Carrier;
interface CarrierRepository
{
public function find(int $id): ?Carrier;
public function save(Carrier $carrier): Carrier;
}

View file

@ -0,0 +1,21 @@
<?php
namespace FreightQuote\Carrier\UseCases;
use FreightQuote\Carrier\Carrier;
use FreightQuote\Carrier\CarrierRepository;
class CreateCarrier
{
public function __construct(
private CreateCarrierRequest $dto,
private CarrierRepository $carrierRepo,
) {}
public function execute(): Carrier
{
$carrier = new Carrier($this->dto->id, $this->dto->email);
return $this->carrierRepo->save($carrier);
}
}

View file

@ -0,0 +1,11 @@
<?php
namespace FreightQuote\Carrier\UseCases;
class CreateCarrierRequest
{
public function __construct(
public ?int $id,
public string $email,
) {}
}