<?php
namespace App\Controller\Clients;
use App\Entity\Adresses\Adresse;
use App\Entity\Articles\Article;
use App\Entity\Articles\Compta;
use App\Entity\Clients\Categorie;
use App\Entity\Clients\Client;
use App\Entity\Clients\HistoriqueClient;
use App\Entity\Clients\Type;
use App\Entity\Ged\Fichier;
use App\Entity\GestionComerciale\ArticleCommande;
use App\Entity\GestionComerciale\Commande;
use App\Entity\Localisation\Zone;
use App\Entity\Notes\Note;
use App\Entity\Remises\Remise;
use App\Entity\Vehicules\VehiculeClient;
use App\Form\Clients\Client2Type;
use App\Form\Clients\ClientType;
use App\Form\Clients\SupprimerClientType;
use App\Library\Datatable\Util\Datatable;
use App\Model\GestionCommerciale\TypeDocumentCommercial;
use App\Security\Voter\EntityVoter;
use App\Service\Clients\ClientCategorieRemiseClientService;
use App\Service\Clients\ClientCategorieService;
use App\Service\Clients\ClientService;
use App\Service\Clients\DocumentClient;
use App\Service\FO\Logo;
use App\Service\GestionComerciale\AcompteService;
use App\Service\GestionComerciale\EmailService;
use App\Service\GestionComerciale\NumerotationDocumentService;
use App\Service\Localisation\ZoneService;
use App\Service\Utilisateur\ColonneTableauService;
use Doctrine\ORM\EntityManagerInterface;
use JMS\Serializer\SerializerBuilder;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormError;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class ClientController extends AbstractController
{
/**
* @Route("/debugsolde/{id}", name="dtc_debug_solde")
*/
public function debugSoldeAction()
{
//echo "<div>TEST</div>";
//$acompteService = $this->get('dtc.acompte');
//$soldeClient = $acompteService->getSoldeClientTest($client);
}
/**
* @Route("/client/dupliquer/{id}", name="dtc_client_dupliquer")
*/
public function dupliquerAction(Request $request, Client $client, EntityManagerInterface $em, NumerotationDocumentService $numerotationService, TranslatorInterface $translator)
{
$repoClient = $em->getRepository(Client::class);
$derclient = $repoClient->getDernierClient();
$derclient = $derclient + 1;
$client_duplique = clone $client;
//$article_duplique->setId(null);
$client_duplique->setNom("COPIE ".$client_duplique->getNom());
$codeCompta = "411{$derclient}";
$codeCompta = "C".str_pad($derclient, 5, '0', STR_PAD_LEFT);
$client->setReference($numerotationService->generer($client));
$client->setNumeroReference($derclient);
$client_duplique->setCodeComptable($codeCompta);
$adresse = new Adresse();
$adresse->setLibelle('Adresse par défaut');
$adresse->setLivraisonDefaut(true);
$adresse->setFacturationDefaut(true);
$adresse->setFacturationExpeditionDefaut(true);
$client_duplique->addAdress($adresse);
$em->persist($client_duplique);
$em->flush();
$em->refresh($client_duplique);
$this->addFlash(
'notice',
$translator->trans('Client dupliqué avec succès !')
);
return $this->redirectToRoute('dtc_client_modifier', ["id" => $client_duplique->getId()]);
//return $this->redirectToRoute($url);
//return $this->redirectToRoute('dtc_client_liste');
}
/**
* @Route("/client/modal/nouveau", name="dtc_client_ajouter_modal")
*/
public function ajouterModalSimplifieAction(Request $request, EntityManagerInterface $em, NumerotationDocumentService $numerotationService,
ClientCategorieService $clientCategorieService, ClientCategorieRemiseClientService $clientCategorieRemiseClientService,
TranslatorInterface $translator, ValidatorInterface $validator
) {
$titre_modal = $translator->trans("Nouveau client");
$client = new Client;
$client->setTypeClient($em->getRepository(Type::class)->find(1));
$france_obj = $em->getRepository(Zone::class)->find(370095);
$user = $this->getUser();
$client->setUtilisateur($user);
$adresse = new Adresse();
$adresse->setLibelle('Adresse par défaut');
$adresse->setLivraisonDefaut(true);
$adresse->setFacturationDefaut(true);
$adresse->setFacturationExpeditionDefaut(true);
$adresse->setPays($france_obj);
$client->addAdress($adresse);
$categories_remise = $request->request->get('categories_remise');
$categorie_client_enfants = $request->request->get('categorie_client_enfants');
$form = $this->createForm(Client2Type::class, $client);
$errors = "";
$errorsSup = [];
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ( ! is_object($adresse->getVille()) or $adresse->getNumero() == "" or $adresse->getRue() == "") {
$error = new FormError("Adresse obligatoire (Numéro,Rue,Ville)");
$form->get('prenom')->addError($error);
}
//if ($form->isValid() && count($categories_remise)>0 && count($categorie_client_enfants)>0) {
if ($form->isValid()) {
$em = $em;
$repoClient = $em->getRepository(Client::class);
$derclient = $repoClient->getDernierClient();
$derclient = $derclient + 1;
$codeCompta = "411{$derclient}";
$codeCompta = "C".str_pad($derclient, 5, '0', STR_PAD_LEFT);
$libelle_adresse = trim($client->getNom()." ".$client->getPrenom());
$adresse->setLibelle($libelle_adresse);
$client->setReference($numerotationService->generer($client));
$client->setNumeroReference($derclient);
$client->setCodeComptable($codeCompta);
$client->setPays($adresse->getPays());
$client->setCodePostal($adresse->getCodePostal());
$client->setVille($adresse->getVille());
if ( ! empty($request->request->get('liste_categorie_client_racine'))) {
$categorie = $em->getRepository(Categorie::class)->find($request->request->get('liste_categorie_client_racine'));
if (is_object($categorie)) {
$client->setCompta($categorie->getCompta());
}
}
$url = '#';
$em = $em;
$em->persist($client);
$em->flush();
//$clientCategorieService->sauvegarder($client,$request->request->get('categories'));
$clientCategorieService->sauvegarder($client, $request->request->get('liste_categorie_client_racine'), $categorie_client_enfants);
$clientCategorieRemiseClientService->sauvegarder($client, $request->request->get('categories_remise'));
$libelle = $client->getNom()." ".$client->getPrenom();
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'client', 'libelle' => $libelle, 'id_client' => $client->getId()],
200,
['Content-Type' => 'application/json']);
} else {
$errors = $validator->validate($client);
//if(count($categories_remise) == 0) $errorsSup[] = 'Le client n\'a pas de catégorie de remise définie! ';
//if(count($categorie_client_enfants) == 0) $errorsSup[] = 'Le client n\'a pas de catégorie définie! ';
$rendu = $this->renderView(
'Clients/Client/ajouter_modal_simplifie.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup, 'client' => $client]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
} else {
}
$rendu = $this->renderView(
'Clients/Client/ajouter_modal_simplifie.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup, 'client' => $client]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/client/modal/{id}", name="dtc_client_afficher_modal")
*/
public function afficherModalAction(Request$request, Client $client, EntityManagerInterface $em,
ClientService $clientService,ClientCategorieRemiseClientService $clientCategorieRemiseClientService,
ClientCategorieService $clientCategorieService,ValidatorInterface $validator,Datatable $datatable, TranslatorInterface $translator
)
{
$url = $this->generateUrl('dtc_client_modifier', ["id" => $client->getId()]);
$titre_modal = "<a href='" . $url . "' target='_blank'>" . $client->getNom() . "</a>";
$user = $this->getUser();
//$form = $this->createForm(new ClientType($em), $client);
$form = $this->createForm(Client2Type::class, $client);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
//vérifier quel champs a été modifié pour l'historique
$clientService->verifierChampsModifier($client);
$clientCategorieRemiseClientService->sauvegarder($client, $request->request->get('categories_remise'));
if ($form->isValid()) {
$url = '#';
$em->persist($client);
$em->flush();
//$clientCategorieService->sauvegarder($client,$request->request->get('categories'));
$clientCategorieService->sauvegarder($client, $request->request->get('liste_categorie_client_racine'), $request->request->get('categorie_client_enfants'));
$libelle = $client->getPrenom() . " " . $client->getNomAvecAdresse();
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'client_modifier', 'libelle' => $libelle, 'id_client' => $client->getId()],
200,
['Content-Type' => 'application/json']);
} else {
$errors = $validator->validate($client);
//$rendu = $this->renderView('Clients/Client/afficher_modal.html.twig', array('client'=>$client,'form' => $form->createView(),'errors'=>$errors));
$rendu = $this->renderView('Clients/Client/ajouter_modal_simplifie.html.twig', ['client' => $client, 'form' => $form->createView(), 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$param = [];
$dateDebut = new \DateTime();
$dateDebut->sub(new \DateInterval('P1Y'));
$dateFin = new \DateTime();
$param['date_debut'] = $dateDebut->format("m/Y");
$param['date_fin'] = $dateFin->format("m/Y");
$repoCommande = $em->getRepository(Commande::class);
//$valeurs = $repoCommande->suiviConsommation($param);
$param['client'] = $client->getId();
$caMois = $repoCommande->caMois($param);
$this->datatableNotes($client, $datatable, $translator);
$this->datatableCommandes($client, $datatable, $translator);
//$rendu = $this->renderView('Clients/Client/afficher_modal.html.twig', array("parametres"=>$param,"caMois"=>$caMois,'client'=>$client,'form' => $form->createView(),'errors'=>$errors));
$rendu = $this->renderView(
'Clients/Client/ajouter_modal_simplifie.html.twig',
["parametres" => $param, "caMois" => $caMois, 'client' => $client, 'form' => $form->createView(), 'errors' => $errors]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("", name="")
*/
public function ajouterModalAction(Request $request, EntityManagerInterface $em, NumerotationDocumentService $numerotationService,
ClientCategorieService $clientCategorieService, ClientCategorieRemiseClientService $clientCategorieRemiseClientService,
TranslatorInterface $translator, ValidatorInterface $validator
) {
$titre_modal = $translator->trans("Nouveau client");
$client = new Client;
$client->setTypeClient($em->getRepository(Type::class)->find(1));
$user = $this->getUser();
$client->setUtilisateur($user);
$adresse = new Adresse();
$adresse->setLibelle('Adresse par défaut');
$adresse->setLivraisonDefaut(true);
$adresse->setFacturationDefaut(true);
$adresse->setFacturationExpeditionDefaut(true);
$client->addAdress($adresse);
$categories_remise = $request->request->get('categories_remise');
$categorie_client_enfants = $request->request->get('categorie_client_enfants');
$form = $this->createForm(Client2Type::class, $client);
$errors = "";
$errorsSup = [];
$form->handleRequest($request);
if ($form->isSubmitted()) {
//if ($form->isValid() && count($categories_remise)>0 && count($categorie_client_enfants)>0) {
if ($form->isValid()) {
$repoClient = $em->getRepository(Client::class);
$derclient = $repoClient->getDernierClient();
$derclient = $derclient + 1;
$codeCompta = "411{$derclient}";
$codeCompta = "C".str_pad($derclient, 5, '0', STR_PAD_LEFT);
$client->setReference($numerotationService->generer($client));
$client->setNumeroReference($derclient);
$client->setCodeComptable($codeCompta);
$client->setPays($adresse->getPays());
$client->setCodePostal($adresse->getCodePostal());
$client->setVille($adresse->getVille());
$url = '#';
$em = $em;
$em->persist($client);
$em->flush();
//$clientCategorieService->sauvegarder($client,$request->request->get('categories'));
$clientCategorieService->sauvegarder($client, $request->request->get('liste_categorie_client_racine'), $categorie_client_enfants);
$clientCategorieRemiseClientService->sauvegarder($client, $request->request->get('categories_remise'));
$libelle = $client->getNom()." ".$client->getPrenom();
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'client', 'libelle' => $libelle, 'id_client' => $client->getId()],
200,
['Content-Type' => 'application/json']);
} else {
$errors = $validator->validate($client);
//if(count($categories_remise) == 0) $errorsSup[] = 'Le client n\'a pas de catégorie de remise définie! ';
//if(count($categorie_client_enfants) == 0) $errorsSup[] = 'Le client n\'a pas de catégorie définie! ';
$rendu = $this->renderView('Clients/Client/ajouter_modal.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup, 'client' => $client]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
} else {
}
$rendu = $this->renderView('Clients/Client/ajouter_modal.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup, 'client' => $client]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/client/nouveau", name="dtc_client_ajouter")
*/
public function ajouterAction(Request $request, EntityManagerInterface $em, NumerotationDocumentService $numerotationService, Logo $logo, DocumentClient $documentClient,
ClientCategorieService $clientCategorieService, ClientCategorieRemiseClientService $clientCategorieRemiseClientService, ClientService $clientService,
TranslatorInterface $translator, ValidatorInterface $validator
) {
$user = $this->getUser();
$client = new Client;
$repo_client = $em->getRepository(Client::class);
$client->setTypeClient($em->getRepository(Type::class)->find(1));
$client->setCompta($em->getRepository(Compta::class)->find(42));
$client->setUtilisateur($user);
$adresse = new Adresse();
$adresse->setLibelle('Adresse par défaut');
$adresse->setLivraisonDefaut(true);
$adresse->setFacturationDefaut(true);
$client->addAdress($adresse);
$categories_remise = $request->request->get('categories_remise');
$categorie_client_enfants = $request->request->get('categorie_client_enfants');
$form = $this->createForm(Client2Type::class, $client);
$errors = "";
$errorsSup = [];
$form->handleRequest($request);
if ($form->isSubmitted()) {
$tokenP = $request->request->get('tokenPicture');
$email_existe = false;
$client_email = $repo_client->findOneBy(["email" => $client->getEmail()]);
if (is_object($client_email)) {
$email_existe = true;
}
if ($client->getEmail() == "") {
$email_existe = false;
}
//if ($form->isValid() && !$email_existe && count($categories_remise)>0 && count($categorie_client_enfants) > 0 ) {
if ($form->isValid() && ! $email_existe) {
$repoClient = $em->getRepository(Client::class);
$derclient = $repoClient->getDernierClient();
$derclient = $derclient + 1;
$codeCompta = "411{$derclient}";
$codeCompta = "C".str_pad($derclient, 5, '0', STR_PAD_LEFT);
$client->setReference($numerotationService->generer($client));
$client->setNumeroReference($derclient);
//$client->setReference($derclient);
$client->setCodeComptable($codeCompta);
$post = $request->request->all();
if (array_key_exists('joursLivraison', $post)) {
$serialize_jours_livraison = serialize($post["joursLivraison"]);
$client->setJoursLivraison($serialize_jours_livraison);
}
$adresses = $client->getAdresses();
foreach ($adresses as $adresse) {
if ( ! is_object($adresse->getPays())) {
//echo "ERREUR PAYS";
if (array_key_exists('paysSelect', $post) && $post["paysSelect"] != '') {
$post["paysSelect"] = substr($post["paysSelect"], 1, -1);
$typePays = $em->getRepository(\App\Entity\Localisation\Type::class)->find(1);
$pays = new Zone();
$pays->setTitre($post["paysSelect"]);
$pays->setTitreFormat($post["paysSelect"]);
$pays->setType($typePays);
$pays->setUtilisateur($user);
$em->persist($pays);
$adresse->setPays($pays);
$post = $request->request->all();
} else {
$adresse->setPays(null);
}
} else {
$pays = $adresse->getPays();
}
if ( ! is_object($adresse->getVille())) {
if (array_key_exists('villeSelectaj', $post) && $post["villeSelect"] != '') {
$post["villeSelect"] = substr($post["villeSelect"], 1, -1);
$post["codePostalSelect"] = substr($post["codePostalSelect"], 1, -1);
$typeVille = $em->getRepository(Type::class)->find(4);
$ville = new Zone();
$ville->setTitre($post["villeSelect"]);
$ville->setTitreFormat($post["villeSelect"]);
$ville->setCodePostal($post["codePostalSelect"]);
$ville->setType($typeVille);
$ville->setUtilisateur($user);
$em->persist($ville);
$adresse->setVille($ville);
$adresse->setCodePostal($ville);
$post = $request->request->all();
} else {
$adresse->setVille(null);
$adresse->setCodePostal(null);
}
} else {
$ville = $adresse->getVille();
}
}
$em->persist($client);
$em->flush();
$em->refresh($client);
//$clientCategorieService->sauvegarder($client,$request->request->get('categories'));
$clientCategorieService->sauvegarder($client, $request->request->get('liste_categorie_client_racine'), $categorie_client_enfants);
$clientCategorieRemiseClientService->sauvegarder($client, $request->request->get('categories_remise'));
$logo->sauvegarder($client, 'client', $tokenP);
$documentClient->sauvegarder($client, 'documents', $tokenP);
$this->addFlash(
'notice',
$translator->trans('Client ajouté avec succès !')
);
$message_historique = [];
$message_historique["titre"] = "Création d'un client";
$message_historique["message"] = trim($client->getPrenom()." ".$client->getNom());
$clientService->creerHistorique($client, 'defaut', $message_historique);
if ($client->getEmail() != "") {
if ($this->getParameter('domaine_prestashop') != '') {
@fopen('http://'.$this->getParameter('domaine_prestashop').'/67PHEAuaps4P4h3/clients.php?id_client='.$client->getId(), 'r');
}
}
return $this->redirectToRoute('dtc_client_modifier', ["id" => $client->getId()]);
//return $this->redirectToRoute('dtc_client_liste');
} else {
$errors = $validator->validate($client);
if ($email_existe) {
$errorsSup[] = 'Adresse email non disponible car elle appartient à '.$client_email->getNom()." ".$client_email->getPrenom()." (".$client_email->getReference().")";
}
//if(count($categories_remise) == 0) $errorsSup[] = 'Le client n\'a pas de catégorie de remise définie! ';
//if(count($categorie_client_enfants) == 0) $errorsSup[] = 'Le client n\'a pas de catégorie définie! ';
}
}
return $this->render('Clients/Client/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup]);
}
/**
* @Route("/client/supprimer/multiple", name="dtc_client_liste_supprimer")
*/
public function supprimerMultipleAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator)
{
$url = $this->generateUrl('dtc_client_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
$data = $request->get('dataTables');
$ids = $data['actions'];
$em = $em;
$repo = $em->getRepository(Client::class);
for ($i = 0; $i < count($ids); $i++) {
$v = $repo->find($ids[$i]);
if (is_object($v)) {
$em->remove($v);
}
}
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Clients supprimés avec succès !')
);
$url = $this->generateUrl('dtc_client_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
}
/**
* @Route("/client/supprimer/{id}", name="dtc_client_supprimer")
*/
public function supprimerAction(Request $request, Client $client, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Demande de confirmation");
$user = $this->getUser();
$form = $this->createForm(SupprimerClientType::class, $client);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$chaine = "XXXXXXX";
$client->setNom($chaine);
$client->setPrenom($chaine);
//$client->setRaisonSociale($chaine);
$client->setTelephone($chaine);
$client->setTelephone2($chaine);
$client->setEmail($chaine);
$client->setNumTva($chaine);
$client->setCommentaire($chaine);
$client->setLogo(null);
$client->setPays(null);
$client->setVille(null);
$client->setCodePostal(null);
$client->setSiren($chaine);
$client->setSiret($chaine);
$client->setIban($chaine);
$client->setBic($chaine);
$client->setBanque($chaine);
$client->setNCpteBanque($chaine);
$client->setTva(null);
$client->setCivilite(null);
$client->setDateSuppression(new \Datetime());
$em->persist($client);
//$em->remove($client);
$em->flush();
$this->addFlash('notice', $translator->trans('Client supprimé avec succès !'));
$url = $this->generateUrl('dtc_client_liste', []);
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$errors = $validator->validate($client);
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'id' => $client->getId(), 'type' => '']);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'id' => $client->getId(), 'type' => '', 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/client/modifier/{id}", name="dtc_client_modifier")
* @Route("/client/voir/{id}", name="dtc_client_voir")
*/
public function modifierAction(Request $request, Client $client, EntityManagerInterface $em, ClientService $clientService, ClientCategorieService $clientCategorieService,
ClientCategorieRemiseClientService $clientCategorieRemiseClientService, TranslatorInterface $translator,
ValidatorInterface $validator, ZoneService $zoneService, Logo $logoService, DocumentClient $documentService, Datatable $datatable, EmailService $emailService
) {
$user = $this->getUser();
$client->setUtilisateur($user);
$form = $this->createForm(ClientType::class, $client);
$errors = "";
$errorsSup = [];
$form->handleRequest($request);
$categories_remise = $request->request->get('categories_remise');
$categorie_client_enfants = $request->request->get('categorie_client_enfants');
$repoDossier = $em->getRepository(Fichier::class);
$parent = $repoDossier->find(2);
$fichier = $repoDossier->findOneBy(["client" => $client, "type" => "dossier", "parent" => $parent]);
if ( ! is_object($fichier)) {
$fichier = new Fichier();
$fichier->setUtilisateur($user);
$fichier->setType("dossier");
$fichier->setRenomme(true);
$fichier->setSupprimable(false);
$fichier->setModifiable(false);
$fichier->setClient($client);
$fichier->setParent($parent);
$libelle_ged = trim($client->getReference());
$fichier->setLIbelle($libelle_ged);
$em->persist($fichier);
$enfant2 = new Fichier();
$enfant2->setUtilisateur($user);
$enfant2->setType("dossier");
$enfant2->setRenomme(true);
$enfant2->setSupprimable(false);
$enfant2->setModifiable(false);
$enfant2->setClient($client);
$enfant2->setParent($fichier);
$enfant2->setLibelle("Documents");
$em->persist($enfant2);
$enfant3 = new Fichier();
$enfant3->setUtilisateur($user);
$enfant3->setType("dossier");
$enfant3->setRenomme(true);
$enfant3->setSupprimable(false);
$enfant3->setModifiable(false);
$enfant3->setClient($client);
$enfant3->setParent($fichier);
$enfant3->setLibelle("Divers");
$em->persist($enfant3);
$em->flush();
}
/*
$repo_categorie_remise = $em->getRepository('DTCRemisesBundle:CategorieRemiseClient');
//$categories = $repo_categorie_remise->getCategorieRemiseClient();
*
*/
if ($form->isSubmitted()) {
//vérifier quel champs a été modifié pour l'historique
$clientService->verifierChampsModifier($client);
$repo_client = $em->getRepository(Client::class);
$clientCategorieService->sauvegarder($client, $request->request->get('liste_categorie_client_racine'), $request->request->get('categorie_client_enfants'));
$clientCategorieRemiseClientService->sauvegarder($client, $categories_remise);
$email_existe = false;
$client_email = $repo_client->emailExiste($client);
if (is_object($client_email)) {
$email_existe = true;
} else {
$email_existe = false;
}
if ($client->getEmail() == "") {
$email_existe = false;
}
$a_des_enfants = false;
if ( ! $client->getGroupe()) {
$repo_client = $em->getRepository(Client::class);
$total_enfants = $repo_client->getTotalEnfantClient($client);
if ($total_enfants["total"] > 0) {
$a_des_enfants = true;
$client->setGroupe(true);
}
}
//if ($form->isValid() && !$email_existe && count($categories_remise)>0 && count($categorie_client_enfants) > 0 ) {
if ($form->isValid() && ! $email_existe && ! $a_des_enfants) {
//if ($form->isValid() && count($categories_remise)>0 && count($categorie_client_enfants)>0 ) {
$droit = $this->isGranted(EntityVoter::UPDATE, Client::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_client_modifier', ["id" => $client->getId()]);
}
if ($client->getPrenom() == "") {
$client->setPrenom(" ");
}
if ($client->getNom() == "") {
$client->setNom(" ");
}
$post = $request->request->all();
if (array_key_exists('joursLivraison', $post)) {
$serialize_jours_livraison = serialize($post["joursLivraison"]);
$client->setJoursLivraison($serialize_jours_livraison);
}
$em->persist($client);
$em->flush();
//echo count($client->getCategorieRemiseClientClient());
/*
$clientCategorieService = $this->container->get('dtc.clientcategorie');
$clientCategorieService->sauvegarder($client,$request->request->get('liste_categorie_client_racine'),$request->request->get('categorie_client_enfants'));
$clientCategorieRemiseClientService = $this->container->get('dtc.clientcategorieremiseclient');
$clientCategorieRemiseClientService->sauvegarder($client,$categories_remise);
*/
$villeSelect = $request->request->get('villeSelect');
$codePostalSelect = $request->request->get('codePostalSelect');
//echo $villeSelect.' - '.$codePostalSelect;
$zoneService->sauvegarder($client, 'client', ['ville' => $request->request->get('villeSelect'), 'codePostal' => $request->request->get('codePostalSelect')]);
$logoService->sauvegarder($client, 'client');
$documentService->sauvegarder($client, 'documents');
$this->addFlash('notice', $translator->trans('Client sauvegardé avec succès !!'));
$message_historique = [];
$message_historique["titre"] = "Modification du client";
$message_historique["message"] = trim($client->getPrenom()." ".$client->getNom());
$clientService->creerHistorique($client, 'defaut', $message_historique);
if ($client->getEmail() != "") {
if ($this->getParameter('domaine_prestashop') != '') {
@fopen('http://'.$this->getParameter('domaine_prestashop').'/67PHEAuaps4P4h3/clients.php?id_client='.$client->getId(), 'r');
}
}
return $this->redirectToRoute('dtc_client_modifier', ["id" => $client->getId()]);
} else {
//$errors = array();
$errors = $validator->validate($client);
if ($email_existe) {
$errorsSup[] = 'Adresse email non disponible car elle appartient à '.$client_email->getNom()." ".$client_email->getPrenom()." (".$client_email->getReference().")";
}
if ($a_des_enfants) {
$errorsSup[] = 'Le client a encore des enfants, il est obligatoirement un groupe';
}
//if(count($categorie_client_enfants) == 0) $errorsSup[] = 'Le client n\'a pas de catégorie définie! ';
}
}
$this->datatableVehicules($client, $datatable, $translator);
$this->datatableCommandes($client, $datatable, $translator);
$this->datatableRemises($client, $datatable, $translator);
$this->datatableNotes($client, $datatable, $translator);
$modal = $request->query->get('modal');
$caMois = [];
$param = $request->query->all();
if ($request->isMethod('GET') and array_key_exists('operation', $param) and $param["operation"] == "stats") {
} else {
$param = [];
$dateDebut = new \DateTime();
$dateDebut->sub(new \DateInterval('P1Y'));
$dateFin = new \DateTime();
$param['date_debut'] = $dateDebut->format("m/Y");
$param['date_fin'] = $dateFin->format("m/Y");
$param['n1'] = 0;
}
$repoCommande = $em->getRepository(Commande::class);
//$valeurs = $repoCommande->suiviConsommation($param);
$param['client'] = $client->getId();
$caMois = $repoCommande->caMois($param);
//print_r($caMois);
$caAnnee = $repoCommande->caAnnee($client);
$caAnneeN1 = $repoCommande->caAnneeN1($client);
$date1ereCommande = $repoCommande->getDate1ereCommandeClient($client);
if ($modal != 1) {
return $this->render('Clients/Client/modifier.html.twig', [
'form' => $form->createView(),
'errors' => $errors,
'client' => $client,
"parametres" => $param,
"caMois" => $caMois,
'errorsSup' => $errorsSup,
'caAnnee' => $caAnnee,
'caAnneeN1' => $caAnneeN1,
'date1ereCommande' => $date1ereCommande,
//'connexionSmtp' => $emailService->getConnexionSmtpClient($client)
]);
} else {
$titre_modal = 'Client '.$client->getPrenom().' '.$client->getNom();
$rendu = $this->renderView('Clients/Client/ajouter_modal2.html.twig', [
'form' => $form->createView(),
'errors' => $errors,
'client' => $client,
'errorsSup' => $errorsSup,
'caAnnee' => $caAnnee,
'caAnneeN1' => $caAnneeN1,
'date1ereCommande' => $date1ereCommande,
]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
/**
* @Route("/client", name="dtc_client_liste")
* @Route("/parc-materiel/{id}/{type}", name="dtc_parc_materiel_liste")
* @Route("/frais-port-fournisseur/{id}/{type}", name="dtc_fournisseur_frais_port_liste")
* @Route("/contact/{id}/{type}", name="dtc_contact_liste")
*/
public function listerAction(Request $request, EntityManagerInterface $em, ColonneTableauService $serviceColonneTableau, Datatable $datatable, TranslatorInterface $translator)
{
$tableau_class_cellule[] = ["className" => " colonne_id", "targets" => [0], "visible" => false, "orderable" => false, "searchable" => false];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "logo"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "nom"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "prenom"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "ville"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "codePostal"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "pays"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [9],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "telephone"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [10],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "telephone2"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [11],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "email"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [12],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Client::class, "tva"),
];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [13], "visible" => true];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id text-center", "targets" => [14], "visible" => true];
$this->datatable($request, $datatable, $translator);
$categorie_enfants = [];
$repo_categorie_client = $em->getRepository(Categorie::class);
$categorie_client_racine = $repo_categorie_client->findBy(["modifiable" => 0]);
$param = $request->query->all();
if (array_key_exists('categorie_client', $param) and $param["categorie_client"] > 0) {
$parent = $repo_categorie_client->find($param["categorie_client"]);
if (is_object($parent)) {
$categorie_enfants = $repo_categorie_client->findBy(["categorieParent" => $parent]);
}
}
$parametres = [];
//$parametres["parametres"] = $param;
return $this->render('Clients/Client/lister.html.twig', [
'parametres' => $param,
"categorie_client" => $categorie_client_racine,
"sous_categorie_client" => $categorie_enfants,
'tableauClassColonne' => $tableau_class_cellule,
]);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
$param = $request->query->all();
$datatable->setEntity(Client::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Logo") => 'x.logo',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Nom") => 'x.nom',
$translator->trans("Prénom") => 'x.prenom',
$translator->trans("Ville") => 'v.titre',
$translator->trans("CP") => 'cp.codePostal',
$translator->trans("Pays") => 'p.titre',
$translator->trans("Téléphone") => 'x.telephone',
$translator->trans("Téléphone 2") => 'x.telephone2',
$translator->trans("Email") => 'x.email',
$translator->trans("TVA") => 'x.numTva',
$translator->trans("Catégorie") => 'x.id',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.ville', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.codePostal', 'cp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.typeClient', 'tp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
],
],
1 => [
'view' => 'FO/DataTable/logo.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
],
],
12 => [
'view' => 'FO/DataTable/categorie_client.html.twig',
'params' => [],
],
13 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
'dupliquer_route' => 'dtc_client_dupliquer',
'supprimer_route' => 'dtc_client_supprimer',
'objet' => Client::class,
'afficher_route_popin' => 'dtc_client_afficher_modal',
],
],
]
)
->setMultiple(
[
'delete' => [
'title' => 'Non disponible',
'route' => 'dtc_client_liste_supprimer',
],
]
)
//->setFilteringType(array(6 => 'e',5 => 'e'))
->setFilteringType([3 => 'e', 6 => 'e', 5 => 'e'])
->setOrder("x.nom", "asc")
->setSearch(true)
->setSearchFields([2, 3, 4, 5, 6, 7, 8, 9, 10]);
/*
->setWhere(
'x.commande = :objet AND x.typeDocumentCommercial = :typeDocumentCommercial',
array('objet' => $objet,'typeDocumentCommercial' => TypeDocumentCommercial::ORDREREPARATION)
)
*/
$where = "";
$parameters = [];
if (array_key_exists('parametres', $param)) {
if (array_key_exists('categorie_client', $param["parametres"]) and $param["parametres"]["categorie_client"] > 0) {
//echo "AZERTYUI";
$datatable->addJoin('x.clientCategorie', 'cc', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->addJoin('cc.categorie', 'catC', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["categorie"] = $param["parametres"]["categorie_client"];
$where .= "catC = :categorie";
if (array_key_exists('sous_categorie_client', $param["parametres"]) and $param["parametres"]["sous_categorie_client"] > 0) {
$datatable->addJoin('x.clientCategorie', 'cc2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->addJoin('cc2.categorie', 'catC2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["sous_categorie"] = $param["parametres"]["sous_categorie_client"];
$where .= " and catC2 = :sous_categorie";
}
}
if (array_key_exists('doublons', $param["parametres"])) {
$this->creerDoublons();
if ($where != '') {
$where .= ' and ';
}
$where .= 'x.doublon = 1';
}
if (array_key_exists('archive', $param["parametres"])) {
if ($where != '') {
$where .= ' and ';
}
$where .= '(x.archive = :archive)';
$parameters["archive"] = 1;
}
} else {
if ($where != '') {
$where .= ' and ';
}
$where .= '(x.archive = :archive or x.archive is NULL)';
$parameters["archive"] = 0;
}
if ($where != '') {
//echo $where;
$datatable->setWhere($where, $parameters);
}
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
private function creerDoublons(EntityManagerInterface $em)
{
$repo_client = $em->getRepository(Client::class);
$conn = $em->getConnection();
$sql = 'UPDATE client__client SET doublon = NULL WHERE doublon = 1';
$tmp = $conn->prepare($sql);
$tmp->executeQuery();
$sql = 'SELECT count(id) as total, id, nom, prenom FROM `client__client` WHERE 1 GROUP BY nom, prenom having total > 1';
$tmp = $conn->prepare($sql);
$tmp = $tmp->executeQuery();
foreach ($tmp->fetchAllAssociative() as $res) {
$clients = $repo_client->findBy(['nom' => $res['nom'], 'prenom' => $res['prenom']]);
foreach ($clients as $client) {
$client->setDoublon(true);
$em->persist($client);
}
}
$em->flush();
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/grid", name="dtc_client_liste_grid")
*/
public function gridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($request, $datatable, $translator)->execute();
}
/**
* @Route("/client/recherche", name="dtc_client_recherche")
*/
public function rechercheAction(Request $request, EntityManagerInterface $em, PaginatorInterface $paginator, AcompteService $serviceAcompte)
{
$q = $request->query->get('q');
$parent = $request->query->get('parent');
$repo = $em->getRepository(Client::class);
$repo_adresse = $em->getRepository(Adresse::class);
$results = $repo->getRechercheClient(trim($q), $parent);
$tabClient = [];
for ($i = 0; $i < count($results); $i++) {
if (is_null($results[$i]["cmp_id"]) or $results[$i]["cmp_id"] == 0) {
$c = $repo->find($results[$i]["id"]);
//$montant = $serviceAcompte->getMontantRembousement($c);
$montant = $serviceAcompte->getSoldeClient($c);
//$montant = str_replace("-","",$montant);
//echo "JJJJ ".$results[$i]["reference"];
} else {
$montant = 0;
}
$results[$i]["avoir"] = round($montant, 2);
//print_r($results[$i]);
//echo "<div><hr/></div>";
}
$pagination = $paginator->paginate(
$results, /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
10/*limit per page*/
);
$pagination_results = $pagination->getItems();
if (count($pagination_results) > 0) {
for ($i = 0; $i < count($pagination_results); $i++) {
$client_obj = $repo->find($pagination_results[$i]["id"]);
if (is_object($client_obj)) {
$adresse = $repo_adresse->findOneBy(['client' => $client_obj, 'visible' => 1, 'facturationDefaut' => 1]);
$libelle_adresse = "";
if (is_object($adresse)) {
if (is_object($adresse->getCodePostal())) {
$libelle_adresse .= " ".$adresse->getCodePostal()->getCodePostal();
}
if (is_object($adresse->getVille())) {
$libelle_adresse .= " ".$adresse->getVille()->getTitre();
}
} else {
$adresse = $repo_adresse->findOneBy(['client' => $client_obj, 'visible' => 1]);
if (is_object($adresse) && is_object($adresse->getCodePostal())) {
$libelle_adresse .= " ".$adresse->getCodePostal()->getCodePostal();
}
if (is_object($adresse) && is_object($adresse->getVille())) {
$libelle_adresse .= " ".$adresse->getVille()->getTitre();
}
}
$pagination_results[$i]["libelle"] = trim($pagination_results[$i]["libelle"]." (".$pagination_results[$i]["reference"]." ".trim($libelle_adresse).")");
}
}
}
$option_placeholde = ["libelle" => "Sélectionnez", "id" => ""];
if ($request->query->getInt('page', 1) == 1) {
array_unshift($pagination_results, $option_placeholde);
}
$pagination->setItems($pagination_results);
$serializer = SerializerBuilder::create()->build();
return JsonResponse::fromJsonString($serializer->serialize($pagination, 'json'));
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableVehicules($client, Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setDatatableId('dta-vehicules')
->setEntity(VehiculeClient::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Image") => 'x.id',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Marque") => 'm.libelle',
$translator->trans("Modèle") => 'mod.libelle',
$translator->trans("Type") => 't.libelle',
$translator->trans("Clt") => 'c.nom',
$translator->trans("Km") => 'x.kilometrage',
$translator->trans("Puissance") => 'x.puissance',
$translator->trans("Immat") => 'x.immatriculation',
$translator->trans("Num série") => 'x.numSerie',
$translator->trans("Date CT") => 'x.dateControleTechnique',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.modele', 'mod', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.type', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.client', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'x.client = :client',
['client' => $client]
)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_client_modifier',
],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_client_modifier',
],
],
1 => [
'view' => 'FO/DataTable/image.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_client_modifier',
],
],
3 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_marque_modifier',
'typeDocument' => 'marqueVehicule',
],
],
4 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_modele_modifier',
'typeDocument' => 'modeleVehicule',
],
],
11 => [
'view' => 'FO/DataTable/date.html.twig',
],
12 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_client_modifier',
'type' => '',
//'dupliquer_route' => 'dtc_vehicule_client_dupliquer',
'supprimer_route' => 'dtc_vehicule_client_supprimer',
'objet' => VehiculeClient::class,
'table' => 'dta-vehicules',
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([2, 3, 4, 5, 6]);
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/vehicule/grid/{id}", name="dtc_client_vehicule_liste_grid")
*/
public function gridVehiculesAction(Request $request, Client $client, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableVehicules($client, $datatable, $translator)->execute();
}
/**
* @Route("/commande/charger-tableau/{id}", name="dtc_client_commande_charger_tableau")
*/
public function chargerTableauAction(Request $request, Client $client)
{
$rendu = $this->renderView('GestionComerciale/Commande/charger_tableau.html.twig', ["client" => $client]);
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("", name="")
*/
public function listerCommandeClientAction(Request $request, Client $client, Datatable $datatable, TranslatorInterface $translator)
{
$tableau_class_cellule = [];
//$tableau_class_cellule[]=array("className"=>" colonne_id","targets"=>array(0),"visible"=>false,"orderable"=>false,"searchable"=> false);
$this->datatableCommandes($client, $datatable, $translator);
return $this->render('GestionComerciale/Commande/lister-client.html.twig', ['tableauClassColonne' => $tableau_class_cellule, 'client' => $client]);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableCommandes($client, Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setDatatableId('dta-commandes')
->setEntity(Commande::class, "x")
->setFields(
[
//$translator->trans("ID") => 'x.id',
$translator->trans("Date") => 'x.date',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Type") => 'x.id',
$translator->trans("Total HT") => 'x.total',
$translator->trans("Total TTC") => 'x.totalTtc',
$translator->trans("Payé ?") => 'x.id',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.typeDocumentCommercial', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.blsCommande', 'bl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.bps', 'bp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.docEnfantsDevis', 'ded', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.docEnfantsCommande', 'dec', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('dec.typeDocumentCommercial', 'dect', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.docEnfantsBP', 'debp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.docEnfantsBL', 'debl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'auto',
'typeDocument' => "",
],
],
3 => [
'view' => 'FO/DataTable/total_ht_commande.html.twig',
],
4 => [
'view' => 'FO/DataTable/prix.html.twig',
],
5 => [
'view' => 'FO/DataTable/facture_est_paye_solde.html.twig',
],
6 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'auto',
'pdf_route' => 'auto',
'objet' => Commande::class,
'deplier' => 'true',
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2]);
/*
$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origineSaisie IN (:origineSaisie) AND x.visible=:visible";
$parameters = array('typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE,"visible"=>"1",'origineSaisie'=>array("commande","devis","bp"));
*/
//$where = "x.client = :client AND x.typeDocumentCommercial IN (:typeDocumentCommercial) and x.origineSaisie IN (:origineSaisie) AND x.visible=:visible";
//$parameters = array('client' => $client,"typeDocumentCommercial"=>array("2","1","3","6","10","7"),"visible"=>"1",'origineSaisie'=>array("commande","devis","bp"));
/*
$where = "x.client = :client AND x.typeDocumentCommercial IN (:typeDocumentCommercial) and x.origineSaisie IN (:origineSaisie)";
$parameters = array('client' => $client,"typeDocumentCommercial"=>array("2","1","3","6","10","7"),'origineSaisie'=>array("commande","devis","bp"));
$typeCmde = array("2");
$typeDoc = array("1","3","6","10","7");
*
*/
/*
13 Ordre de fabrication multiple
12 Facture fournisseur
11 Bon de préparation atelier
10 Devis OR
9 Ordre de fabrication
8 Commande fournisseur
7 Avoir
6 Facture
5 Bon de livraison
4 Bon de préparation
3 Ordre de réparation
2 Commande
1 Devis
*/
//$typeDoc = ["1", "2", "3", "4", "5", "6", "7", "10"];
$typeDoc = array(
TypeDocumentCommercial::DEVIS,
TypeDocumentCommercial::COMMANDE,
TypeDocumentCommercial::ORDREREPARATION,
TypeDocumentCommercial::BP,
TypeDocumentCommercial::BL,
TypeDocumentCommercial::FACTURE,
TypeDocumentCommercial::AVOIR,
TypeDocumentCommercial::DEVISOR
);
//$typeDoc = array(3);
$where = " x.client = :client
AND
x.dateSuppression IS NULL
AND
(s.ordre != :ordreStatutDoc or (x.typeDocumentCommercial = 1))
";
$parameters = ['client' => $client, "typeDocumentCommercial" => $typeDoc, 'ordreStatutDoc' => '0'];
$parameters = ['client' => $client, 'ordreStatutDoc' => '0'];
$where = " x.client = :client
AND x.dateSuppression IS NULL
AND (s.ordre != :ordreStatutDoc or (x.typeDocumentCommercial = 1))";
$where .= " AND (";
//AND t.id IN (:typeDocumentCommercial)
//$where .= " ded.id IS NULL AND (dec.id IS NULL OR dect.id IN (11)) AND debp.id IS NULL AND debl.id IS NULL";
//$where .= " OR (t.id IN (:typeDocumentCommercial))";//dect.id NOT IN (11)
$where .= " (x.typeDocumentCommercial = ".TypeDocumentCommercial::ORDREREPARATION." AND x.statutCommande IN (14,15))";//Ordre de réparation
$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::DEVIS." AND x.visible = 1 AND x.commande IS NULL)";//Devis
$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::DEVISOR." AND x.visible = 1 AND x.commande IS NULL)";//Devis OR
$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::COMMANDE." AND x.visible= 1 )";//Commande
//$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::BL." AND x.visible= 1 AND x.facture IS NULL)";//BL
$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::BL." AND x.visible= 1)";//BL
$where .= " OR (x.typeDocumentCommercial IN (4, 6, 7) AND x.visible= 1)";//bp, facture, avoir
//$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::COMMANDE.")";
$where .= ")";
$datatable->setWhere($where, $parameters);
//echo $where;
//print_r($parameters);
//exit;
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/commande/grid/{id}", name="dtc_client_commande_liste_grid")
*/
public function gridCommandesAction(Request $request, Client $client, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableCommandes($client, $datatable, $translator)->execute();
}
/**
* @Route("", name="")
*/
public function listerPiecesAction(Request $request, Client $client, ColonneTableauService $serviceColonneTableau, Datatable $datatable, TranslatorInterface $translator)
{
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [0], "visible" => false];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(ArticleCommande::class, "libelle"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur("TCClientsBundle:ArticleCommande", "date"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(ArticleCommande::class, "quantite"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-right",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(ArticleCommande::class, "prixBase"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(ArticleCommande::class, "remise"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-right",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur(ArticleCommande::class, "totalHT"),
];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [9], "visible" => true];
$this->datatablePieces($client, $datatable, $translator);
return $this->render(
'Clients/Client/lister-pieces.html.twig',
['tableauClassColonnePieces' => $tableau_class_cellule, 'route' => 'dtc_client_piece_liste_grid', 'clientId' => $client->getId()]
);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatablePieces($client, Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setDatatableId('dta-pieces')
->setEntity(ArticleCommande::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Réf") => 'a.reference',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Date") => 'x.date',
$translator->trans("Commande") => 'c.reference',
$translator->trans("Qté") => "x.quantite",
$translator->trans("Prix unitaire HT") => 'x.prixBase',
$translator->trans("Remise") => 'x.remise',
$translator->trans("Total HT") => "x.totalHt",
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->setWhere(
'c.client = :client and t.id = 2 and s.ordre != 0',
['client' => $client]
)
->addJoin('x.article', 'a', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('c.typeDocumentCommercial', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('c.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_article_modifier',
'typeDocument' => 'article',
],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_article_modifier',
'typeDocument' => 'article',
],
],
3 => [
'view' => 'FO/DataTable/heure.html.twig',
],
4 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
'typeDocument' => 'commande',
],
],
6 => [
'view' => 'FO/DataTable/prix.html.twig',
],
8 => [
'view' => 'FO/DataTable/prix.html.twig',
],
9 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
'objet' => Commande::class,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2, 4]);
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/piece/grid/{id}", name="dtc_client_piece_liste_grid")
*/
public function gridPiecesAction(Request $request, Client $client, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatablePieces($client, $datatable, $translator)->execute();
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableNotes($client, Datatable $datatable, TranslatorInterface $translator)
{
$user = $this->getUser();
$datatable->setDatatableId('dta-notes-clients')
->setEntity(Note::class, "x")
->setFields(
[
//$translator->trans("ID") => 'x.id',
$translator->trans("Message") => 'x.message',
$translator->trans("Cat") => 'cn.libelle',
$translator->trans("Contact") => 'c.nom',
$translator->trans("Date") => 'x.dateSaisie',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.categorie', 'cn', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.contact', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'x.client = :client'
, ['client' => $client]
)
->setGroupBy('x.id')
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/titre_note.html.twig',
'params' => [],
],
2 => [
'view' => 'FO/DataTable/contact.html.twig',
'params' => [],
],
3 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
4 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
'edit_route' => 'dtc_note_modifier',
'supprimer_route' => 'dtc_note_supprimer',
'id' => $client->getId(),
'type' => "client",
'objet' => Note::class,
'width_modal' => 900,
],
],
]
)
->setOrder("x.dateSaisie", "desc")
->setSearch(true)
->setSearchFields([1]);
$where = "x.client = :client AND (x.prive = :prive OR x.prive IS NULL or x.utilisateur = :utilisateur)";
$parameters = ["prive" => 0, "utilisateur" => $user, 'client' => $client];
$datatable->setWhere($where, $parameters);
return $datatable;
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableRemises($client, Datatable $datatable, TranslatorInterface $translator)
{
$categorieRemiseClient = [];
foreach ($client->getCategorieRemiseClientClient() as $crcc) {
$categorieRemiseClient[] = $crcc->getCategorieRemiseClient();
}
$categorieClient = [];
foreach ($client->getClientCategorie() as $crcc) {
//echo "<div>".$crcc->getCategorie()->getLibelle()."</div>";
$categorieClient[] = $crcc->getCategorie();
}
$datatable->setDatatableId('dta-remises-clients')
->setEntity(Remise::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Taux") => 'x.montant',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.client', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.categorieRemiseClientRemise', 'a', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.remiseCategorieClient', 'b', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'
x.parent is null
AND
(
x.client = :client
OR
(a.categorieRemiseClient IN (:categorieRemiseClient) and (x.client IS NULL OR x.client = :client))
OR
(b.categorie IN (:categorieClient) and (x.client IS NULL OR x.client = :client))
)
'
, ['client' => $client, 'categorieRemiseClient' => $categorieRemiseClient, 'categorieClient' => $categorieClient]
)
->setGroupBy('x.id')
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_remise_modifier',
'typeDocument' => '',
],
],
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_remise_modifier',
],
],
3 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_remise_modifier',
'supprimer_route' => 'dtc_remise_client_supprimer',
'objet' => Remise::class,
'deplier' => false,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1]);
return $datatable;
}
/*
private function datatableRemises($client)
{
$datatable = $this->get('datatable');
$datatable ->setDatatableId('dta-remises-clients')
->setEntity("DTCRemisesBundle:Remise", "x")
->setFields(
array(
$translator->trans("ID") => 'x.id',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Taux") => 'x.montant',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id'
)
)
->addJoin('x.client', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'x.client = :client',
array('client' => $client)
)
->setRenderers(
array(
0 => array(
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => array(
'edit_route' => 'dtc_remise_modifier'
),
),
)
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields(array(1))
;
return $datatable;
}
*/
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/remise/grid/{id}", name="dtc_client_remise_liste_grid")
*/
public function gridRemisesAction(Request $request, Client $client, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableRemises($client, $datatable, $translator)->execute();
}
/**
* @Route("/client/note/grid/{id}", name="dtc_client_note_liste_grid")
*/
public function gridNotesAction(Request $request, Client $client, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableNotes($client, $datatable, $translator)->execute();
}
/**
* @Route("/client/search/", name="dtc_client_search")
*/
public function searchAction(Request $request, EntityManagerInterface $em)
{
$query = $request->query->get('q');
$results = $em->getRepository(Client::class)->findByRefOrName($query);
$datas = [];
foreach ($results as $result) {
$datas[] = $result;
}
$response = new JsonResponse();
$response->setData([
'items' => $datas,
]);
return $response;
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableFactures($client, Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setDatatableId('dta-factures-avoirs')
->setEntity(Commande::class, "x")
->setFields(
[
//$translator->trans("ID") => 'x.id',
$translator->trans("Date") => 'x.date',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Type") => 't.libelle',
$translator->trans("Total HT") => 'x.total',
$translator->trans("Total TTC") => 'x.totalTtc',
$translator->trans("Payé ?") => 'x.id',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.typeDocumentCommercial', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.blsCommande', 'bl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.bps', 'bp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.docEnfantsDevis', 'ded', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.docEnfantsCommande', 'dec', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('dec.typeDocumentCommercial', 'dect', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.docEnfantsBP', 'debp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.docEnfantsBL', 'debl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'auto',
'typeDocument' => "",
],
],
3 => [
'view' => 'FO/DataTable/prix.html.twig',
],
4 => [
'view' => 'FO/DataTable/prix.html.twig',
],
5 => [
'view' => 'FO/DataTable/facture_est_paye_solde.html.twig',
],
6 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'auto',
'pdf_route' => 'auto',
'objet' => Commande::class,
'deplier' => 'true',
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2, 3]);
/*
13 Ordre de fabrication multiple
12 Facture fournisseur
11 Bon de préparation atelier
10 Devis OR
9 Ordre de fabrication
8 Commande fournisseur
7 Avoir
6 Facture
5 Bon de livraison
4 Bon de préparation
3 Ordre de réparation
2 Commande
1 Devis
*/
$typeDoc = ["1", "2", "3", "4", "5", "6", "7", "10"];
$typeDoc = array(
TypeDocumentCommercial::DEVIS,
TypeDocumentCommercial::COMMANDE,
TypeDocumentCommercial::ORDREREPARATION,
TypeDocumentCommercial::BP,
TypeDocumentCommercial::BL,
TypeDocumentCommercial::FACTURE,
TypeDocumentCommercial::AVOIR,
TypeDocumentCommercial::DEVISOR
);
//$typeDoc = array(3);
$where = " x.client = :client
AND
x.dateSuppression IS NULL
AND
(s.ordre != :ordreStatutDoc or (x.typeDocumentCommercial = 1))
";
$parameters = ['client' => $client, "typeDocumentCommercial" => $typeDoc, 'ordreStatutDoc' => '0'];
$parameters = ['client' => $client, 'ordreStatutDoc' => '0'];
$where = " x.client = :client
AND x.dateSuppression IS NULL
AND (s.ordre != :ordreStatutDoc or (x.typeDocumentCommercial = 1))";
$where .= " AND (";
/*
$where .= " (x.typeDocumentCommercial = TypeDocumentCommercial::ORDREREPARATION AND x.statutCommande IN (14,15))";//Ordre de réparation
$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::DEVIS." AND x.visible = 1 AND x.commande IS NULL)";//Devis
$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::DEVISOR." AND x.visible = 1 AND x.commande IS NULL)";//Devis OR
$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::COMMANDE." AND x.visible= 1 AND x.origineSaisie IN ('devis', 'commande', 'bp'))";//Commande
$where .= " OR (x.typeDocumentCommercial = ".TypeDocumentCommercial::BL." AND x.visible= 1 AND x.facture IS NULL)";//BL
$where .= " OR (x.typeDocumentCommercial IN (4, 6, 7) AND x.visible= 1)";//bp, facture, avoir
*
*/
$where .= " x.typeDocumentCommercial IN (6, 7) AND x.visible= 1";//bp, facture, avoir
$where .= ")";
$datatable->setWhere($where, $parameters);
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/facture/grid/{id}", name="dtc_client_facture_liste_grid")
*/
public function gridFacturesAction(Request $request, Client $client, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableFactures($client, $datatable, $translator)->execute();
}
/**
* @Route("/client/historique/{client}", name="dtc_client_historique")
*/
public function historiqueAction(Request $request, Client $client, EntityManagerInterface $em, TranslatorInterface $translator)
{
$titre_modal = $translator->trans("Historique du client");
$clients = [];
$clients[] = $client;
//dump($commandes);
$historiques = $em->getRepository(HistoriqueClient::class)->findBy(['client' => $clients], ['date' => 'DESC']);
$rendu = $this->renderView('Clients/Client/historique.html.twig', ['historiques' => $historiques]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal, 'width' => 900]);
}
/**
* @Route("/client/email/is-connected", name="clients__client_is_connected")
*/
public function clientIsConnectedAction(Request $request, EmailService $emailService)
{
$client = new Client();
$client->setMailerUser($request->request->get('mailerUser'));
$client->setMailerPassword($request->request->get('mailerPassword'));
$client->setMailerHost($request->request->get('mailerHost'));
$client->setMailerPort($request->request->get('mailerPort'));
return new JsonResponse(['isConnected'=>$emailService->getConnexionImapClient($client)]);
}
}