From 4388a7ec93de6ef6cae86c386e57e95a58b93f07 Mon Sep 17 00:00:00 2001 From: Ryjek Date: Tue, 14 Jul 2026 07:56:35 +0200 Subject: [PATCH] add client from rest api --- .../src/Controller/Api/ClientsController.php | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/project/src/Controller/Api/ClientsController.php b/project/src/Controller/Api/ClientsController.php index 00c347b..bff687f 100644 --- a/project/src/Controller/Api/ClientsController.php +++ b/project/src/Controller/Api/ClientsController.php @@ -3,6 +3,7 @@ namespace App\Controller\Api; use App\Entity\Clients; use App\Repository\ClientsRepository; +use App\Services\AddReports; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; @@ -40,9 +41,45 @@ class ClientsController extends AbstractController } #[Route('/add', name: 'add_client', methods: ['POST'])] - public function add(Request $request, EntityManagerInterface $entityManager): JsonResponse + public function add(Request $request, EntityManagerInterface $entityManager, AddReports $addReports): JsonResponse { - return $this->json($request->toArray(), context: ['groups' => ['client:add', 'client:read']]); + $need = [ + "strName" => $request->getPayload()->get('name'), + "strAddress" => $request->getPayload()->get('address'), + "dateLegitimacy" => $request->getPayload()->get('legitimacy'), + "dateProclamation" => $request->getPayload()->get('proclamation'), + "intNIP" => $request->getPayload()->get('nip'), + "intPhone" => $request->getPayload()->get('phone'), + "strEmail" => $request->getPayload()->get('email'), + ]; + $newClient = new Clients(); + foreach ($need as $key => $value) { + $cleared = $this->clearType($key, $value); + $method = 'set'.ucfirst($key); + $newClient->{$method}($cleared); + } + + + $entityManager->persist($newClient); + $entityManager->flush(); + $entityManager->getCache()->evictEntityRegion(Clients::class); + $addReports->setClient($newClient); + $addReports->init(); + + return $this->json(['success' => true]); + } + + private function clearType(string $key, mixed $value) + { + if (str_contains($key, 'str')) { + return addslashes($value); + } + if (str_contains($key, 'int')) { + return intval($value); + } + if (str_contains($key, 'date')) { + return new \DateTime($value); + } } // #[Route('/{id}', name: 'show', methods: ['GET'])]