add plan controller
This commit is contained in:
parent
73f3cab813
commit
0e57b90509
1 changed files with 55 additions and 0 deletions
55
app/Plan/PlanController.php
Normal file
55
app/Plan/PlanController.php
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
namespace App\Plan;
|
||||
|
||||
use App\Exceptions\BadRequestException;
|
||||
use App\Plan\UseCases\CreatePlan;
|
||||
use App\Plan\UseCases\CreatePlanRequest;
|
||||
use DomainException;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
|
||||
class PlanController
|
||||
{
|
||||
public function createPlan(
|
||||
Request $request,
|
||||
Response $response,
|
||||
CreatePlan $createPlanUseCase,
|
||||
): Response {
|
||||
$data = $request->getParsedBody();
|
||||
$userId = $data['userId'] ?? null;
|
||||
$textId = $data['textId'] ?? null;
|
||||
$name = $data['name'] ?? null;
|
||||
$dateStart = $data['dateStart'] ?? null;
|
||||
$dateEnd = $data['dateEnd'] ?? null;
|
||||
|
||||
try {
|
||||
$plan = $createPlanUseCase->execute(new CreatePlanRequest(
|
||||
userId: $userId,
|
||||
textId: $textId,
|
||||
name: $name,
|
||||
dateStart: $dateStart,
|
||||
dateEnd: $dateEnd,
|
||||
));
|
||||
} catch (BadRequestException $exception) {
|
||||
$response->getBody()->write(
|
||||
json_encode(['error' => $exception->getMessage()])
|
||||
);
|
||||
return $response->withStatus(400)
|
||||
->withHeader('Content-Type', 'application/json');
|
||||
} catch (DomainException $exception) {
|
||||
$response->getBody()->write(
|
||||
json_encode(['error' => $exception->getMessage()])
|
||||
);
|
||||
return $response->withStatus(404)
|
||||
->withHeader('Content-Type', 'application/json');
|
||||
}
|
||||
|
||||
$response->getBody()->write(json_encode([
|
||||
'id' => $plan->getId(),
|
||||
'name' => $plan->getName(),
|
||||
]));
|
||||
return $response->withStatus(201)
|
||||
->withHeader('Content-Type', 'application/json');
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue