<?php
namespace App\Controller\Api\Prive;
use App\Entity\Codenaf;
use App\Entity\Prospect;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/codenaf")
*/
class ApiCodenafController extends ApiController
{
/**
* @Route("/{id}", name="api_Codenaf_getById", methods={"GET"})
* @param int $id
* @return JsonResponse
*/
public function getById(int $id)
{
if ( $id > 0) {
$codenaf = $this->em->getRepository(Codenaf::class)->find($id);
if ($codenaf) {
return $this->apiOk($codenaf);
}
}
return $this->apiKo("Code NAF non trouvé !!");
}
/**
* @Route("/{id}", name="api_Codenaf_delete", methods={"DELETE"})
* @param int $id
* @return JsonResponse
*/
public function delete(int $id)
{
if ($id > 0) {
/** @var Codenaf $codenaf */
$codenaf = $this->em->getRepository(Codenaf::class)->find($id);
// 1 - Chercher si le codenaf n'est pas liee à un prospect
$prospect = $this->em->getRepository(Prospect::class)->findBy(["codenaf" => $id]);
if($prospect){
// Suppression Logique
$codenaf->setActive(2);
$this->em->persist($codenaf);
$this->em->flush();
return $this->apiOk($id);
}else
{
try {
return $this->removeElement($codenaf);
} catch (\Exception $e) {
return $this->apiKo($e->getMessage());
}
}
}
return $this->apiKo("Code NAF non trouvé !!");
}
/**
* @Route("/", name="api_Codenaf_save", methods={"POST"})
* @param Request $request
* @return JsonResponse
*/
public function save(Request $request)
{
$data = json_decode($request->getContent(), true);
$codenaf = new Codenaf();
if (isset($data['id'])) {
$codenaf = $this->em->getRepository(Codenaf::class)->find($data['id']);
}
if (isset($data['libelle'])) {
$codenaf->setLibelle($data['libelle']);
}
if (isset($data['active'])) {
$codenaf->setActive($data['active']);
}
if (isset($data['code'])) {
$codenaf->setCode($data['code']);
}
try {
return $this->saveElement($codenaf);
} catch (\Exception $e) {
return $this->apiKo($e->getMessage());
}
}
/**
* @Route("/find", name="api_Codenaf_find", methods={"POST"})
* @param Request $request
* @return JsonResponse
*/
public function find(Request $request)
{
$data = json_decode($request->getContent(), true);
$data['filter']['and']['codenaf.active'] = ' <> 2 '; // ne pas affichier les elements supprimé logiquement
$sql = "
SELECT codenaf
FROM " . Codenaf::class . " codenaf
";
return $this->findElementsWithJoin($sql, $data);
}
}