diff --git a/src/Carrier/CarrierController.php b/src/Carrier/CarrierController.php index bb0bc98..d251e09 100644 --- a/src/Carrier/CarrierController.php +++ b/src/Carrier/CarrierController.php @@ -2,20 +2,41 @@ namespace FreightQuote\Carrier; +use FreightQuote\Carrier\UseCases\CreateCarrier; +use FreightQuote\Carrier\UseCases\CreateCarrierRequest; +use FreightQuote\Carrier\UseCases\GetAllCarriers; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Views\Twig; class CarrierController { + public function __construct( + private CarrierRepository $carrierRepo, + ) {} + public function page(Request $request, Response $response): Response { $twig = Twig::fromRequest($request); - return $twig->render($response, 'carriers.html.twig'); + $useCase = new GetAllCarriers($this->carrierRepo); + $result = $useCase->execute(); + + return $twig->render($response, 'carriers.html.twig', [ + 'carriers' => $result, + ]); } public function create(Request $request, Response $response): Response { + $body = $request->getParsedBody(); + $dto = new CreateCarrierRequest( + $body['email'], + $body['companyName'], + ); + $useCase = new CreateCarrier($dto, $this->carrierRepo); + $useCase->execute(); + + return $response->withHeader('Location', '/freight_carriers')->withStatus(303); } }