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