<?php
namespace App\Controller;
use App\Entity\Compte;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Evenement;
use App\Entity\Prestations;
use App\Entity\Coiffeur;
use App\Entity\Client;
use App\Entity\Logs;
use App\Entity\User;
use Doctrine\Common\Collections\ArrayCollection;
class EvenementController extends AbstractController
{
const CONFIRMER = 20;
/**
* @Route("/admin/event/list/{idcompte}/{date}/{type}/{endDate}",
name="app_event_list",
defaults = {"type" = 0, "endDate" = null }
)
*/
public function listEvenementAction($idcompte, $date, $type = 0, $endDate = "")
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$userID = $this->getUser()->getId();
$repository = $this->getDoctrine()->getRepository(Evenement::class);
$events = $repository->findByCompte($idcompte, $date, $type, $endDate);
return new JsonResponse($events);
}
/**
* @Route("/admin/event/telclient/{id}", name="app_tel_list")
*/
public function listTelAction($id = null)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$userID = $this->getUser()->getId();
$repository = $this->getDoctrine()->getRepository(Evenement::class);
$tels = $repository->getAllTels($id);
return new JsonResponse($tels);
}
/**
* @Route("/admin/event/annuler/{id}", name="app_annuler")
*/
public function annulerRdvAction($id = null)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$userID = $this->getUser()->getId();
$entityManager = $this->getDoctrine()->getManager();
$event = $this->getDoctrine()->getRepository(Evenement::class)->find($id);
$event->setEtat(5);
$event->setUpdatedAt(new \DateTime());
$event->setUpdatedBy($userID);
$entityManager->persist($event);
$entityManager->flush();
$this->setLog($event->getId(), "annuler");
//$this->sendSms($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "annuler");
// $this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "annuler");
return new JsonResponse(array(
'status' => 'OK',
'code' => 200,
'events' => array([
'id' => $event->getId(),
'title' => $event->getEtat(),
'etat' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
])
));
}
public function setLog($idEvent, $type)
{
$userID = $this->getUser()->getId();
$entityManager = $this->getDoctrine()->getManager();
$user = $this->getDoctrine()->getRepository(User::class)->find($userID);
$event = $this->getDoctrine()->getRepository(Evenement::class)->findById($idEvent);
$email = $user->getEmail();
$date = date('d-m-Y H:i:s');
$tel = $event['tel'];
$nom = $event['nom'];
$coiffeur = $event['coiffeur_nom'];
$logs = new Logs();
$logs->setEvent($idEvent);
$logs->setUser($userID);
$logs->setType($type);
$logs->setCreatedAt(new \DateTime());
$logs->setMessage("l'utilisateur $email à $type le rendez-vous $idEvent (Nom client : $nom, Tél : $tel)) à $date pour le coiffeur : $coiffeur]");
$entityManager->persist($logs);
$entityManager->flush();
}
private function sendSms($tel, $date, $compte = null, $type = null)
{
if ($compte->getIsSms() === 0) {
return;
}
$compte = strtoupper($compte);
// Supprimer les espaces
$telephone = str_replace(' ', '', $tel);
// Supprimer le préfixe '0' si présent
$telephone = ltrim($telephone, '0');
// Code pays
$code_pays = '212';
// Numéro de téléphone au format international
$numero_international = $code_pays . $telephone;
$message = "Bonjour, c’est Salon ZEN $compte. Votre rendez-vous est confirmé pour $date. Merci! A bientôt.";
if ($type === "annuler") {
$message = "Bonjour, c’est Salon ZEN $compte. Nous vous informons que votre rendez-vous prévu pour $date a été annulé.";
}
$message = (((str_replace(" ", "%20", urlencode($message)))));
// Initialisation de la session cURL
$ch = curl_init();
$url = "https://smartmessage-utilisateur.orange.ma:3007/campaignService/campaigns/";
$url .= "qs?recipient=$numero_international&msg=$message&user=sendAdmin&pswd=Nice_Look@88&dr=0&msgCategory=4.5&contentType=3.7&sender=SalonZEN&channel=2.1";
// Configuration des options de la requête
curl_setopt($ch, CURLOPT_URL, $url); // URL de la requête
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Retourner la réponse dans une variable au lieu de l'afficher directement
// Exécution de la requête et récupération de la réponse
$response = curl_exec($ch);
// Vérification des erreurs éventuelles
if ($response === false) {
// echo 'Erreur cURL : ' . curl_error($ch);die;
}
// Fermeture de la session cURL
curl_close($ch);
}
/**
* @Route("/admin/event/confirmer/{id}", name="app_confirmer")
*/
public function confirmerRdvAction($id = null)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$userID = $this->getUser()->getId();
$entityManager = $this->getDoctrine()->getManager();
$event = $this->getDoctrine()->getRepository(Evenement::class)->find($id);
$event->setEtat(self::CONFIRMER);
$event->setUpdatedAt(new \DateTime());
$event->setUpdatedBy($userID);
$entityManager->persist($event);
$entityManager->flush();
$this->setLog($event->getId(), "confirmer");
$this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), 'confirmer');
return new JsonResponse(array(
'status' => 'OK',
'code' => 200,
'events' => array([
'id' => $event->getId(),
'title' => $event->getEtat(),
'etat' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
])
));
}
private function sendMessageWhatsup($tel, $date, $compte = null, $type = null)
{
if ($compte->getToken() === null) {
return;
}
// Supprimer les espaces
$telephone = str_replace(' ', '', $tel);
// Supprimer le préfixe '0' si présent
$telephone = ltrim($telephone, '0');
// Code pays
$code_pays = '212';
// Numéro de téléphone au format international
$numero_international = $code_pays . $telephone;
$nameSalon = $compte->getNom();
$token = $compte->getToken();
$message = "Bonjour Madame, c’est le $nameSalon. Votre rendez-vous est bien noté pour le $date. Au plaisir de vous accueillir. Nous vous souhaitons une bonne journée ✨";
if ($type === "annuler") {
$message = "Bonjour Madame, c’est le $nameSalon. Nous vous informons que votre rendez-vous prévu pour le $date a bien été annulé. Nous vous souhaitons une bonne journée ✨";
}
if ($type === "update") {
$message = "Bonjour Madame, c’est le $nameSalon. Nous vous informons que la date de votre rendez-vous a bien été modifiée. La nouvelle date de votre rendez-vous est prévue pour le $date. Au plaisir de vous accueillir. Nous vous souhaitons une bonne journée ✨";
}
if ($type === "confirmer") {
$message = "Bonjour Madame, c’est le $nameSalon. Votre rendez-vous est bien confirmé pour le $date. Au plaisir de vous accueillir. Nous vous souhaitons une bonne journée ✨";
}
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://167.114.3.237:9001/send',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"number" : ' . $token . ',
"type" : "chat",
"message" : "' . $message . '",
"to" : ' . $numero_international . '
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
}
/**
* @Route("/admin/event/listclient/{id}", name="app_client_list")
*/
public function listClientAction($id = null)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
if (empty($id) || is_null($id)) {
return new JsonResponse([]);
}
$userID = $this->getUser()->getId();
$repository = $this->getDoctrine()->getRepository(Client::class);
$clients = $repository->getAllClientsArray($id);
return new JsonResponse($clients);
}
/**
* @Route("/admin/event/allClient/{page}", name="app_client_all")
*/
public function allClientActon($page = 1)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
if (empty($page) || is_null($page)) {
return new JsonResponse([]);
}
$repository = $this->getDoctrine()->getRepository(Client::class);
$clients = $repository->getAllClientDataArray($page);
$count = $repository->getCountClient();
$data = [
'data' => $clients,
'count' => $count
];
return new JsonResponse(
$data
);
}
/**
* @Route("/admin/event/byid", name="app_byid_list")
*/
public function byIdEvenementAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$eventData = $request->getContent();
$userID = $this->getUser()->getId();
if ($eventData == "") {
return new JsonResponse(null);
}
$posts = json_decode($eventData);
$eventId = $posts->id;
$repository = $this->getDoctrine()->getRepository(Evenement::class);
$event = $repository->findById($eventId);
$repository = $this->getDoctrine()->getRepository(Client::class);
$client = $repository->findByOneByEvenentId($event['event_id']);
$logs = array();
$repositoryLog = $this->getDoctrine()->getRepository(Logs::class);
$logs = $repositoryLog->findByEvent($eventId);
if ($logs == null) {
$logs = array();
}
$event['nom'] = $client ? $client->getNom() : '';
$event['tel'] = $client ? $client->getTelephone() : '';
$event['email'] = $client ? $client->getEmail() : '';
return new JsonResponse(array_merge($event, array('logs' => $logs)));
}
/**
* @Route("/admin/event/logs/{id}", name="app_logs_list")
*/
public function byIdEvenementLogAction(Request $request, $id)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$eventData = $request->getContent();
$userID = $this->getUser()->getId();
$logs = array();
$repositoryLog = $this->getDoctrine()->getRepository(Logs::class);
$logs = $repositoryLog->findByEvent($id);
if ($logs == null) {
$logs = array();
}
return new JsonResponse(array('logs' => $logs));
}
/**
* @Route("/admin/event/add", name="app_event_add")
*/
public function addEvenementAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$eventData = $request->getContent();
$userID = $this->getUser()->getId();
if ($eventData == "") {
return new JsonResponse(null);
}
$posts = json_decode($eventData);
$data = $posts->formValues;
$startDate = $posts->start;
$endDate = $posts->end;
$coiffeur = $posts->coiffeur;
$tel = $data->tel_client;
$nom_client = $data->nom_client;
$email_client = $data->email_client;
$commentaire = $data->commentaire;
$entityManager = $this->getDoctrine()->getManager();
$coiffeur = $this->getDoctrine()->getRepository(Coiffeur::class)->find($coiffeur);
$_endDateFormated = null;
$returnArray = [];
if (isset($data->prestation)) {
foreach ($data->prestation as $key => $prestationId) {
$event = new Evenement();
$prestation = $this->getDoctrine()->getRepository(Prestations::class)->find($prestationId);
$endDate = strtotime($startDate . ' + ' . $prestation->getDuree() . ' minute');
$newEndDate = date('Y-m-d H:i:s', $endDate);
$event->setCoiffeur($coiffeur);
if ($_endDateFormated === null) {
$event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', $startDate));
$event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s', $newEndDate));
} else {
$endDate = strtotime($_endDateFormated->format('Y-m-d H:i:s') . ' + ' . $prestation->getDuree() . ' minute');
$newEndDate = date('Y-m-d H:i:s', $endDate);
$event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', $_endDateFormated->format('Y-m-d H:i:s')));
$event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s', $newEndDate));
}
$event->setUser($userID);
$event->setPrestation($prestation);
$event->setEtat(1);
$event->setEmail($email_client);
$event->setCommentaire($commentaire);
$event->setTel($tel);
$event->setNom($nom_client);
$event->setCeatedAt(new \DateTime());
$event->setCreatedBy($userID);
$entityManager->persist($event);
$entityManager->flush();
$_endDateFormated = $event->getDatefin();
$returnArray[] = array(
'id' => $event->getId(),
'title' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
);
}
// $this->sendSms($tel, $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
$this->sendMessageWhatsup($tel, $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
return new JsonResponse(array('status' => 'OK', 'code' => 200, 'events' => $returnArray));
}
$event = new Evenement();
$event->setCoiffeur($coiffeur);
$event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($startDate))));
$event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($endDate))));
$event->setUser($userID);
$event->setPrestation(null);
$event->setEtat(1);
$event->setEmail($email_client);
$event->setCommentaire($commentaire);
$event->setTel($tel);
$event->setNom($nom_client);
$entityManager->persist($event);
$entityManager->flush();
//$this->sendSms($tel, $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
return new JsonResponse(array(
'status' => 'OK',
'code' => 200,
'events' => array([
'id' => $event->getId(),
'title' => $event->getEtat(),
'etat' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
])
));
}
/**
* @Route("/admin/event/addCustom", name="app_event_addCustom")
*/
public function addCustomEvenementAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$eventData = $request->getContent();
$userID = $this->getUser()->getId();
if ($eventData == "") {
return new JsonResponse(null);
}
$posts = json_decode($eventData);
$data = $posts->formValues;
$startDate = $posts->start;
$endDate = $posts->end;
$coiffeur = isset($data->RDV_coiffeurs) ? $data->RDV_coiffeurs : null;
$startDate = strtotime($startDate);
$startDate = date('Y-m-d H:i:s', $startDate);
$endDate = strtotime($endDate);
$endDate = date('Y-m-d H:i:s', $endDate);
$tel = isset($data->RDV_tel_client) ? $data->RDV_tel_client : '';
$tel = explode("(", $tel);
$tel = $tel[0];
$nom_client = isset($data->RDV_nom_client) ? $data->RDV_nom_client : '';
$nom_client = explode("(", $nom_client);
$nom_client = $nom_client[0];
$email_client = isset($data->RDV_email_client) ? $data->RDV_email_client : '';
$commentaire = isset($data->RDV_commentaire) ? $data->RDV_commentaire : '';
$entityManager = $this->getDoctrine()->getManager();
$coiffeur = $this->getDoctrine()->getRepository(Coiffeur::class)->find($coiffeur);
$returnArray = [];
if (isset($data->RDV_prestation) && count($data->RDV_prestation) >= 1) {
foreach ($data->RDV_prestation as $key => $prestationId) {
$client = $this->getDoctrine()->getRepository(Client::class)
->findByOneByNomAndEmail($nom_client, $tel);
if (!$client) {
$client = new Client();
$client->setNom($nom_client);
$client->setTelephone($tel);
$client->setEmail($nom_client);
$client->setCreateAt(new \DateTime());
$client->setUpdateat(new \DateTime());
$entityManager->persist($client);
}
$event = new Evenement();
$prestation = $this->getDoctrine()->getRepository(Prestations::class)->find($prestationId);
$event->setCoiffeur($coiffeur);
$event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($startDate))));
$event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($endDate))));
$event->setUser($userID);
$event->setPrestation($prestation);
$event->setEtat(1);
$event->setEmail($email_client);
$event->setCommentaire($commentaire);
$event->setTel($tel);
$event->setNom($nom_client);
$event->setClient($client);
$event->setCeatedAt(new \DateTime());
$event->setCreatedBy($userID);
$entityManager->persist($event);
$entityManager->flush();
$this->setLog($event->getId(), "ajouter");
$returnArray[] = array(
'id' => $event->getId(),
'title' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
);
}
//$this->sendSms($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
$this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
return new JsonResponse(array('status' => 'OK', 'code' => 200, 'events' => $returnArray));
}
$client = $this->getDoctrine()->getRepository(Client::class)
->findByOneByNomAndEmail($nom_client, $tel);
if (!$client) {
$client = new Client();
$client->setNom($nom_client);
$client->setTelephone($tel);
$client->setEmail($nom_client);
$client->setCreateAt(new \DateTime());
$client->setUpdateat(new \DateTime());
//$client->setCreatedBy( new \DateTime());
$entityManager->persist($client);
}
$event = new Evenement();
$event->setCoiffeur($coiffeur);
$event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($startDate))));
$event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($endDate))));
$event->setUser($userID);
$event->setPrestation(null);
$event->setEtat(1);
$event->setTel($tel); // not used
$event->setNom($nom_client); // not used
$event->setCommentaire($commentaire);
$event->setClient($client);
$event->setCeatedAt(new \DateTime());
$event->setCreatedBy($userID);
$entityManager->persist($event);
$entityManager->flush();
$this->setLog($event->getId(), "ajouter");
//$this->sendSms($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $coiffeur->getCompte());
$this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
return new JsonResponse(array(
'status' => 'OK',
'code' => 200,
'events' => array([
'id' => $event->getId(),
'title' => $event->getEtat(),
'etat' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
])
));
}
/**
* @Route("/admin/event/update", name="app_event_update")
*/
public function updateEvenementAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$userID = $this->getUser()->getId();
$eventData = $request->getContent();
$posts = json_decode($eventData);
$idEvent = $posts->id;
$start = $posts->start;
$end = $posts->end;
$entityManager = $this->getDoctrine()->getManager();
$event = $this->getDoctrine()->getRepository(Evenement::class)->find($idEvent);
// $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($start))));
// $event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($end))));
$event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($start))));
$event->setDateFin(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($end))));
if (isset($posts->resourceId)) {
$coiffeur = $this->getDoctrine()->getRepository(Coiffeur::class)->find($posts->resourceId);
$event->setCoiffeur($coiffeur);
}
$event->setUpdatedAt(new \DateTime());
$event->setUpdatedBy($userID);
$entityManager->persist($event);
$entityManager->flush();
// $this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "update");
return new JsonResponse(array(
'status' => 'OK',
'code' => 200,
'events' => array(
'id' => $event->getId(),
'title' => $event->getEtat(),
'etat' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
)
));
}
/**
* @Route("/admin/event/updateinfo", name="app_eventinfo_update")
*/
public function updateEvenementInfoAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$eventData = $request->getContent();
$posts = json_decode($eventData);
$data = $posts->formValues;
$idEvent = $posts->id;
$start = $data->date_debut;
$end = $data->date_fin;
$entityManager = $this->getDoctrine()->getManager();
$event = $this->getDoctrine()->getRepository(Evenement::class)->find($idEvent);
/* @var $event Evenement */
$event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($start) + 3600)));
$event->setDateFin(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($end) + 3600)));
//$event->setDatedebut(\DateTime::createFromFormat( 'Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($start) )));
//$event->setDateFin(\DateTime::createFromFormat( 'Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($end) )));
$event->setCommentaire($data->commentaire);
$client = $this->getDoctrine()->getRepository(Client::class)
->findByOneByNomAndEmail($data->nom_client, $data->tel_client);
if (!$client) {
$client = new Client();
$client->setNom($data->nom_client);
$client->setTelephone($data->tel_client);
$client->setEmail($data->email_client ?? '');
$client->setCreateAt(new \DateTime());
$client->setUpdateat(new \DateTime());
$entityManager->persist($client);
}
$event->setTel($data->tel_client);
$event->setEmail($data->email_client ?? '');
$event->setNom($data->nom_client);
$coiffeur = $this->getDoctrine()->getRepository(Coiffeur::class)->find($data->coiffeur);
$event->setCoiffeur($coiffeur);
$event->setClient($client);
$event->setEtat($data->reporter == true ? 4 : 1);
$entityManager->persist($event);
$this->setLog($idEvent, "modifié");
$entityManager->flush();
//$this->sendSms($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "update");
//$this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "update");
return new JsonResponse(array(
'status' => 'OK',
'code' => 200,
'events' => array([
'id' => $event->getId(),
'title' => $event->getEtat(),
'etat' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
])
));
}
/**
* @Route("/admin/event/copy", name="app_eventinfo_copy")
*/
public function copyEvenementInfoAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$eventData = $request->getContent();
$data = json_decode($eventData);
$entityManager = $this->getDoctrine()->getManager();
/* @var $event Evenement */
$event = $this->getDoctrine()->getRepository(Evenement::class)->find($data->id);
if ($event) {
// Use Doctrine's clone method to clone the entity (shallow copy)
$event2 = clone $event;
$event2->setUser($event->getUser());
$event2->setClient($event->getClient());
$event2->setPrestation($event->getPrestation());
$event2->setCoiffeur($event->getCoiffeur());
// Persist the new entity if needed
$entityManager->persist($event2);
$entityManager->flush();
}
return new JsonResponse(array(
'status' => 'OK',
'code' => 200,
'events' => array([
'id' => $event2->getId(),
'title' => $event2->getEtat(),
'etat' => $event2->getEtat(),
'start' => $event2->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event2->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event2->getCoiffeur()->getId(),
'nomClient' => $event2->getNom(),
'tel' => $event2->getTel(),
'email' => $event2->getEmail(),
'commentaire' => $event2->getCommentaire(),
'bgColor' => '#945992',
])
));
}
/**
* @Route("/admin/event/remove", name="app_event_remove")
*/
public function removeEvenementAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$eventData = $request->getContent();
$userID = $this->getUser()->getId();
$posts = json_decode($eventData);
$idEvent = $posts->id;
$entityManager = $this->getDoctrine()->getManager();
$event = $this->getDoctrine()->getRepository(Evenement::class)->find($idEvent);
if ($event->getToRemove() == '') {
$event->setSoftdelete("1");
$event->setDeletedby($userID);
//$entityManager->remove($event);
$entityManager = $this->getDoctrine()->getManager();
$user = $this->getDoctrine()->getRepository(User::class)->find($userID);
$this->setLog($idEvent, "supprimer");
$entityManager->persist($event);
$entityManager->flush();
} else {
$events = $this->getDoctrine()->getRepository(Evenement::class)->findBy(
['toRemove' => $event->getToRemove(), 'coiffeur' => $event->getCoiffeur()]
);
foreach ($events as $event) {
//$entityManager->remove($event);
$event->setSoftdelete("1");
$event->setDeletedby($userID);
$entityManager->persist($event);
}
$entityManager->flush();
}
return new JsonResponse(array(
'status' => 'OK',
'code' => 200,
'events' => array(
'id' => $event->getId(),
'title' => $event->getEtat(),
'etat' => $event->getEtat(),
'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
'resourceId' => $event->getCoiffeur()->getId(),
'nomClient' => $event->getNom(),
'tel' => $event->getTel(),
'email' => $event->getEmail(),
'commentaire' => $event->getCommentaire(),
'bgColor' => '#945992',
)
));
}
/**
* @Route("/admin/event/freedays", name="days")
*/
public function freedaysAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
// or add an optional message - seen by developers
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$userID = $this->getUser()->getId();
$eventData = $request->getContent();
$posts = json_decode($eventData);
$data = $posts->formValues;
$days = [1 => 'lundi', 2 => 'mardi', 3 => 'mercredi', 4 => 'jeudi',
5 => 'vendredi', 6 => 'samedi', 7 => 'dimanche'];
///var_dump($data->jours);die;
$_days = array_intersect($days, $data->jours);
foreach ($data->coiffeurs as $coiffeur) {
$startDate = $posts->startDate;
$endDate = $posts->endDate;
$datesToInsert = [];
$rrules = time();
foreach ($_days as $key => $value) {
for ($i = strtotime($startDate); $i <= strtotime($endDate); $i = strtotime('+1 day', $i)) {
if (date('N', $i) == $key) {
$start = str_replace(":", "", str_replace("-", "", $startDate));
$end = str_replace(":", "", str_replace("-", "", $endDate));
$start_formated = date('Y-m-d', $i) . " " . date('H:i:s', strtotime($startDate));
$end_formated = date('Y-m-d', $i) . " " . date('H:i:s', strtotime($endDate));
$entityManager = $this->getDoctrine()->getManager();
$event = new Evenement();
$coiffeur = $this->getDoctrine()->getRepository(Coiffeur::class)->find($coiffeur);
$dateDebutPlusHour = \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($start_formated)));
$event->setDatedebut($dateDebutPlusHour);
$event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($end_formated))));
$event->setToRemove($rrules);
$event->setCoiffeur($coiffeur);
$event->setUser($userID);
$event->setPrestation(null);
$event->setEtat(2);
$event->setEmail("");
$event->setCommentaire("");
$event->setTel("");
$event->setNom("");
$entityManager->persist($event);
$entityManager->flush();
}
}
}
}
return new JsonResponse(array(
'status' => 'OK',
'code' => 200
));
}
}