<?php
namespace App\Controller\Api\Prive;
use App\Entity\Campagne;
use App\Entity\Commercial;
use App\Entity\Contact;
use App\Entity\Prospect;
use App\Entity\Rdv;
use App\Entity\Rdvstatut;
use App\Entity\Utilisateur;
use App\Helpers\Mailing;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/rdv")
*/
class ApiRdvController extends ApiController
{
/**
* @Route("/", name="api_Rdv_save", methods={"POST"})
* @param Request $request
* @return JsonResponse
*/
public function save(Request $request)
{
$data = json_decode($request->getContent(), true);
if (!isset($data['id'])) {
return $this->apiKo("Rdv non trouvé !!");
}
/** @var Rdv $rdv */
$rdv = $this->em->getRepository(Rdv::class)->find($data['id']);
if (!$rdv) {
return $this->apiKo("Rdv non trouvé !!");
}
if (isset($data['daterdv'])) {
$rdv->setDaterdv(new \DateTime($data['daterdv']));
}
if (isset($data['contact']) && isset($data['contact']['id'])) {
/** @var Contact $contact */
$contact = $this->em->getRepository(Contact::class)->find($data['contact']['id']);
if($contact){
$rdv->setContact($contact);
}
}
if (isset($data['commercial']) && isset($data['commercial']['id'])) {
/** @var Commercial $commercial */
$commercial = $this->em->getRepository(Commercial::class)->find($data['commercial']['id']);
if($commercial){
$rdv->setCommercial($commercial);
}
}
$rdv->setDatemodification(new \DateTime());
if (isset($data['rdvstatut']) && isset($data['rdvstatut']['id'])) {
/** @var Rdvstatut $rdvstatut */
$rdvstatut = $this->em->getRepository(Rdvstatut::class)->find($data['rdvstatut']['id']);
if($rdvstatut){
$rdv->setRdvstatut($rdvstatut);
// Notification
(new Mailing($this->mailer, $this->templating))->notificationstatutrdv($rdv);
}
}
try {
return $this->saveElement($rdv);
} catch (\Exception $e) {
return $this->apiKo($e->getMessage());
}
}
/**
* @Route("/find", name="api_Rdv_find", methods={"POST"})
* @param Request $request
* @return JsonResponse
*/
public function find(Request $request)
{
$data = json_decode($request->getContent(), true);
$sql = "
SELECT rdv
FROM " . Rdv::class . " rdv
LEFT JOIN ".Prospect::class." prospect WITH rdv.prospect=prospect.id
LEFT JOIN ".Campagne::class." campagne WITH rdv.campagne=campagne.id
LEFT JOIN ".Rdvstatut::class." rdvstatut WITH rdv.rdvstatut=rdvstatut.id
";
if (isset($data['filter']['params']['espaceagent']) && $data['filter']['params']['espaceagent']) {
$sql = $sql." LEFT JOIN ".Utilisateur::class." as utilisateur WITH rdv.utilisateur = utilisateur.id";
$data['filter']['and']['rdv.utilisateur'] = ' = '.$this->getUtilisateurConnecte()->getId();
}
return $this->findElementsWithJoin($sql, $data);
}
}