src/Controller/HomeController.php line 62

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\commandeClient\traits\AjaxContent\ParametrageTrait;
  4. use App\Controller\commandeClient\traits\methodePost\InsertTrait;
  5. use App\Form\ccQuick\CCQuickFormType;
  6. use App\Form\commandeClient\ExpeditionFormType;
  7. use App\Repository\administration\MemoParametreRepository;
  8. use App\Repository\administration\PasserelisteRepository;
  9. use App\Repository\administration\PasserelisteUtilisateurSocieteRepository;
  10. use App\Repository\administration\PucesGprsRevendeurRepository;
  11. use App\Repository\administration\ReferentielRepository;
  12. use App\Repository\administration\UtilisateurSocieteRepository;
  13. use App\Repository\administration\UtilisateursRepository;
  14. use App\Repository\administration\ValidateurRepository;
  15. use App\Repository\commandeClient\CommandeClientEnAttenteRepository;
  16. use App\Repository\commandeClient\CommandeClientEquipeRepository;
  17. use App\Repository\commandeClient\CommandeClientEtatRepository;
  18. use App\Repository\commandeClient\CommandeClientListeStatutRepository;
  19. use App\Repository\commandeClient\CommandeClientPieceJointeRepository;
  20. use App\Repository\commandeClient\CommandeClientReferenceRepository;
  21. use App\Repository\commandeClient\CommandeClientRepository;
  22. use App\Repository\commandeClient\CommandeClientTypeCommandeRepository;
  23. use App\Repository\commandeClient\CommandeClientTypeDateExpeditionRepository;
  24. use App\Repository\commandeClient\ConstructeurIngenicoAxisRepository;
  25. use App\Repository\commandeClient\LogicielRepository;
  26. use App\Repository\commandeClient\ProtocoleLiaisonCaisseRepository;
  27. use App\Repository\commandeClient\ReferentielTypeParametrageRepository;
  28. use App\Repository\commandeClient\TypeContratOptionRepository;
  29. use App\Repository\commandeClient\TypeContratRepository;
  30. use App\Repository\commandeClient\VitesseRepository;
  31. use App\Repository\fonctions\InformationsAdresseRepository;
  32. use App\Repository\fonctions\TimeZoneRepository;
  33. use App\Repository\sav\EtatMaterielRepository;
  34. use App\Repository\stock\StockLibelleRepository;
  35. use App\Repository\Transporteur\ExpeditionRepository;
  36. use App\Repository\Transporteur\SuiviColisColorRepository;
  37. use App\Repository\Transporteur\SuiviColisRepository;
  38. use App\Repository\Transporteur\TransportComptesRepository;
  39. use App\Repository\Transporteur\TransporteurRepository;
  40. use App\Repository\Utilisateur\UtilisateurSocieteImageRepository;
  41. use Doctrine\ORM\EntityManagerInterface;
  42. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  43. use Symfony\Component\Filesystem\Filesystem;
  44. use Symfony\Component\HttpFoundation\JsonResponse;
  45. use Symfony\Component\HttpFoundation\Request;
  46. use Symfony\Component\HttpFoundation\Response;
  47. use Symfony\Component\Routing\Annotation\Route;
  48. use App\Helpers\Helpers;
  49. use Symfony\Contracts\Translation\TranslatorInterface;
  50. class HomeController extends AbstractController
  51. {
  52.     use ParametrageTrait;
  53.     use InsertTrait;
  54.     /**
  55.      * @Route("/")
  56.      */
  57.     public function indexNoLocale()
  58.     {
  59.         return $this->redirectToRoute('index',['_locale' => 'fr']);
  60.     }
  61.     /**
  62.      * @Route("/{_locale<%app.supported_locales%>}/", name="index")
  63.      * @return Response
  64.      */
  65.     public function index(Request $requestHelpers $helpersTranslatorInterface $translatorUtilisateursRepository $utilisateurRepoReferentielRepository $referentielRepo,
  66.                             ReferentielTypeParametrageRepository $referentielTypeParametrageRepoPasserelisteRepository $passerelisteRepoConstructeurIngenicoAxisRepository $constructeurIngenicoAxisRepo,
  67.                             ProtocoleLiaisonCaisseRepository $protocoleLiaisonCaisseRepoVitesseRepository $vitesseRepoLogicielRepository $logicielRepo,
  68.                             MemoParametreRepository $memoParametreRepoPasserelisteUtilisateurSocieteRepository $passerelistesUtilisateurSocieteRepo,
  69.                             UtilisateurSocieteRepository $utilisateurSocieteRepoPucesGprsRevendeurRepository $pucesGprsRevendeurRepoTimeZoneRepository $timeZoneRepoEntityManagerInterface $em,
  70.                             Filesystem $filesystemCommandeClientPieceJointeRepository $commandeClientPieceJointRepoCommandeClientEnAttenteRepository $commandeEnAttenteRepo,
  71.                             InformationsAdresseRepository $informationsAdresseRepoTypeContratRepository $typeContratRepoUtilisateurSocieteImageRepository $utilisateurSocieteImageRepoTransporteurRepository $transporteurRepo,
  72.                             CommandeClientTypeDateExpeditionRepository $commandeClientTypeDateExpeditionRepoCommandeClientEtatRepository $commandeClientEtatRepoCommandeClientEquipeRepository $commandeClientEquipeRepoCommandeClientTypeCommandeRepository $commandeClientTypeCommandeRepoStockLibelleRepository $stockLibelleRepo,
  73.                             EtatMaterielRepository $etatMaterielRepoUtilisateursRepository $utilisateursRepoValidateurRepository $validateurRepoCommandeClientListeStatutRepository $CommandeClientListeStatutRepoCommandeClientReferenceRepository $commandeClientReferenceRepoExpeditionRepository $expeditionRepoTypeContratOptionRepository $typeContratOptionRepo,
  74.                             CommandeClientRepository $commandeClientRepoSuiviColisRepository $suiviColisRepoSuiviColisColorRepository $suiviColisColorRepository,
  75.                             TransportComptesRepository $transportComptesRepo
  76.     )
  77.     {
  78.         $currentUser $utilisateurRepo->findOneByIdUtilisateur($this->getUser()->getIdUtilisateur());
  79.         $currentSosciety $currentUser->getFkUtilisateurSociete()->getSociete();
  80.         $rechercheData $helpers->getRechercheClient('PLANET MONETIC'$currentSosciety''''''''''''''true);
  81.         //La aprtie livraison
  82.         $dataLivraison = [];
  83.         if(!empty($rechercheData['data']) && !empty($rechercheData['data'][0])) {
  84.             $dataLivraison $rechercheData['data'][0];
  85.             $dataLivraison['livraison_societe'] = $rechercheData['data'][0]['nom_cli'];
  86.             $dataLivraison['livraison_adresse'] = $rechercheData['data'][0]['adresse'];
  87.             $dataLivraison['livraison_code_postal'] = $rechercheData['data'][0]['cp'];
  88.             $dataLivraison['livraison_ville'] = $rechercheData['data'][0]['ville'];
  89.             $dataLivraison['livraison_telephone'] = $rechercheData['data'][0]['cus_telephone'];
  90.             $dataLivraison['livraison_contact'] = trim($rechercheData['data'][0]['Contact']);
  91.             $dataLivraison['livraison_mail'] = $rechercheData['data'][0]['cus_email'];
  92.             $dateSouhaite date('Y-m-d'strtotime(date("Y-m-d") . ' +1 day'));
  93.             $dataLivraison['livraison_dateSouhaite'] = $dateSouhaite;
  94.             $dataLivraison['transporteur'] = 0;
  95.             $dataLivraison['livraison_commentaire'] = '';
  96.             $dataLivraison['livraison_etiquette_a_coller'] = '';
  97.         }
  98.         $formCCQuick $this->createForm(CCQuickFormType::class, []);
  99.         $formCCQuick->handleRequest($request);
  100.         $formCCQuickView $formCCQuick->createView();
  101.         if ($request->isXmlHttpRequest()) {
  102.             $post = [];
  103.             $postData $request->request->get('post');
  104.             $recupPost explode('&'$postData);
  105.             if (is_array($recupPost)) {
  106.                 foreach ($recupPost as $key => $value) {
  107.                     $explode explode('='$value);
  108.                     $post[$explode[0]] = $explode[1];
  109.                 }
  110.             }
  111.             //Step-2
  112.             if($post['ajax_type'] == 'mat_list') {
  113.                 $matCCQuickList $referentielRepo->getMatsEligibleCcQuick();
  114.                 $matsList = [];
  115.                 foreach ($matCCQuickList as $matItem) {
  116.                     $type strtoupper($matItem['type']);
  117.                     $matItemEncode json_encode($matItem);
  118.                     if ($type == "PUCE") {
  119.                         $matsList['puce'][] = $matItemEncode;
  120.                     }
  121.                     elseif ($type == "PRESTATION") {
  122.                         $matsList['prestation'][] = $matItemEncode;
  123.                     }
  124.                     elseif ($type != "PRESTATION" && $type != "PUCE") {
  125.                         $matsList['materiel'][] = $matItemEncode;
  126.                     }
  127.                 }
  128.                 return new JsonResponse(['no_toastr|ajaxmateriels|' json_encode($matsListtrue)]);
  129.             }
  130.             //Step-3
  131.             else if($post['ajax_type'] == 'params') {
  132.                 $listProduitsParametrable $referentielTypeParametrageRepo->getProduitsParametrableId();
  133.                 $fromCc 'quick-cc';
  134.                 $post['societe'] = strtoupper($currentSosciety);
  135.                 $post['paramValues'] = '';
  136.                 $post['ajax_type'] = 'parametrage';
  137.                 $params $this->parametrageTrait($helpers$translator$postnull$referentielTypeParametrageRepo$passerelisteRepo$referentielRepo$constructeurIngenicoAxisRepo$protocoleLiaisonCaisseRepo$vitesseRepo$logicielRepo$memoParametreRepo$passerelistesUtilisateurSocieteRepo$utilisateurSocieteRepo$pucesGprsRevendeurRepo$timeZoneRepo, [], [], falsefalse$listProduitsParametrable$fromCc);
  138.                 return $params;
  139.             }
  140.             else if($post['ajax_type'] == 'getConfirmInfos') {
  141.                 $panierJsonParsed json_decode($post['panier_json'], true);
  142.                 $desiredValue current(array_diff_key($panierJsonParsed, ['613_Neuf' => '']));
  143.                 $panierItem json_decode($desiredValuetrue);
  144.                 $codeArticle '';
  145.                 $tarifTotal 0;
  146.                 if(!empty($panierItem['ref_id'])) {
  147.                     $ref $referentielRepo->findOneByIdReferentiel($panierItem['ref_id']);
  148.                     $codeArticle $ref->getCodeArticle();
  149.                     $tarifParCli $helpers->getTarif($ref->getUtilisateurSocieteId()->getCodeClient(), $ref->getCodeArticle());
  150.                     $tarifParCli reset($tarifParCli);
  151.                     $tarifItem $tarifParCli;
  152.                     $tarifTotal $tarifParCli $panierItem['qte'];
  153.                     //Si on a AssociĆ© frais de port
  154.                     $post['booool'] = $ref->isFeeAssociate();
  155.                     if($ref->isFeeAssociate()) {
  156.                         $fee $helpers->getTarif('CLI6377''PORT');
  157.                         $tarifTotal += $fee['PORT'];
  158.                         $post['fee'] = $fee['PORT'];
  159.                     }
  160.                 }
  161.                 $post['tarifTotal'] = $tarifTotal;
  162.                 $post['tarifItem'] = $tarifItem;
  163.                 return new JsonResponse(['no_toastr||' json_encode($posttrue)]);
  164.             }
  165.         }
  166.         else if($request->isMethod('POST')) {
  167.             $facturation = [
  168.                 'facturation_code_client' => $this->getUser()->getFkUtilisateurSociete()->getCodeClient(),
  169.                 'facturation_societe_interne' => '',
  170.                 'facturation_ref_interne' => '',
  171.                 'facturation_societe' => !empty($request->get('expedition_form')['livraison_societe']) ? $request->get('expedition_form')['livraison_societe'] : $dataLivraison['livraison_societe'],
  172.                 'facturation_adresse' => !empty($request->get('expedition_form')['livraison_adresse']) ? $request->get('expedition_form')['livraison_adresse'] : $dataLivraison['livraison_adresse'],
  173.                 'facturation_code_postale' => !empty($request->get('expedition_form')['livraison_code_postal']) ? $request->get('expedition_form')['livraison_code_postal'] : $dataLivraison['livraison_code_postal'],
  174.                 'facturation_ville' => !empty($request->get('expedition_form')['livraison_ville']) ? $request->get('expedition_form')['livraison_ville'] : $dataLivraison['livraison_ville'],
  175.                 'facturation_telephone' => !empty($request->get('expedition_form')['livraison_telephone']) ? $request->get('expedition_form')['livraison_telephone'] : $dataLivraison['livraison_telephone'],
  176.                 'facturation_contact' => !empty($request->get('expedition_form')['livraison_contact']) ? $request->get('expedition_form')['livraison_contact'] : $dataLivraison['livraison_contact'],
  177.                 'facturation_mail' => !empty($request->get('expedition_form')['livraison_mail']) ? $request->get('expedition_form')['livraison_mail'] : $dataLivraison['livraison_mail'],
  178.             ];
  179.             $request->request->set('facturation_form'$facturation);
  180.             $request->request->set('facturation_form_facturation_type_de_contrat'4); // 'facturation_form_facturation_type_de_contrat' => '4' // Vente
  181.             $request->request->set('expedition_type'"1");
  182.             $request->request->set('transporteur'"0");
  183.             return $this->insertTrait($helpers$translator$request$em$filesystem$commandeClientPieceJointRepo$referentielTypeParametrageRepo$commandeEnAttenteRepo$informationsAdresseRepo$typeContratRepo$utilisateurSocieteRepo$utilisateurSocieteImageRepo$transporteurRepo,
  184.                 $commandeClientTypeDateExpeditionRepo$commandeClientEtatRepo$commandeClientEquipeRepo$commandeClientTypeCommandeRepo$referentielRepo$stockLibelleRepo,
  185.                 $etatMaterielRepo$utilisateursRepo$validateurRepo$CommandeClientListeStatutRepo$commandeClientReferenceRepo$expeditionRepo$typeContratOptionReponull$passerelisteRepo$commandeClientRepo$suiviColisRepo$suiviColisColorRepository,
  186.                 $timeZoneRepo$transportComptesRepo'$id_commande_attente',false'$societeId'falsefalsetrue);
  187.         }
  188.         $addMatCCQuickPopupContent $this->render('cc_quick/includes/cc_quick_qty_popup.html.twig', [
  189.             'formCCQuick' => $formCCQuickView
  190.         ])->getContent();
  191.         $livraisonFichiersEnAttente['livraison_fichiers'] = [];
  192.         $formExpedition $this->createForm(ExpeditionFormType::class, [
  193.             'commandeClientEnAttenteData' => [],
  194.             'dataLivraison' => $dataLivraison
  195.         ]);
  196.         return $this->render('home/index.html.twig', [
  197.             'controller_name' => 'HomeController',
  198.             'viewQuickCc' => $currentUser->getViewQuickCc(),
  199.             'formExpedition' => $formExpedition->createView(),
  200.             'formCCQuick' => $formCCQuickView,
  201.             'matsList' => [],
  202.             'addMatCCQuickPopupContent' => $addMatCCQuickPopupContent,
  203.             'livraisonFichiersEnAttente' => $livraisonFichiersEnAttente,
  204.             'logiciels' => $logicielRepo->recLesLogiciels('l.idLogiciel, l.nom')
  205.         ]);
  206.     }
  207. }