<?php
namespace App\Controller;
use Dompdf\Dompdf;
use Dompdf\Options;
use App\Entity\ListNom;
use App\Entity\Location;
use App\Entity\Vehicule;
use App\Service\Listes;
use App\Entity\DevisSend;
use App\Form\DevisSendType;
use App\Entity\LocationLock;
use App\Form\DuplidevisType;
use App\Repository\AgenceRepository;
use App\Repository\UsersRepository;
use App\Repository\GaragesRepository;
use App\Repository\ListNomRepository;
use App\Repository\VehiculeRepository;
use App\Repository\DevisSendRepository;
// Include Dompdf required namespaces
use App\Repository\PersonnelRepository;
use App\Repository\ReductionRepository;
use App\Repository\EntretientRepository;
use App\Repository\OptionveloRepository;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\ProprietaireRepository;
use App\Repository\CaractVehiculeRepository;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\HttpFoundation\Request;
use App\Repository\VersionVehiculesRepository;
use Symfony\Component\HttpFoundation\Response;
use App\Repository\CategorieVehiculeRepository;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class GestiondevisController extends AbstractController
{
/**
* @Route("/admin/devis", name="voir_devis")
*/
public function index(DevisSendRepository $DevisSendRepository, Request $request,DevisSend $DevisSend = null, EntityManagerInterface $manager, AgenceRepository $AgenceRepository)
{
/* if($request->query->get('pdf') != ''){
dd($request->query->get('pdf'));
}*/
function random_3($nbr) {
$chn = '';
for ($i=1;$i<=$nbr;$i++)
// $chn .= chr(floor(rand(0, 25)+97));
$chn .= rand(0, 9);
return $chn;
}
function gentest($DevisSendRepository ){
$test = random_3(6);
$testdevis = $DevisSendRepository->findBy(
['NoDevis' => $test ]
);
if( empty($testdevis) ){
return $test ;
}else{
gentest($DevisSendRepository);
}
}
$form = $this->createForm(DuplidevisType::class, $DevisSend);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$deviduplique = $request->request->get('duplidevis')['NoDevis'];
$deviaduplique = $DevisSendRepository->findBy(
['NoDevis' => $deviduplique ]
);
if( !empty($deviaduplique) ){
$deviaduplique = $deviaduplique[0];
// dd($deviaduplique);
$DevisSend = new DevisSend();
$nodevis = gentest($DevisSendRepository);
$DevisSend->setNoDevis( $nodevis );
$DevisSend->setDateDeb( $deviaduplique->getDateDeb() );
$DevisSend->setDateFin( $deviaduplique->getDateFin() );
$DevisSend->setNbJours( $deviaduplique->getNbJours() );
$DevisSend->setData( $deviaduplique->getData() );
$DevisSend->setDataLivraison( $deviaduplique->getDataLivraison() );
$DevisSend->setDataPersonnel( $deviaduplique->getDataPersonnel() );
$DevisSend->setDataReduc( $deviaduplique->getDataReduc() );
$DevisSend->setDatedevis( $deviaduplique->getDatedevis() );
$DevisSend->setIduser( $deviaduplique->getIduser() );
$DevisSend->setUsertype( $deviaduplique->getUsertype() );
$DevisSend->setUsernom( $deviaduplique->getUsernom() );
$DevisSend->setUseradresse( $deviaduplique->getUseradresse() );
$DevisSend->setUsercpville( $deviaduplique->getUsercpville() );
$DevisSend->setUseremail( $deviaduplique->getUseremail() );
$DevisSend->setTvaClient( $deviaduplique->getTvaClient() );
$DevisSend->setCodeClient( $deviaduplique->getCodeClient() );
$DevisSend->setTelephone( $deviaduplique->getTelephone() );
$DevisSend->setNoTva( $deviaduplique->getNoTva() );
$DevisSend->setNomClient( $deviaduplique->getNomClient() );
$DevisSend->setTyprospect( $deviaduplique->getTyprospect() );
$DevisSend->setCatclient( $deviaduplique->getCatclient() );
$datadec = \json_decode( $DevisSend->getData() );
$agenc = '';
if( isset( $datadec[0] )){
if( isset( $datadec[0]->agence )){
$agenc = $datadec[0]->agence;
}
}
$DevisSend->setAgence( $agenc );
$manager->persist($DevisSend);
$manager->flush();
}
}
$devis = $DevisSendRepository->findBy(
array(),
array('id' => 'DESC')
);
$Agences = $AgenceRepository->findBy(
array(),
array('Nom' => 'ASC')
);
return $this->render('gestiondevis/index.html.twig', [
'controller_name' => 'GestiondevisController',
'form' => $form->createView(),
'devis' => $devis,
'Agences' => $Agences
]);
}
/**
* @Route("/admin/devis/ajouter", name="devis_ad")
* @Route("/admin/devis/editer/{targid}", name="editer_devis" )
*/
public function editer_devis(Int $targid = null, DevisSend $DevisSend = null ,Request $request,EntityManagerInterface $manager,DevisSendRepository $DevisSendRepository, UsersRepository $UsersRepository, VehiculeRepository $VehiculeRepository, ReductionRepository $ReductionRepository, ListNom $ListNom = null, ListNomRepository $ListNomRepository,PersonnelRepository $PersonnelRepository, AgenceRepository $AgenceRepository )
{
function random_3($nbr) {
$chn = '';
for ($i=1;$i<=$nbr;$i++)
// $chn .= chr(floor(rand(0, 25)+97));
$chn .= rand(0, 9);
return $chn;
}
function gentest($DevisSendRepository ){
$test = random_3(6);
$testdevis = $DevisSendRepository->findBy(
['NoDevis' => $test ]
);
if( empty($testdevis) ){
return $test ;
}else{
gentest($DevisSendRepository);
}
}
$DevisSends = $DevisSendRepository->findBy(
['id' => $targid ]
);
if($DevisSends ){
$DevisSend = $DevisSends[0];
}
if(!$DevisSend){
$DevisSend = new DevisSend();
}
if( $DevisSend->getNoDevis() == null){
$Nodevis = gentest($DevisSendRepository);
$DevisSend->setNoDevis( $Nodevis );
}
$form = $this->createForm(DevisSendType::class, $DevisSend);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$ListNoms = $ListNomRepository->findBy(
['Nom' => $DevisSend->getUsernom() ]
);
if($ListNoms ){
$ListNom = $ListNoms[0];
}
if(!$ListNom){
$ListNom = new ListNom();
}
$ListNom->setNom( $DevisSend->getUsernom() );
$ListNom->setAdresse( $DevisSend->getUseradresse() );
$ListNom->setCpVille( $DevisSend->getUsercpville() );
$ListNom->setEmail( $DevisSend->getUseremail() );
$ListNom->setTvaClient( $DevisSend->getTvaClient() );
$ListNom->setCodeClient( $DevisSend->getCodeClient() );
$ListNom->setTelephone( $DevisSend->getTelephone() );
$ListNom->setNomClient( $DevisSend->getNomClient() );
$ListNom->setTyprospect( $DevisSend->getTyprospect() );
$ListNom->setType( $DevisSend->getCatclient() );
$manager->persist($ListNom);
$manager->persist($DevisSend);
$manager->flush();
return $this->redirectToRoute('voir_devis', array('pdf' => $DevisSend->getId()));
}
$users = $UsersRepository->findBy(
array(),
array('Nom' => 'ASC')
);
$ListNoms = $ListNomRepository->findBy(
array(),
array('Nom' => 'ASC')
);
$users = array_merge($users, $ListNoms);
function cmp($a, $b) {
if ($a->getNom() == $b->getNom()) {
return 0;
}
return ($a->getNom() < $b->getNom()) ? -1 : 1;
}
usort($users, "App\Controller\cmp");
// dd($users);
$cat = 'Location';
$Vehicules = $VehiculeRepository->createQueryBuilder('v')
->where( 'v.cat LIKE :cat')
->setParameter('cat', '%'.$cat.'%')
->orderBy('v.position', 'ASC')
->getQuery()
->getResult();
// $Vehicules = $VehiculeRepository->findall();
$liste_reduc = $ReductionRepository->findBy(
array(),
array('position' => 'ASC')
);
$listreduc = [];
foreach( $liste_reduc as $reduc ){
$object = (object) ['id' => $reduc->getId(), 'detail' => json_decode($reduc->getDetail() ) ];
$listreduc[] = $object;
}
$reducjson = json_encode($listreduc);
$Personnels = $PersonnelRepository->findAll();
$listperso = [];
foreach( $Personnels as $Personnel ){
$persodetail = (object) ['Nom' => $Personnel->getNom(),'TableData' => $Personnel->getTableData(), 'NomPublic' => $Personnel->getNomPublic() ];
$listperso[] = $persodetail;
}
$Personneljson = json_encode($listperso);
$Agences = $AgenceRepository->findBy(
array(),
array('Nom' => 'ASC')
);
$datajsversion = json_decode($DevisSend->getData() );
return $this->render('gestiondevis/edite_devis.html.twig', [
'controller_name' => 'GestiondevisController',
'form' => $form->createView(),
'id' => $DevisSend->getId(),
'users' => $users,
'data' => $DevisSend->getData(),
'Vehicules' => $Vehicules,
'reductionliste' => $reducjson,
'Personnel' => $Personneljson,
'Agen' => $DevisSend->getAgence(),
'Agences' => $Agences
]);
}
/**
* @Route("/download/{trgfile}", name="download_file")
**/
public function downloadFileAction(string $trgfile = null){
$response = new BinaryFileResponse('pdfgen/devis_'.$trgfile.'.pdf');
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT,'devis_'.$trgfile.'.pdf');
return $response;
}
/**
* @Route("/admin/devis/rechenom/{trg}", name="rechnom" )
*/
public function rechnom(string $trg = null , ListNom $ListNom =null, ListNomRepository $ListNomRepository, UsersRepository $UsersRepository)
{
$target = explode("_", $trg);
$jsonObject =[];
if( $target[0] == 'u'){
$users = $UsersRepository->findBy(
array( 'id' => $target[1]),
array('Nom' => 'ASC')
);
if($users != null){
$users = $users[0];
$jsonObject['id'] = $users->getId();
$jsonObject['Name'] = $users->getNom() . ' ' . $users->getPrenom();
$jsonObject['Adresse'] = $users->getAdresse();
$jsonObject['CpVille'] = $users->getCP() . ' ' . $users->getVille();
$jsonObject['email'] = $users->getEmail();
$jsonObject['Usertype'] = 'particulier';
$jsonObject['TvaClient'] = $users->getTvaClient();
$jsonObject['CodeClient'] = $users->getCodeClient();
$jsonObject['Telephone'] = $users->getTelephone();
$jsonObject['NoTva'] = $users->getNoTva();
$jsonObject['Type'] = '';
$jsonObject['Typrospect'] = '';
$jsonObject['NomClient'] = '';
}
}else{
$ListNom = $ListNomRepository->findBy(
array( 'id' => $target[1]),
array('Nom' => 'ASC')
);
if($ListNom != null){
$ListNom = $ListNom[0];
$jsonObject['id'] = $ListNom->getId();
$jsonObject['Name'] = $ListNom->getNom();
$jsonObject['Adresse'] = $ListNom->getAdresse();
$jsonObject['CpVille'] = $ListNom->getCpVille() ;
$jsonObject['email'] = $ListNom->getEmail();
$jsonObject['Usertype'] = 'listnom';
$jsonObject['TvaClient'] = $ListNom->getTvaClient();
$jsonObject['CodeClient'] = $ListNom->getCodeClient();
$jsonObject['Telephone'] = $ListNom->getTelephone();
$jsonObject['NoTva'] = $ListNom->getNoTva();
$jsonObject['Type'] = $ListNom->getType();
$jsonObject['Typrospect'] = $ListNom->getTyprospect();
$jsonObject['NomClient'] = $ListNom->getNomClient();
}
}
$jsonGzip = gzencode($jsonObject, 9);
$response = new Response($jsonGzip);
$response->headers->set('Content-Encoding', 'gzip');
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* @Route("/admin/devis/vehicdetail/{targid}", name="vehicdetail" )
*/
public function vehicdetail(Int $targid, VehiculeRepository $VehiculeRepository, OptionveloRepository $OptionveloRepository, CaractVehiculeRepository $CaractVehiculeRepository)
{
if( $targid >= 1000000 ){
$targid = $targid - 1000000 ;
}
$Vehicule = $VehiculeRepository->findBy(
['id' => $targid ]
);
$cat = 'Location';
$CaractVehicules = $CaractVehiculeRepository->findBy(
array(),
array('position' => 'ASC'));
$listeoption = $OptionveloRepository->findBy(
['typeElem' => $cat],
array('position' => 'ASC')
);
$response = [];
if(isset($Vehicule[0])){
$response['listevehicules']= $Vehicule[0];
}else{
$response['listevehicules']= null;
}
$response['CaractVehicules']= $CaractVehicules;
$response['listeoption']= $listeoption;
// dd($Vehicule);
$encoders = [new JsonEncoder()]; // If no need for XmlEncoder
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
// Serialize your object in Json
$jsonObject = $serializer->serialize($response, 'json', [
'circular_reference_handler' => function ($object) {
return $object->getId();
}
]);
$jsonGzip = gzencode($jsonObject, 9);
$response = new Response($jsonGzip);
$response->headers->set('Content-Encoding', 'gzip');
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* @Route("/admin/devis/optiondetail/{targid}/{optid}", name="optiondetail" )
*/
public function optiondetail(Int $targid, Int $optid, VehiculeRepository $VehiculeRepository, OptionveloRepository $OptionveloRepository, CaractVehiculeRepository $CaractVehiculeRepository)
{
$Vehicule = $VehiculeRepository->findBy(
['id' => $targid ]
);
$cat = 'Location';
$listeoption = $OptionveloRepository->findBy(
['id' => $optid ]
);
$response = [];
$response['listevehicules']= $Vehicule[0];
$response['listeoption']= $listeoption[0];
// dd($Vehicule);
$encoders = [new JsonEncoder()]; // If no need for XmlEncoder
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
// Serialize your object in Json
$jsonObject = $serializer->serialize($response, 'json', [
'circular_reference_handler' => function ($object) {
return $object->getId();
}
]);
$jsonGzip = gzencode($jsonObject, 9);
$response = new Response($jsonGzip);
$response->headers->set('Content-Encoding', 'gzip');
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* @Route("/admin/devis/devisvehic/{targid}", name="devisvehic" )
*/
public function devisvehic(Int $targid, VehiculeRepository $VehiculeRepository, OptionveloRepository $OptionveloRepository, CaractVehiculeRepository $CaractVehiculeRepository)
{
if( $targid > 1000000 ){
$targid = $targid - 1000000 ;
}
$Vehicule = $VehiculeRepository->findBy(
['id' => $targid ]
);
$cat = 'Location';
$response = [];
$response['listevehicules']= $Vehicule[0];
// dd($Vehicule);
$encoders = [new JsonEncoder()]; // If no need for XmlEncoder
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
// Serialize your object in Json
$jsonObject = $serializer->serialize($response, 'json', [
'circular_reference_handler' => function ($object) {
return $object->getId();
}
]);
$jsonGzip = gzencode($jsonObject, 9);
$response = new Response($jsonGzip);
$response->headers->set('Content-Encoding', 'gzip');
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* @Route("/admin/devis/pdf/{targid}", name="pdf_devis" )
*/
public function pdf_devis(Int $targid, DevisSend $DevisSend = null ,Request $request,EntityManagerInterface $manager,DevisSendRepository $DevisSendRepository, UsersRepository $UsersRepository, VehiculeRepository $VehiculeRepository , ReductionRepository $ReductionRepository, AgenceRepository $AgenceRepository)
{
// dd( $request->cookies->get('devis') );
//recup n° devis et le devis
$selectvehics = $DevisSendRepository->findBy(
['id' => $targid]
);
// dd( $selectvehics[0]->getIduser() );
$user = $UsersRepository->findBy(
['id' => $selectvehics[0]->getIduser() ]
);
if($user){
$user = $user[0] ;
}
// dd( $user );
$devis = $selectvehics[0]->getNoDevis();
if($selectvehics ){
$selectvehic = $selectvehics[0];
// basculer le devis dans le devis a valider
$DevisSend = $selectvehic ;
$Data = json_decode ( $selectvehic->getData() );
$DataLivraison = json_decode ( $selectvehic->getDataLivraison() );
/* for ($i=0; $i < count( $Data ) ; $i++) {
if( $Data[$i]->service == 'Location' ){
$datedeb = explode("-", $Data[$i]->datedeb );
$formdatedeb = $datedeb[2].'/'.$datedeb[1].'/'.$datedeb[0];
$Data[$i]->datedeb = $formdatedeb;
$datefin = explode("-", $Data[$i]->datefin );
$formdatefin = $datefin[2].'/'.$datefin[1].'/'.$datefin[0];
$Data[$i]->datefin = $formdatefin;
}
}*/
$DataPersonnel = json_decode ( $selectvehic->getDataPersonnel() );
$Agences = $AgenceRepository->findBy(
array(),
array('Nom' => 'ASC')
);
foreach ($Agences as $Agence) {
if( $Agence->getId() == $DevisSend->getAgence()){
$agencename = $Agence->getNom();
}
}
$DataReduc = json_decode ( $selectvehic->getDataReduc() );
$today = date("j / n / Y") ;
$nextmonth = date("j / n / Y", strtotime("+1 month"));
$liste_reduc = $ReductionRepository->findBy(
array(),
array('position' => 'ASC')
);
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$tmp = sys_get_temp_dir();
$pdfOptions->set('fontDir' , $tmp );
$pdfOptions->set('fontCache' , $tmp );
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
// Retrieve the HTML generated in our twig file
/* return $this->render('default/mypdf2.html.twig', [
'title' => "Welcome to our PDF Test",
'no_devis' => $devis,
'today' => $today,
'nextmonth' => $nextmonth,
'Data' => $Data,
'DataLivraison' => $DataLivraison,
'user' => $user,
'DataPersonnel' => $DataPersonnel,
'DataReduc' => $DataReduc,
'DevisSend' => $DevisSend,
'reductionliste' => $liste_reduc,
'agencename' => $agencename
]); */
$html = $this->renderView('default/mypdf2.html.twig', [
'title' => "Welcome to our PDF Test",
'no_devis' => $devis,
'today' => $today,
'nextmonth' => $nextmonth,
'Data' => $Data,
'DataLivraison' => $DataLivraison,
'user' => $user,
'DataPersonnel' => $DataPersonnel,
'DataReduc' => $DataReduc,
'DevisSend' => $DevisSend,
'reductionliste' => $liste_reduc,
'agencename' => $agencename
]);
/* // Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
$pdfname = 'devis_'.$devis.'.pdf';
// Output the generated PDF to Browser (force download)
$dompdf->stream( $pdfname , [
"Attachment" => true
]);*/
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Store PDF Binary Data
$output = $dompdf->output();
// In this case, we want to write the file in the public directory
$publicDirectory = $this->getParameter('kernel.project_dir') . '/public/pdfgen';
// e.g /var/www/project/public/mypdf.pdf
$pdfFilepath = $publicDirectory . '/devis_'.$devis.'.pdf';
// Write file to the desired path
file_put_contents($pdfFilepath, $output);
/*
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('default/mypdf.html.twig', [
'title' => "Welcome to our PDF Test",
'no_devis' => $devis,
'today' => $today,
'nextmonth' => $nextmonth,
'Data' => $Data,
'DataLivraison' => $DataLivraison,
'user' => $user,
'DataPersonnel' => $DataPersonnel,
'DataReduc' => $DataReduc,
'DevisSend' => $DevisSend,
'reductionliste' => $listreduc
]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Store PDF Binary Data
$output = $dompdf->output();
// In this case, we want to write the file in the public directory
$publicDirectory = $this->getParameter('kernel.project_dir') . '/public/pdfgen';
// e.g /var/www/project/public/mypdf.pdf
$pdfFilepath = $publicDirectory . '/devis_'.$devis.'.pdf';
// Write file to the desired path
file_put_contents($pdfFilepath, $output);
// Send some text response
// return new Response("The PDF file has been succesfully generated !");
// Envoi de l'email avec le devis
$message = (new \Swift_Message('Hello Email'))
->setFrom('contact@tripup.fr')
->setTo( $email )
->setBody(
$this->renderView(
// templates/emails/registration.html.twig
'emails/envoidevis.html.twig'
),
'text/html'
)
// attachement du fichier joins
->attach(\Swift_Attachment::fromPath($pdfFilepath), "application/octet-stream")
// you can remove the following code if you don't define a text version for your emails
->addPart(
$this->renderView(
// templates/emails/registration.txt.twig
'emails/envoidevis.txt.twig'
),
'text/plain'
)
;
$mailer->send($message);
//find de l'envoi*/
}
$devis = $DevisSendRepository->findBy(
array(),
array('id' => 'DESC')
);
$jsonObject =[];
$jsonObject['pdf'] = 'ok';
$jsonGzip = gzencode($jsonObject, 9);
$response = new Response($jsonGzip);
$response->headers->set('Content-Encoding', 'gzip');
$response->headers->set('Content-Type', 'application/json');
return $response;
/* return $this->render('gestiondevis/index.html.twig', [
'controller_name' => 'GestiondevisController',
'devis' => $devis
]);*/
}
/**
* @Route("/admin/devis/validevis/{targid}", name="validevis" )
*/
public function validevis(Int $targid, DevisSend $DevisSend = null ,Request $request,EntityManagerInterface $manager,DevisSendRepository $DevisSendRepository, Location $Location = null , LocationLock $LocationLock = null, VersionVehiculesRepository $VersionVehiculesRepository, Listes $Listes)
{
$DevisSends = $DevisSendRepository->findBy(
['id' => $targid ]
);
if($DevisSends ){
$DevisSend = $DevisSends[0];
}
$detailsvalidevis = json_decode($request->request->get('detailsvalidevis') );
$listv = [];
foreach ($detailsvalidevis as $detailsvalidevi ) {
// $listv[] = $detailsvalidevi->veculid;
array_push($listv, $detailsvalidevi->veculid) ;
}
$devsend = JSON_decode( $DevisSend->getData());
$listv = \json_encode($listv);
$Location = new Location();
$Location->setNoDevis( $DevisSend->getNoDevis() );
$Location->setDateDeb( $DevisSend->getDateDeb() );
$Location->setDateFin( $DevisSend->getDateFin() );
$Location->setNbJours( $DevisSend->getNbJours() );
$Location->setData( $DevisSend->getData() );
$Location->setDatalivraison( $DevisSend->getDataLivraison() );
$Location->setDataPersonnel( $DevisSend->getDataPersonnel() );
$Location->setDataReduc( $DevisSend->getDataReduc() );
$Location->setDateDevis( $DevisSend->getDatedevis() );
$Location->setIdUser( $DevisSend->getIduser() );
$Location->setUsernom( $DevisSend->getUsernom() );
$Location->setUseradresse( $DevisSend->getUseradresse() );
$Location->setUsercpville( $DevisSend->getUsercpville() );
$Location->setTvaClient( $DevisSend->getTvaClient() );
$Location->setCodeClient( $DevisSend->getCodeClient() );
$Location->setTelephone( $DevisSend->getTelephone() );
$Location->setNoTva( $DevisSend->getNoTva() );
$Location->setNomClient( $DevisSend->getNomClient() );
$Location->setTyprospect( $DevisSend->getTyprospect() );
$Location->setUsernom( $DevisSend->getUsernom() );
$Location->setCatclient( $DevisSend->getCatclient() );
$Location->setUsertype( $DevisSend->getUsertype() );
$Location->setListversionve( $listv );
$Location->setAgence( $devsend[0]->agence );
$manager->persist($Location);
$manager->flush();
$vehiclist = json_decode( $DevisSend->getData() );
foreach ($vehiclist as $vehic) {
// dd($vehic);
if( isset($vehic->cover) ){
foreach ($vehic->cover as $cover) {
$LocationLock = new LocationLock();
$LocationLock->setNoDevis( $DevisSend->getNoDevis() );
$LocationLock->setDateDeb( \DateTime::createFromFormat('Y-m-d', $vehic->datedeb) );
$LocationLock->setDateFin( \DateTime::createFromFormat('Y-m-d', $vehic->datefin) );
$LocationLock->setVehictrue( false );
$LocationLock->setVehicId( false );
$LocationLock->setOptionId( $cover->id );
$LocationLock->setNbsel( $cover->nbchoisi );
// $LocationLock->setLocId( $vehic->nb );
$manager->persist($LocationLock);
$manager->flush();
}
}
if( isset($vehic->equip) ){
foreach ($vehic->equip as $equip) {
$LocationLock = new LocationLock();
$LocationLock->setNoDevis( $DevisSend->getNoDevis() );
$LocationLock->setDateDeb( \DateTime::createFromFormat('Y-m-d', $vehic->datedeb) );
$LocationLock->setDateFin( \DateTime::createFromFormat('Y-m-d', $vehic->datefin) );
$LocationLock->setVehictrue( false );
$LocationLock->setVehicId( false );
$LocationLock->setOptionId( $equip->id );
$LocationLock->setNbsel( $equip->nbchoisi );
// $LocationLock->setLocId( $vehic->nb );
$manager->persist($LocationLock);
$manager->flush();
}
}
/* $LocationLock = new LocationLock();
$LocationLock->setNoDevis( $DevisSend->getNoDevis() );
$LocationLock->setDateDeb( \DateTime::createFromFormat('Y-m-d', $vehic->datedeb) );
$LocationLock->setDateFin( \DateTime::createFromFormat('Y-m-d', $vehic->datefin) );
$LocationLock->setVehictrue( true );
$LocationLock->setVehicId( $vehic->id );
$LocationLock->setOptionId( false );
$LocationLock->setNbsel( $vehic->nb );*/
// $LocationLock->setLocId( $vehic->nb );
/* $manager->persist($LocationLock);
$manager->flush();
*/ }
//vérouillage des versions de vehicules
$dataloc = $DevisSend->getData();
$dataloc = json_decode($dataloc);
for ($i=0; $i < count($detailsvalidevis); $i++) {
$detailsvalidevi = $detailsvalidevis[$i];
foreach ($dataloc as $datloc) {
if( $datloc->id == $detailsvalidevis[$i]->idve){
$datoc = $datloc;
}
}
$VersionVehicules = $VersionVehiculesRepository->findBy(
array('id' => $detailsvalidevi->veculid),
array()
);
$VersionVehicule = $VersionVehicules[0];
$Infos = $VersionVehicule->getInfos();
if( $Infos == null ){ $Infos = '[]' ;}
$Infos = \json_decode($Infos);
$object = new \stdClass();
$object->idevis = $DevisSend->getId();
$object->nodevis = $DevisSend->getNoDevis();
$object->datedeb = $datoc->datedeb;
$object->datefin = $datoc->datefin;
$Infos[] = $object ;
$Infos = \json_encode($Infos);
$VersionVehicule->setInfos($Infos);
$manager->persist($VersionVehicule);
$manager->flush();
$LocationLock = new LocationLock();
$LocationLock->setNoDevis( $DevisSend->getNoDevis() );
$LocationLock->setDateDeb( \DateTime::createFromFormat('Y-m-d', $vehic->datedeb) );
$LocationLock->setDateFin( \DateTime::createFromFormat('Y-m-d', $vehic->datefin) );
$LocationLock->setVehictrue( true );
$LocationLock->setVehicId( $VersionVehicule->getId() );
$LocationLock->setOptionId( false );
$LocationLock->setNbsel( 1 );
$manager->persist($LocationLock);
$manager->flush();
}
//fin de vérouillage des versions de vehicules
$response = ['ok'];
// dd($Location);
$encoders = [new JsonEncoder()]; // If no need for XmlEncoder
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
// Serialize your object in Json
$jsonObject = $serializer->serialize($response, 'json', [
'circular_reference_handler' => function ($object) {
return $object->getId();
}
]);
$jsonGzip = gzencode($jsonObject, 9);
$response = new Response($jsonGzip);
$response->headers->set('Content-Encoding', 'gzip');
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* @Route("/admin/devis/detaildudevis/{targid}", name="detaildudevis" )
*/
public function detaildudevis(Int $targid , DevisSendRepository $DevisSendRepository, VersionVehiculesRepository $VersionVehiculesRepository ,Request $request,EntityManagerInterface $manager, AgenceRepository $AgenceRepository, GaragesRepository $GaragesRepository, ProprietaireRepository $ProprietaireRepository, EntretientRepository $EntretientRepository )
{
$DevisSends = $DevisSendRepository->findBy(
['id' => $targid ]
);
if($DevisSends ){
$DevisSend = $DevisSends[0];
}
$Agences = $AgenceRepository->findBy(
array(),
array('Nom' => 'ASC')
);
$Garages = $GaragesRepository->findBy(
array(),
array('Nom' => 'ASC')
);
$Proprietaires = $ProprietaireRepository->findBy(
array(),
array('Nom' => 'ASC')
);
$VersionVehicules = $VersionVehiculesRepository->findBy(
array(),
array('Nom' => 'ASC')
);
$Entretient = $EntretientRepository->findBy(
array(),
['IdVersion' => 'ASC' ]
);
$versiondispo = [];
$entret = [];
$vehiclist = json_decode( $DevisSend->getData() );
foreach ($vehiclist as $vehic) {
$idv = $vehic->id ;
if( $idv > 1000000 ){
$idv = $idv - 1000000;
}
foreach ($VersionVehicules as $VersionVehicule) {
if( $VersionVehicule->getVehicule() == $vehic->id){
foreach ($Entretient as $Entre) {
if( $Entre->getIdVersion()->getVehicule() == $vehic->id){
array_push( $entret, $Entre);
}
}
}
if(!isset($vehic->pilote)){
$vehic->pilote = 0;
}
if( $VersionVehicule->getVehicule() == $idv && $vehic->pilote == $VersionVehicule->getPilote()){
array_push( $versiondispo, $VersionVehicule);
}
}
}
$response=[];
$response['DevisSend'] = $DevisSend;
$response['versiondispo'] = $versiondispo;
$response['Agences'] = $Agences;
$response['Garages'] = $Garages;
$response['Proprietaires'] = $Proprietaires;
$response['Entretient'] = $entret;
// dd($Location);
$encoders = [new JsonEncoder()]; // If no need for XmlEncoder
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
// Serialize your object in Json
$jsonObject = $serializer->serialize($response, 'json', [
'circular_reference_handler' => function ($object) {
return $object->getId();
}
]);
$jsonGzip = gzencode($jsonObject, 9);
$response = new Response($jsonGzip);
$response->headers->set('Content-Encoding', 'gzip');
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* @Route("/admin/devis/supprime/{trg}", name="devisdel_delete")
*/
public function devisdel_delete(int $trg , DevisSendRepository $DevisSendRepository , Request $request, EntityManagerInterface $manager)
{
$DevisSends = $DevisSendRepository->findBy(
['id' => $trg ]
);
if($DevisSends ){
$DevisSend = $DevisSends[0];
}
$manager->remove($DevisSend);
$manager->flush();
return $this->redirectToRoute('voir_devis');
}
/**
* @Route("/devis/api/vehicule/", name="devis_api_vehicule_liste")
*/
public function devis_api_vehicule_liste(VehiculeRepository $VehiculeRepository, Request $request, VersionVehiculesRepository $VersionVehiculesRepository, EntityManagerInterface $manager)
{
// dd( $request->request );
$location = $request->request->get('location');
if($location == 'false'){
$cat = 'Achat';
}else{
$cat = 'Location';
}
$ville = $request->request->get('ville');
// dd( $filtre_assistance_elect_sans. ' '. $filtre_assistance_elect_avec );
$filter = 'v.cat LIKE :cat';
$filtelect = ['cat' => '%'.$cat.'%'];
$infofiltres = [];
$VersionVehicules = $VersionVehiculesRepository->findBy(
array('Agence' => $ville)
);
$listver = [];
foreach ($VersionVehicules as $VersionVehicule) {
if( !in_array( $VersionVehicule->getVehicule(), $listver ) ){
$listver[] = $VersionVehicule->getVehicule();
}
}
$listevehicules = $VehiculeRepository->createQueryBuilder('v')
->where( 'v.cat LIKE :cat')
->andWhere('v.id IN (:list)')
->setParameter('cat', '%'.$cat.'%')
->setParameter('list', $listver)
->orderBy('v.nom', 'ASC')
->getQuery()
->getResult();
$listevehiculess = [];
for ($i = 0; $i < count( $listevehicules ); $i++) {
$countve = 0;
$countvepi = 0;
foreach ($VersionVehicules as $VersionVehicule) {
if( $VersionVehicule->getVehicule() == $listevehicules[$i]->getId()){
if( $VersionVehicule->getPilote() == true ){
$countvepi = $countvepi + 1;
}else{
$countve = $countve + 1;
}
}
}
if($countvepi > 0){
$vlis = clone $listevehicules[$i] ;
$manager->detach($vlis);
$vlis->setId( $listevehicules[$i]->getId() + 1000000 );
$vlis->setPilote( true );
$vlis->setNbVehicules( $countvepi );
$listevehiculess[] = $vlis ;
}
if($countve > 0){
$listevehicules[$i]->setPilote( false );
$listevehicules[$i]->setNbVehicules( $countve );
$listevehiculess[] = $listevehicules[$i];
}
}
$VersionVehiculesmores = $VersionVehiculesRepository->createQueryBuilder('t')
->where('t.Agence != :agence')
->setParameter('agence', $ville)
->getQuery()
->getResult();
$listvermore = [];
foreach ($VersionVehiculesmores as $VersionVehiculesmore) {
if( !in_array( $VersionVehiculesmore->getVehicule(), $listvermore ) ){
$listvermore[] = $VersionVehiculesmore->getVehicule();
}
}
$listevehiculesmores = [];
$listevehiculesmores = $VehiculeRepository->createQueryBuilder('v')
->where( 'v.cat LIKE :cat')
->andWhere('v.id IN (:list)')
->setParameter('cat', '%'.$cat.'%')
->setParameter('list', $listvermore)
->orderBy('v.nom', 'ASC')
->getQuery()
->getResult();
$listevehiculesmoress = [];
for ($i = 0; $i < count( $listevehiculesmores ); $i++) {
$countve = 0;
$countvepi = 0;
foreach ($VersionVehiculesmores as $VersionVehicule) {
if( $VersionVehicule->getVehicule() == $listevehiculesmores[$i]->getId()){
if( $VersionVehicule->getPilote() == true ){
$countvepi = $countvepi + 1;
}else{
$countve = $countve + 1;
}
}
}
if($countvepi > 0){
$vlis = clone $listevehiculesmores[$i] ;
$manager->detach($vlis);
$vlis->setId( $listevehiculesmores[$i]->getId() + 1000000 );
$vlis->setPilote( true );
$vlis->setNbVehicules( $countvepi );
$listevehiculesmoress[] = $vlis ;
}
if($countve > 0){
$listevehiculesmores[$i]->setPilote( false );
$listevehiculesmores[$i]->setNbVehicules( $countve );
$listevehiculesmoress[] = $listevehiculesmores[$i];
}
}
$response['listevehicules']= $listevehiculess;
$response['VersionVehicules']= $VersionVehicules;
$response['listevehiculesmores']= $listevehiculesmores;
$response['VersionVehiculesmores']= $VersionVehiculesmores;
// dd( $response );
$encoders = [new JsonEncoder()]; // If no need for XmlEncoder
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
// Serialize your object in Json
$jsonObject = $serializer->serialize($response, 'json',
[AbstractNormalizer::IGNORED_ATTRIBUTES => [ 'listeVehicule' ],
'circular_reference_handler' => function ($object) {
return $object->getId();
}
]);
$jsonGzip = gzencode($jsonObject, 9);
$response = new Response($jsonGzip);
$response->headers->set('Content-Encoding', 'gzip');
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}