<?php
namespace App\Controller\Vehicules;
use App\Entity\Clients\Client;
use App\Entity\FO\Societe;
use App\Entity\GestionComerciale\Commande;
use App\Entity\GestionComerciale\Facture;
use App\Entity\GestionComerciale\OrdreRep;
use App\Entity\Vehicules\Marque;
use App\Entity\Vehicules\Modele;
use App\Entity\Vehicules\VehiculeClient;
use App\Form\Vehicules\SupprimerVehiculeClientType;
use App\Form\Vehicules\VehiculeClientType;
use App\Library\Datatable\Util\Datatable;
use App\Model\GestionCommerciale\TypeDocumentCommercial;
use App\Security\Voter\EntityVoter;
use App\Service\FO\Logo;
use App\Service\Utilisateur\ColonneTableauService;
use App\Service\Vehicules\DocumentVehicule;
use App\Service\Vehicules\ImageVehicule;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Snappy\Pdf;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class VehiculeClientController extends AbstractController
{
/**
* @Route("/vehicule/client/historique/pdf/{id}", name="dtc_vehicule_client_historique_pdf")
*/
public function pdfHistoriqueAction(Request $request, VehiculeClient $vehiculeClient, $retour = true, EntityManagerInterface $em, Pdf $snappy)
{
$societe = $em->getRepository(Societe::class)->find(1);
$date_Y = date("Y");
$date_M = date("m");
$date_D = date("d");
$date = $date_Y.'/'.$date_M.'/'.$date_D;
$chemin_pdf = 'PDF/VEHICULES/'.$date.'/V-'.$vehiculeClient->getId().'.pdf';
if (file_exists($chemin_pdf)) {
unlink($chemin_pdf);
}
//return $this->render('GestionComerciale/BonPreparation/template_pdf.html.twig',array('commande' => $bonPreparation,'societe' => $societe));
$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', ['societe' => $societe]);
$header = $this->renderView('FO/PDF/header_vehicule_historique.html.twig', ['societe' => $societe, 'vehiculeClient' => $vehiculeClient]);
//$snappy->setOption('page-size', 'A4');
$snappy->setOption('header-html', $header);
$snappy->setOption('footer-html', $footer);
$snappy->setOption('orientation', "Landscape");
//$snappy->setOption('header-html',$footer);
$snappy->setOption('margin-bottom', "10");
//$snappy->setOption('margin-top',"5");
//$snappy->setOption('zoom', 1 );
//$snappy->setOption('dpi', 300 );
$ors = $em->getRepository(Commande::class)->getOrVehiculeClient($vehiculeClient);
$snappy->generateFromHtml(
$this->renderView(
'Vehicules/VehiculeClient/historique_pdf.html.twig',
[
'vehiculeClient' => $vehiculeClient,
'ors' => $ors,
'societe' => $societe,
]
),
$chemin_pdf
);
if ($retour == true) {
return $this->render('FO/PDF/conteneur_pdf.html.twig', ['chemin_pdf' => '/'.$chemin_pdf]);
//return new RedirectResponse("/".$chemin_pdf);
}
}
/**
* @Route("/vehicule/client/historique/{id}", name="dtc_vehicule_client_historique")
*/
public function historiqueAction(Request $request, VehiculeClient $vehiculeClient)
{
$titre_modal = "Historique véhicule";
$errors = "";
$rendu = $this->renderView('Vehicules/VehiculeClient/historique.html.twig', ['vehiculeClient' => $vehiculeClient, 'type' => '', 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/vehicule/client/dupliquer/{id}", name="dtc_vehicule_client_dupliquer")
*/
public function dupliquerAction(Request $request, VehiculeClient $vehiculeClient, EntityManagerInterface $em)
{
$vehiculeClient_duplique = clone $vehiculeClient;
$vehiculeClient_duplique->setLibelle("COPIE ".$vehiculeClient_duplique->getLibelle());
$em->persist($vehiculeClient_duplique);
$em->flush();
$this->addFlash(
'notice',
'Véhicule dupliqué avec succès !'
);
return $this->redirectToRoute('dtc_vehicule_client_liste');
}
/**
* @Route("/vehicule/client/nouveau", name="dtc_vehicule_client_ajouter")
*/
public function ajouterAction(Request $request, EntityManagerInterface $em, ImageVehicule $imageService, DocumentVehicule $documentService, ValidatorInterface $validator)
{
$vehiculeClient = new VehiculeClient;
$user = $this->getUser();
$vehiculeClient->setUtilisateur($user);
$form = $this->createForm(VehiculeClientType::class, $vehiculeClient);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$tokenP = $request->request->get('tokenPicture');
$tokenD = $request->request->get('tokenDocument');
if ($form->isValid()) {
$em->persist($vehiculeClient);
$em->flush();
$imageService->sauvegarder($vehiculeClient, 'images', $tokenP);
$documentService->sauvegarder($vehiculeClient, 'documents', $tokenD);
$this->addFlash(
'notice',
'Véhicule client ajouté avec succès !'
);
return $this->redirectToRoute('dtc_vehicule_client_liste');
} else {
$errors = $validator->validate($vehiculeClient);
}
}
return $this->render('Vehicules/VehiculeClient/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
}
/**
* @Route("/vehicule/client/nouveau/{id}", name="dtc_vehicule_client_ajouter2")
*/
public function ajouterAjaxAction(Request $request, $id, EntityManagerInterface $em, Logo $imageService, DocumentVehicule $documentService, ValidatorInterface $validator)
{
$vehiculeClient = new VehiculeClient;
$user = $this->getUser();
$vehiculeClient->setUtilisateur($user);
$clients = $request->get('id');
$redirection = $request->get('redirection');
$get = $request->query->all();
if ($id != "") {
$repoclient = $em->getRepository(Client::class);
$client = $repoclient->find($id);
$vehiculeClient->setClient($client);
}
$form = $this->createForm(VehiculeClientType::class, $vehiculeClient);
$titre_modal = " Nouveau véhicule";
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$tokenP = $request->request->get('tokenPicture');
$tokenD = $request->request->get('tokenDocument');
if ($form->isValid()) {
$em->persist($vehiculeClient);
$em->flush();
$imageService->sauvegarder($vehiculeClient, 'images', $tokenP);
$documentService->sauvegarder($vehiculeClient, 'documents', $tokenD);
if (array_key_exists('table', $get) && $get["table"] != "") {
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => '', 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]]);
} else {
//$this->addFlash( 'notice','Véhicule client ajouté avec succès !');
//$libelle = $vehiculeClient->getMarque()->getLibelle()." ".$vehiculeClient->getModele()->getLibelle()." ".$vehiculeClient->getNumSerie();
$libelle = $vehiculeClient->getLibelle();
return new JsonResponse(
['rendu' => '', 'valide' => '0', 'url' => "", 'type' => 'client', 'libelle' => $client->getNom(), 'id_client' => $client->getId()]
);
}
} else {
$errors = $validator->validate($vehiculeClient);
$rendu = $this->renderView(
'Vehicules/VehiculeClient/ajouterAjax.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'client' => $id, 'vehiculeClient' => $vehiculeClient]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('Vehicules/VehiculeClient/ajouterAjax.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'client' => $id]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/vehicule/client/modifier/{id}", name="dtc_vehicule_client_modifier")
*/
public function modifierAction(Request $request, VehiculeClient $vehiculeClient, EntityManagerInterface $em, ImageVehicule $imageService, DocumentVehicule $documentService,
ValidatorInterface $validator
) {
$user = $this->getUser();
$vehiculeClient->setUtilisateur($user);
$clients = $request->get('id');
$redirection = $request->get('redirection');
$get = $request->query->all();
$id = $vehiculeClient->getClient()->getId();
if ($id != "") {
$repoclient = $em->getRepository(Client::class);
$client = $repoclient->find($id);
$vehiculeClient->setClient($client);
}
$form = $this->createForm(VehiculeClientType::class, $vehiculeClient);
$titre_modal = " Modifier véhicule";
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$tokenP = $request->request->get('tokenPicture');
$tokenD = $request->request->get('tokenDocument');
if ($form->isValid()) {
$em->persist($vehiculeClient);
$em->flush();
$imageService->sauvegarder($vehiculeClient, 'images', $tokenP);
$documentService->sauvegarder($vehiculeClient, 'documents', $tokenD);
if (array_key_exists('table', $get) && $get["table"] != "") {
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => '', 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]]);
} else {
$this->addFlash('notice', 'Véhicule client ajouté avec succès !');
return new JsonResponse(
['rendu' => '', 'valide' => '0', 'url' => "#", 'type' => 'client', 'libelle' => $client->getNom(), 'id_client' => $client->getId()]
);
}
} else {
$errors = $validator->validate($vehiculeClient);
$rendu = $this->renderView(
'Vehicules/VehiculeClient/ajouterAjax.html.twig',
['vehiculeClient' => $vehiculeClient, 'form' => $form->createView(), 'errors' => $errors, 'client' => $id]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView(
'Vehicules/VehiculeClient/ajouterAjax.html.twig',
['vehiculeClient' => $vehiculeClient, 'form' => $form->createView(), 'errors' => $errors, 'client' => $id]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("", name="")
*/
public function ____modifierAction(Request $request, VehiculeClient $vehiculeClient, EntityManagerInterface $em, ImageVehicule $imageService,
DocumentVehicule $documentService, TranslatorInterface $translator, ValidatorInterface $validator
) {
$user = $this->getUser();
$vehiculeClient->setUtilisateur($user);
$form = $this->createForm(VehiculeClientType::class, $vehiculeClient);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$droit = $this->isGranted(EntityVoter::UPDATE, VehiculeClient::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_vehicule_client_modifier', ["id" => $vehiculeClient->getId()]);
}
if ($form->isValid()) {
$imageService->sauvegarder($vehiculeClient, 'images');
$documentService->sauvegarder($vehiculeClient, 'documents');
$em->persist($vehiculeClient);
$em->flush();
$this->addFlash(
'notice',
'Véhicule client sauvegardé avec succès !'
);
return $this->redirectToRoute('dtc_vehicule_client_modifier', ["id" => $vehiculeClient->getId()]);
} else {
$errors = $validator->validate($vehiculeClient);
}
}
return $this->render('Vehicules/VehiculeClient/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'vehiculeClient' => $vehiculeClient]);
}
/**
* @Route("", name="")
*/
public function listerFactureAction(Request $request, VehiculeClient $vehiculesClient, $type = "", ColonneTableauService $serviceColonneTableau, Datatable $datatable)
{
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => false, "orderable" => false];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Facture::class, "vehicule_client__date"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Facture::class, "vehicule_client__reference"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Facture::class, "vehicule_client__ordre_reparation"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Facture::class, "vehicule_client__total_ht"),
];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [5], "visible" => true];
$this->datatableFactures($datatable, $vehiculesClient);
return $this->render('GestionComerciale/Facture/listerVehicule.html.twig', ["vehiculesClientId" => $vehiculesClient->getId(), 'tableauClassColonne' => $tableau_class_cellule]);
}
private function datatableFactures(Datatable $datatable, $vehiculesClient)
{
$datatable->setDatatableId('dta-facture-vehicule')
->setEntity(Commande::class, "x")
->setFields(
[
"ID" => 'x.id',
"Date" => 'x.date',
"Réf" => 'x.reference',
//"Type" => 't.libelle',
"OR" => "c.reference",
"Total HT" => 'x.total',
"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.vehiculesClient', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'auto',
'typeDocument' => "",
],
],
3 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_ordre_reparation_modifier',
'typeDocument' => "commande",
],
],
4 => [
'view' => 'FO/DataTable/prix.html.twig',
],
5 => [
'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 = ["6"];
$where = " v.id = :vehiculesClient
AND
x.dateSuppression IS NULL
AND
s.ordre != :ordreStatutDoc
AND x.typeDocumentCommercial IN (:typeDocumentCommercial)
";
$parameters = ['vehiculesClient' => $vehiculesClient, "typeDocumentCommercial" => $typeDoc, 'ordreStatutDoc' => '0'];
$datatable->setWhere($where, $parameters);
return $datatable;
}
/**
* @Route("/vehicule/client/supprimer/multiple", name="dtc_vehicule_liste_client_supprimer")
*/
public function supprimerMultipleAction(Request $request, EntityManagerInterface $em)
{
$url = $this->generateUrl('dtc_vehicule_client_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
$data = $request->get('dataTables');
$ids = $data['actions'];
$repo = $em->getRepository(VehiculeClient::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',
'Véhicules client supprimé avec succès !'
);
$url = $this->generateUrl('dtc_vehicule_client_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
}
/**
* @Route("/vehicule/client/supprimer/{id}", name="dtc_vehicule_client_supprimer")
*/
public function supprimerAction(Request $request, VehiculeClient $vehiculeClient, EntityManagerInterface $em, ValidatorInterface $validator)
{
$titre_modal = "Demande de confirmation";
$user = $this->getUser();
$repo_commande = $em->getRepository(Commande::class);
$vehicule_commande_existe = $repo_commande->findOneBy(["vehiculesClient" => $vehiculeClient]);
$erreur = "";
//Verifier si un client a une civilité
if (is_object($vehicule_commande_existe)) {
$erreur .= 'Le véhicule n\'est pas supprimable car il est relié à une ou plusieurs commandes.';
}
if ($erreur != "") {
$rendu = $this->renderView('FO/Supprimer/supprimer_impossible.html.twig', ['errors' => $erreur]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
$form = $this->createForm(SupprimerVehiculeClientType::class, $vehiculeClient);
$errors = "";
$form->handleRequest($request);
$get = $request->query->all();
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->remove($vehiculeClient);
$em->flush();
if (array_key_exists('table', $get) && $get["table"] != "") {
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => '', 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]]);
} else {
$this->addFlash('notice', 'Véhicule supprimé avec succès !');
$url = $this->generateUrl('dtc_vehicule_client_liste', []);
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
}
} else {
$errors = $validator->validate($vehiculeClient);
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'id' => $vehiculeClient->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' => $vehiculeClient->getId(), 'type' => '', 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/vehicule/client", name="dtc_vehicule_client_liste")
*/
public function listerAction(Request $request, $client, $id, EntityManagerInterface $em, ColonneTableauService $serviceColonneTableau, Datatable $datatable)
{
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => true, "orderable" => false];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "image"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "libelle"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "marque"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "modele"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "type"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "client"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "kilometrage"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [9],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "puissance"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [10],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "immatriculation"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [11],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "numSerie"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [12],
"visible" => $serviceColonneTableau->getColonneUtilisateur(VehiculeClient::class, "dateControleTechnique"),
];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [13], "visible" => true];
$modele = [];
$repo_marque = $em->getRepository(Marque::class);
$marque = $repo_marque->findBy([], ["libelle" => "ASC"]);
$param = $request->query->all();
if (array_key_exists('marque', $param) and $param["marque"] > 0) {
$parent = $repo_marque->find($param["marque"]);
if (is_object($parent)) {
$repo_modele = $em->getRepository(Modele::class);
$modele = $repo_modele->findBy(["marque" => $parent], ["libelle" => "ASC"]);
}
}
$this->datatable($request, $datatable, $client, $id);
$parametres = [];
//$parametres["parametres"] = $param;
if (is_object($client)) {
return $this->render('Vehicules/VehiculeClient/lister-client.html.twig', [
'client' => $client,
'parametres' => $param,
"marque" => $marque,
"modele" => $modele,
'tableauClassColonne' => $tableau_class_cellule,
]);
} else {
return $this->render('Vehicules/VehiculeClient/lister.html.twig', [
'parametres' => $param,
"marque" => $marque,
"modele" => $modele,
'tableauClassColonne' => $tableau_class_cellule,
]);
}
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Request $request, Datatable $datatable, $client = null)
{
$param = $request->query->all();
$datatable->setDatatableId('dta-vehicules')
->setEntity(VehiculeClient::class, "x")
->setFields(
[
"ID" => 'x.id',
"Img" => 'x.id',
"Libellé" => 'x.libelle',
"Marque" => 'm.libelle',
"Modèle" => 'mod.libelle',
"Type" => 't.libelle',
"Clt" => 'c.nom',
"Km" => 'x.kilometrage',
"Puissance" => 'x.puissance',
"Immat" => 'x.immatriculation',
"Num série" => 'x.numSerie',
"Date CT" => 'x.dateControleTechnique',
"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)
->setRenderers(
[
0 => [
'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',
],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.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',
],
],
5 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_type_modifier',
'typeDocument' => 'typeVehicule',
],
],
6 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
'typeDocument' => 'client',
],
],
11 => [
'view' => 'FO/DataTable/date.html.twig',
],
12 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
'pdf_route' => 'dtc_vehicule_client_historique_pdf',
'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',
],
],
/*3=> array(
'view' => 'FO/DataTable/edit_texte.html.twig',
'params' => array(
'objet' => 'DTCVehiculesBundle:VehiculeClient',
'champ' => 'setImmatriculation',
),
),
4=> array(
'view' => 'FO/DataTable/edit_texte.html.twig',
'params' => array(
'objet' => 'DTCVehiculesBundle:VehiculeClient',
'champ' => 'setNumSerie',
),
),
*/
]
)
->setMultiple(
[
'delete' => [
'title' => 'Non disponible',
'route' => 'dtc_vehicule_liste_client_supprimer' // path to multiple delete route action
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([2, 3, 4, 5, 6]);
$where = "";
$parameters = [];
if (is_object($client)) {
$where .= "c.id = :client";
$parameters["client"] = $client->getId();
}
if (array_key_exists('parametres', $param)) {
if (array_key_exists('client', $param["parametres"]) and $param["parametres"]["client"] > 0) {
//$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["client"] = $param["parametres"]["client"];
if ($where != "") {
$where .= " AND ";
}
$where .= "c.id = :client";
}
if (array_key_exists('marque', $param["parametres"]) and $param["parametres"]["marque"] > 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["marque"] = $param["parametres"]["marque"];
if ($where != "") {
$where .= " AND ";
}
$where .= "x.marque = :marque";
if (array_key_exists('modele', $param["parametres"]) and $param["parametres"]["modele"] > 0) {
$parameters["modele"] = $param["parametres"]["modele"];
$where .= " AND x.modele = :modele";
}
}
}
//echo $where;
if ($where != '') {
//echo $where;
$datatable->setWhere($where, $parameters);
}
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/vehicule/client/grid/{id}", name="dtc_vehicule_client_liste_grid")
*/
public function gridAction(Request $request, Client $client, Datatable $datatable)
{
return $this->datatable($request, $datatable, $client)->execute();
}
/**
* @Route("/vehicule/client/or", name="dtc_vehicule_client_liste_or")
*/
public function listerOrdreRepAction(Request $request, VehiculeClient $vehiculesClient, $type = "", ColonneTableauService $serviceColonneTableau, Datatable $datatable)
{
$visible_col_1 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "id");
$visible_col_2 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "reference");
$visible_col_3 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "date");
$visible_col_4 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "statutCommande");
$visible_col_5 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "refclient");
$visible_col_6 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "client");
$visible_col_7 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "rdv");
$visible_col_8 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "equipier");
$visible_col_9 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "immat");
$visible_col_10 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "marque");
$visible_col_11 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "modele");
$visible_col_12 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "km");
$visible_col_13 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "serie");
$visible_col_14 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "commentaire");
$visible_col_15 = $serviceColonneTableau->getColonneUtilisateur(OrdreRep::class, "refCli");
if ($type == "modal") {
$visible_col_1 = false;
$visible_col_4 = false;
$visible_col_5 = false;
$visible_col_8 = true;
$visible_col_9 = false;
$visible_col_10 = false;
$visible_col_11 = false;
$visible_col_12 = true;
$visible_col_15 = false;
}
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => false, "orderable" => false];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [1], "visible" => $visible_col_1];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [2], "visible" => $visible_col_2];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [3], "visible" => $visible_col_3];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [4], "visible" => $visible_col_4];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [5], "visible" => $visible_col_5];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [6], "visible" => $visible_col_6];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [7], "visible" => $visible_col_7];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [8], "visible" => $visible_col_8];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [9], "visible" => $visible_col_9];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [10], "visible" => $visible_col_10];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [11], "visible" => $visible_col_11];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [12], "visible" => $visible_col_12];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [13], "visible" => $visible_col_13];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [14], "visible" => $visible_col_14];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [15], "visible" => $visible_col_15];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [16], "visible" => true];
$this->datatableOrdreRep( $datatable,$vehiculesClient);
return $this->render('GestionComerciale/OrdreRep/listerVehicule.html.twig', ["vehiculesClientId" => $vehiculesClient->getId(), 'tableauClassColonne' => $tableau_class_cellule]);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableOrdreRep(Datatable $datatable, $vehiculesClient)
{
$datatable
->setDatatableId('dta-or-vehicule')
->setEntity(Commande::class, "x")
->setFields(
[
"ID" => 'x.id',
"Réf" => 'x.reference',
"Date" => 'x.date',
"Statut" => 'sc.id',
"Réf client" => 'c.reference',
"Client" => 'c.nom',
"RDV " => 'x.dateBon',
"Équipier" => 'u.reference',
"Immat" => 'v.immatriculation',
"Marque" => 'm.libelle',
"Modèle" => 'mo.libelle',
"Km" => 'x.kilometrage',
"Num serie" => 'v.numSerie',
"Comm" => 'x.commentaire',
"Réf cmde cli" => 'x.referenceClient',
"Actions" => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.vehiculesClient', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('v.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.statutCommande', 'sc', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('v.modele', 'mo', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.etatCommande', 'ec', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.client', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'x.typeDocumentCommercial = :typeDocumentCommercial AND x.vehiculesClient = :vehiculesClient ',
['vehiculesClient' => $vehiculesClient, 'typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE]
)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_ordre_reparation_modifier',
],
],
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_ordre_reparation_modifier',
],
],
2 => [
'view' => 'FO/DataTable/heure.html.twig',
],
3 => [
'view' => 'FO/DataTable/statut-commande-fournisseur.html.twig',
],
4 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
'typeDocument' => 'client',
],
],
5 => [
'view' => 'FO/DataTable/client.html.twig',
'params' => [],
],
6 => [
'view' => 'FO/DataTable/heure.html.twig',
],
7 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_utilisateur_modifier',
'typeDocument' => 'equipier',
],
],
9 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_marque_modifier',
'typeDocument' => 'marqueVehiculeOr',
],
],
10 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_modele_modifier',
'typeDocument' => 'modeleVehiculeOr',
],
],
13 => [
'view' => 'FO/DataTable/commentaire.html.twig',
],
15 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
//'supprimer_route' => 'dtc_commande_supprimer',
'objet' => Commande::class,
'deplier' => true,
],
],
]
)
->setMultiple(
[
'delete' => [
'title' => 'Non disponible',
'route' => 'dtc_commande_liste_supprimer',
],
]
)
->setOrder("x.date", "desc")
//->setOrder("ec.ordre", "desc")
->setSearch(true)
->setSearchFields([1, 3, 4, 5, 9, 10]);
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function __datatableOrdreRep(Datatable $datatable,$vehiculesClient)
{
$datatable->setEntity(Commande::class, "x")
->setFields(
[
"ID" => 'x.id',
"Réf" => 'x.reference',
"Date" => 'x.date',
"Type" => 'x.id',
"Réf client" => 'c.reference',
"Client" => 'c.nom',
"RDV" => 'x.dateBon',
"Équipier" => 'u.reference',
"Num serie" => 'v.numSerie',
"Comm" => 'x.commentaire',
"Réf cmde cli" => 'x.referenceClient',
"Actions" => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.vehiculesClient', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('v.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('v.modele', 'mo', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.etatCommande', 'ec', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.client', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'x.typeDocumentCommercial = :typeDocumentCommercial AND x.vehiculesClient = :vehiculesClient ',
['vehiculesClient' => $vehiculesClient, 'typeDocumentCommercial' => TypeDocumentCommercial::ORDREREPARATION]
)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_ordre_reparation_modifier',
],
],
2 => [
'view' => 'FO/DataTable/heure.html.twig',
],
3 => [
'view' => 'FO/DataTable/type_or.html.twig',
'params' => [
'edit_route' => 'dtc_ordre_reparation_modifier',
],
],
5 => [
'view' => 'FO/DataTable/client.html.twig',
'params' => [],
],
6 => [
'view' => 'FO/DataTable/heure.html.twig',
],
11 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_ordre_reparation_modifier',
//'supprimer_route' => 'dtc_commande_supprimer',
'objet' => Commande::class,
],
],
]
)
->setMultiple(
[
'delete' => [
'title' => 'Non disponible',
'route' => 'dtc_commande_liste_supprimer',
],
]
)
->setOrder("x.date", "desc")
//->setOrder("ec.ordre", "desc")
->setSearch(true)
->setSearchFields([1, 2, 3, 4, 5]);
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
/**
* @Route("/vehicule/client/grid/or/{id}", name="dtc_vehicule_client_liste_ordre_rep")
*/
public function gridOrdreRepAction(Request $request, VehiculeClient $vehiculesClient,Datatable $datatable)
{
return $this->datatableOrdreRep($datatable,$vehiculesClient)->execute();
}
/**
* @Route("/vehicule/client/grid/facture/{id}", name="dtc_vehicule_client_liste_facture_grid")
*/
public function gridFactureAction(Request $request, VehiculeClient $vehiculesClient, Datatable $datatable)
{
return $this->datatableFactures($datatable, $vehiculesClient)->execute();
}
}