src/Controller/SupplierController.php line 1020

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by Mediterranean Develup Solutions
  4.  * User: jorge.defreitas@develup.solutions
  5.  * Date: 06/07/2017
  6.  * Time: 14:26
  7.  */
  8. namespace App\Controller;
  9. use App\Entity\Cities;
  10. use App\Entity\Country;
  11. use App\Entity\Provinces;
  12. use App\Entity\Regions;
  13. use App\Entity\Supplier;
  14. use App\Entity\RevisionCarga;
  15. use App\Entity\SupplierContact;
  16. use App\Entity\SupplierDescription;
  17. use App\Entity\SupplierGroup;
  18. use App\Entity\SupplierIdeaServicesControl;
  19. use App\Entity\SupplierSettingsType;
  20. use App\Form\SupplierSettingsTypeType;
  21. use App\Form\SupplierType;
  22. use Doctrine\ORM\EntityManagerInterface;
  23. use Psr\Log\LoggerInterface;
  24. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use Symfony\Component\HttpFoundation\JsonResponse;
  27. use Symfony\Component\HttpFoundation\Request;
  28. use Symfony\Contracts\Translation\TranslatorInterface;
  29. class SupplierController extends AbstractController
  30. {
  31.     private $translator;
  32.     private EntityManagerInterface $em;
  33.     public function __construct(TranslatorInterface $translatorEntityManagerInterface $em) {
  34.         $this->translator $translator;
  35.         $this->em $em;
  36.     }
  37.     /**
  38.      * @Route("/supplier", name="supplier_home")
  39.      */
  40.     public function indexAction(Request $request) {
  41.         return $this->redirectToRoute('supplier_index_simple_letters', [ 'ind' => ]);
  42.     }
  43.     /**
  44.      * @Route("/supplier/list/{idgroup}", defaults={"idgroup" = 0}, name="supplier_index")
  45.      */
  46.     public function listAction($idgroupRequest $request) {
  47.         $em $this->getDoctrine()->getManager();
  48.         $name is_null($request->request->get('settingstype'))? '' $request->request->get('settingstype')['name'];
  49.         $suppliersettingstypefrom = new SupplierSettingsType();
  50.         if (!empty($name)) {
  51.             $suppliersettingstype $em->getRepository(SupplierSettingsType::class)->findOneByName($name);
  52.             $suppliersettingstypefrom->setName($suppliersettingstype);
  53.         }
  54.         $form $this->createSupplierSettingsTypeForm($suppliersettingstypefrom);
  55.         $group $em->getRepository(SupplierGroup::class)->findById($idgroup);
  56.         if (!empty($name)){
  57.             $suppliers $em->getRepository(Supplier::class)->findBy(
  58.                 array( 'tags' => $name )
  59.             );
  60.         }else{
  61.             if ($idgroup == 0){
  62.                 $suppliers $em->getRepository(Supplier::class)->findAll();
  63.             }else{
  64.                 $suppliers $em->getRepository(Supplier::class)->findBy(
  65.                     array( 'groupId' => $idgroup)
  66.                 );
  67.             }
  68.         }
  69.         /* evitar errores por no tener nada */
  70.         $data_supplier = array();
  71.         foreach($suppliers as $supplier) {
  72.             $country $em->getRepository(Country::class)->findOneById($supplier->getCountry());
  73.             $supplier->setCountry($country->getCountry());
  74.             $regions $em->getRepository(Regions::class)->findOneById($supplier->getRegion());
  75.             if (!(is_null($regions))) {
  76.                 $supplier->setRegion($regions->getRegion());
  77.             }else{
  78.                 $supplier->setRegion('1');
  79.             }
  80.             $province $em->getRepository(Provinces::class)->findOneById($supplier->getProvince());
  81.             if (!(is_null($province))) {
  82.                 $supplier->setProvince($province->getName());
  83.             }else{
  84.                 $supplier->setProvince('1');
  85.             }
  86.             $cities $em->getRepository(Cities::class)->findOneById($supplier->getPopulation());
  87.             $supplier->setPopulation($cities->getCity());
  88.             if (!is_null($supplier->getGroupId())){
  89.                 $groupname $em->getRepository(SupplierGroup::class)->findOneById($supplier->getGroupId());
  90.                 if(is_null($groupname)){
  91.                     $supplier->setGroupId("N/G");
  92.                 }else{
  93.                     $supplier->setGroupId($groupname->getName());
  94.                 }
  95.             }
  96.             $contacts $em->getRepository(SupplierContact::class)->findBy(
  97.                 array( 'supplierId' => $supplier->getId())
  98.             );
  99.              $supplierIdeaServicesControl $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($supplier->getId());
  100.             if (!empty($supplierIdeaServicesControl)) {     //Gustavo Ayala: agregué este condicional para para que si viene vacio el getId no genere un error
  101.             $data_supplier[] = array(
  102.                 'controlGid' => $supplierIdeaServicesControl->getId(),
  103.                 'supplier' => $supplier,
  104.                 'contacts' => $contacts
  105.             );
  106.             }
  107.         }
  108.         return $this->render('supplier/supplier/list-supplier.html.twig', array(
  109.             'groups' => $group,
  110.             'supplier' => $data_supplier,
  111.             'form' => $form->createView()
  112.         ));
  113.     }
  114.     private function createSupplierSettingsTypeForm(SupplierSettingsType $entity)
  115.     {
  116.         $form $this->createForm(SupplierSettingsTypeType::class, $entity, array(
  117.             'action' => $this->generateUrl('supplier_index'),
  118.             'method' => 'POST'
  119.         ));
  120.         return $form;
  121.     }
  122.     /**
  123.      * @Route("/supplier/listsimple/{ind}", defaults={"ind" = 0}, name="supplier_index_simple")
  124.      */
  125.     public function listSupplierSimpleAction($indRequest $request) {
  126.         $idgroup 0;
  127.         $em $this->getDoctrine()->getManager();
  128.         $name $request->request->get('settingstype')['name'];
  129.         $suppliersettingstypefrom = new SupplierSettingsType();
  130.         if (!empty($name)) {
  131.             $suppliersettingstype $em->getRepository(SupplierSettingsType::class)->findOneByName($name);
  132.             $suppliersettingstypefrom->setName($suppliersettingstype);
  133.         }
  134.         $form $this->createSupplierSettingsTypeForm($suppliersettingstypefrom);
  135.         $group $em->getRepository(SupplierGroup::class)->findById($idgroup);
  136.         $suppliersBigArray = array();
  137.         if (!empty($name)){
  138.             $suppliers $em->getRepository(Supplier::class)->findBy(
  139.                 array( 'tags' => $name )
  140.             );
  141.         }else{
  142.             if ($idgroup == 0){
  143. //                $suppliers = $em->getRepository(Supplier::class)->findAll();
  144.                 $parameters = array();
  145. //                $dql = 'SELECT p
  146. //                        FROM App\Entity\Supplier p
  147. //                        WHERE p.idDocument is not NULL
  148. //                        ORDER BY p.id ASC ';
  149.                 $dql 'SELECT p
  150.                         FROM App\Entity\Supplier p
  151.                         ORDER BY p.name ASC ';
  152.                 $query $em->createQuery($dql)->setParameters($parameters);
  153.                 $suppliersBigArray $query->getResult();
  154.             }else{
  155.                 $suppliers $em->getRepository(Supplier::class)->findBy(
  156.                     array( 'groupId' => $idgroup)
  157.                 );
  158.             }
  159.         }
  160.         $ind $ind 250;
  161.         $suppliers array_slice($suppliersBigArray$ind250);
  162.         // Generando el arreglo de la botonera para los saltos de pagina
  163.         $indStart 0;
  164.         $indEndArray sizeof($suppliersBigArray) - 1;
  165.         $arrayBoton = array();
  166.         for($indStart 0$indStart <= $indEndArray$indStart $indStart 250){
  167.             if($indStart 250 $indEndArray){
  168.                 //Ya tienes el ultimo elemento
  169.                 $indEnd $indEndArray;
  170.             } else {
  171.                 $indEnd $indStart 249;
  172.             }
  173.             //Buscamos las letras y compañias de inicio y fin
  174.             $companyInicio $suppliersBigArray[$indStart]->getName();
  175.             $letraInicio substr($companyInicio0,1);
  176.             $companyFin $suppliersBigArray[$indEnd]->getName();
  177.             $letraFin substr($companyFin0,1);
  178.             $elem = array(
  179.                  'indInicio' => $indStart,
  180.                  'indFin' => $indEnd,
  181.                  'letraInicio' => $letraInicio,
  182.                  'companyInicio' => $companyInicio,
  183.                  'letraFin' => $letraFin,
  184.                 'companyFin' => $companyFin,
  185.             );
  186.             $arrayBoton[] = $elem;
  187.         }
  188.         /* evitar errores por no tener nada */
  189.         $data_supplier = array();
  190.         foreach($suppliers as $supplier) {
  191.             $country $em->getRepository(Country::class)->findOneById($supplier->getCountry());
  192.             $supplier->setCountry($country->getCountry());
  193.             $regions $em->getRepository(Regions::class)->findOneById($supplier->getRegion());
  194.             if (!(is_null($regions))) {
  195.                 $supplier->setRegion($regions->getRegion());
  196.             }else{
  197.                 $supplier->setRegion('1');
  198.             }
  199.             $province $em->getRepository(Provinces::class)->findOneById($supplier->getProvince());
  200.             if (!(is_null($province))) {
  201.                 $supplier->setProvince($province->getName());
  202.             }else{
  203.                 $supplier->setProvince('1');
  204.             }
  205.             $cities $em->getRepository(Cities::class)->findOneById($supplier->getPopulation());
  206.             $supplier->setPopulation($cities->getCity());
  207.             if (!is_null($supplier->getGroupId())){
  208.                 $groupname $em->getRepository(SupplierGroup::class)->findOneById($supplier->getGroupId());
  209.                 if (!is_null($groupname)) {
  210.                     $supplier->setGroupId($groupname->getName());
  211.                 }
  212.             }
  213. //            $contacts = $em->getRepository(SupplierContact::class)->findBy(
  214. //                array( 'supplierId' => $supplier->getId())
  215. //            );
  216.             $supplierIdeaServicesControl $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($supplier->getId());
  217.             $arraySuppliers = array(
  218.                 'groupId' => $supplier->getGroupId(),
  219.                 'tags' => $supplier->getTags(),
  220.                 'type' => $supplier->getType(),
  221.                 'name' => $supplier->getName(),
  222.                 'idDocument' => $supplier->getIdDocument(),
  223.                 'company' => $supplier->getCompany(),
  224.                 'id' => $supplier->getId(),
  225.             );
  226.             if (!empty($supplierIdeaServicesControl)) {
  227.                 $data_supplier[] = array(
  228.                     'controlGid' => $supplierIdeaServicesControl->getId(),
  229.                     'supplier' => $arraySuppliers,
  230. //                    'supplier' => $supplier,
  231. //                    'contacts' => $contacts
  232.                 );
  233.             }
  234.         }
  235.         return $this->render('supplier/supplier/list-supplier-simple.html.twig', array(
  236.             'groups' => $group,
  237.             'supplier' => $data_supplier,
  238.             'arrayBoton' => $arrayBoton,
  239.             'form' => $form->createView()
  240.         ));
  241.     }
  242.     /**
  243.      * @Route("/supplier/supplierlistsimpleletters/{ind}", name="supplier_index_simple_letters")
  244.      */
  245.     public function listSupplierSimpleLettersAction($indRequest $request)
  246.     {
  247.         $em $this->getDoctrine()->getManager();
  248.         $data_supplier = array();
  249.         $arrayBoton = array();
  250.         if (true){
  251.             // Creacion de la Botonera
  252.             $elem = array('letra' => '0'); $arrayBoton['0'] = $elem;
  253.             $elem = array('letra' => 'A'); $arrayBoton['A'] = $elem;
  254.             $elem = array('letra' => 'B'); $arrayBoton['B'] = $elem;
  255.             $elem = array('letra' => 'C'); $arrayBoton['C'] = $elem;
  256.             $elem = array('letra' => 'D'); $arrayBoton['D'] = $elem;
  257.             $elem = array('letra' => 'E'); $arrayBoton['E'] = $elem;
  258.             $elem = array('letra' => 'F'); $arrayBoton['F'] = $elem;
  259.             $elem = array('letra' => 'G'); $arrayBoton['G'] = $elem;
  260.             $elem = array('letra' => 'H'); $arrayBoton['H'] = $elem;
  261.             $elem = array('letra' => 'I'); $arrayBoton['I'] = $elem;
  262.             $elem = array('letra' => 'J'); $arrayBoton['J'] = $elem;
  263.             $elem = array('letra' => 'K'); $arrayBoton['K'] = $elem;
  264.             $elem = array('letra' => 'L'); $arrayBoton['L'] = $elem;
  265.             $elem = array('letra' => 'M'); $arrayBoton['M'] = $elem;
  266.             $elem = array('letra' => 'N'); $arrayBoton['N'] = $elem;
  267.             $elem = array('letra' => 'Ñ'); $arrayBoton['Ñ'] = $elem;
  268.             $elem = array('letra' => 'O'); $arrayBoton['O'] = $elem;
  269.             $elem = array('letra' => 'P'); $arrayBoton['P'] = $elem;
  270.             $elem = array('letra' => 'Q'); $arrayBoton['Q'] = $elem;
  271.             $elem = array('letra' => 'R'); $arrayBoton['R'] = $elem;
  272.             $elem = array('letra' => 'S'); $arrayBoton['S'] = $elem;
  273.             $elem = array('letra' => 'T'); $arrayBoton['T'] = $elem;
  274.             $elem = array('letra' => 'U'); $arrayBoton['U'] = $elem;
  275.             $elem = array('letra' => 'V'); $arrayBoton['V'] = $elem;
  276.             $elem = array('letra' => 'W'); $arrayBoton['W'] = $elem;
  277.             $elem = array('letra' => 'X'); $arrayBoton['X'] = $elem;
  278.             $elem = array('letra' => 'Y'); $arrayBoton['Y'] = $elem;
  279.             $elem = array('letra' => 'Z'); $arrayBoton['Z'] = $elem;
  280.         }
  281.         if ($ind == '0'){
  282.             // Caso base, viene vacio se mostraran los que no empiezan por letra
  283.             $arraySuppliersZero $em->getRepository(Supplier::class)->findAll();
  284.             $arraySuppliers = array();
  285.             // Creamos un arreglo con los indices
  286.             foreach ($arraySuppliersZero as $item){
  287.                 $arraySuppliers[$item->getId()] = $item;
  288.             }
  289.             //Eliminamos del arreglo los elelmentos que se deban listar en A,B,C,...,Y,Z
  290.             if (true){
  291.                 $indice 'a';
  292.                 $parameters = array(
  293.                     'namelist' => $indice.'%'
  294.                 );
  295.                 $dql 'SELECT i
  296.                 FROM App\Entity\Supplier i
  297.                 WHERE i.name LIKE :namelist
  298.                 ORDER BY i.name ASC';
  299.                 $query $em->createQuery($dql)->setParameters($parameters);
  300.                 $suppliers $query->getResult();
  301.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  302.                 foreach ($suppliers as $item){
  303.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  304.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  305.                         unset($arraySuppliers[$item->getId()]);
  306.                     }
  307.                 }
  308.             }
  309.             if (true){
  310.                 $indice 'b';
  311.                 $parameters = array(
  312.                     'namelist' => $indice.'%'
  313.                 );
  314.                 $dql 'SELECT i
  315.                 FROM App\Entity\Supplier i
  316.                 WHERE i.name LIKE :namelist
  317.                 ORDER BY i.name ASC';
  318.                 $query $em->createQuery($dql)->setParameters($parameters);
  319.                 $suppliers $query->getResult();
  320.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  321.                 foreach ($suppliers as $item){
  322.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  323.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  324.                         unset($arraySuppliers[$item->getId()]);
  325.                     }
  326.                 }
  327.             }
  328.             if (true){
  329.                 $indice 'c';
  330.                 $parameters = array(
  331.                     'namelist' => $indice.'%'
  332.                 );
  333.                 $dql 'SELECT i
  334.                 FROM App\Entity\Supplier i
  335.                 WHERE i.name LIKE :namelist
  336.                 ORDER BY i.name ASC';
  337.                 $query $em->createQuery($dql)->setParameters($parameters);
  338.                 $suppliers $query->getResult();
  339.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  340.                 foreach ($suppliers as $item){
  341.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  342.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  343.                         unset($arraySuppliers[$item->getId()]);
  344.                     }
  345.                 }
  346.             }
  347.             if (true){
  348.                 $indice 'd';
  349.                 $parameters = array(
  350.                     'namelist' => $indice.'%'
  351.                 );
  352.                 $dql 'SELECT i
  353.                 FROM App\Entity\Supplier i
  354.                 WHERE i.name LIKE :namelist
  355.                 ORDER BY i.name ASC';
  356.                 $query $em->createQuery($dql)->setParameters($parameters);
  357.                 $suppliers $query->getResult();
  358.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  359.                 foreach ($suppliers as $item){
  360.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  361.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  362.                         unset($arraySuppliers[$item->getId()]);
  363.                     }
  364.                 }
  365.             }
  366.             if (true){
  367.                 $indice 'e';
  368.                 $parameters = array(
  369.                     'namelist' => $indice.'%'
  370.                 );
  371.                 $dql 'SELECT i
  372.                 FROM App\Entity\Supplier i
  373.                 WHERE i.name LIKE :namelist
  374.                 ORDER BY i.name ASC';
  375.                 $query $em->createQuery($dql)->setParameters($parameters);
  376.                 $suppliers $query->getResult();
  377.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  378.                 foreach ($suppliers as $item){
  379.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  380.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  381.                         unset($arraySuppliers[$item->getId()]);
  382.                     }
  383.                 }
  384.             }
  385.             if (true){
  386.                 $indice 'f';
  387.                 $parameters = array(
  388.                     'namelist' => $indice.'%'
  389.                 );
  390.                 $dql 'SELECT i
  391.                 FROM App\Entity\Supplier i
  392.                 WHERE i.name LIKE :namelist
  393.                 ORDER BY i.name ASC';
  394.                 $query $em->createQuery($dql)->setParameters($parameters);
  395.                 $suppliers $query->getResult();
  396.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  397.                 foreach ($suppliers as $item){
  398.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  399.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  400.                         unset($arraySuppliers[$item->getId()]);
  401.                     }
  402.                 }
  403.             }
  404.             if (true){
  405.                 $indice 'g';
  406.                 $parameters = array(
  407.                     'namelist' => $indice.'%'
  408.                 );
  409.                 $dql 'SELECT i
  410.                 FROM App\Entity\Supplier i
  411.                 WHERE i.name LIKE :namelist
  412.                 ORDER BY i.name ASC';
  413.                 $query $em->createQuery($dql)->setParameters($parameters);
  414.                 $suppliers $query->getResult();
  415.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  416.                 foreach ($suppliers as $item){
  417.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  418.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  419.                         unset($arraySuppliers[$item->getId()]);
  420.                     }
  421.                 }
  422.             }
  423.             if (true){
  424.                 $indice 'h';
  425.                 $parameters = array(
  426.                     'namelist' => $indice.'%'
  427.                 );
  428.                 $dql 'SELECT i
  429.                 FROM App\Entity\Supplier i
  430.                 WHERE i.name LIKE :namelist
  431.                 ORDER BY i.name ASC';
  432.                 $query $em->createQuery($dql)->setParameters($parameters);
  433.                 $suppliers $query->getResult();
  434.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  435.                 foreach ($suppliers as $item){
  436.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  437.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  438.                         unset($arraySuppliers[$item->getId()]);
  439.                     }
  440.                 }
  441.             }
  442.             if (true){
  443.                 $indice 'i';
  444.                 $parameters = array(
  445.                     'namelist' => $indice.'%'
  446.                 );
  447.                 $dql 'SELECT i
  448.                 FROM App\Entity\Supplier i
  449.                 WHERE i.name LIKE :namelist
  450.                 ORDER BY i.name ASC';
  451.                 $query $em->createQuery($dql)->setParameters($parameters);
  452.                 $suppliers $query->getResult();
  453.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  454.                 foreach ($suppliers as $item){
  455.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  456.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  457.                         unset($arraySuppliers[$item->getId()]);
  458.                     }
  459.                 }
  460.             }
  461.             if (true){
  462.                 $indice 'j';
  463.                 $parameters = array(
  464.                     'namelist' => $indice.'%'
  465.                 );
  466.                 $dql 'SELECT i
  467.                 FROM App\Entity\Supplier i
  468.                 WHERE i.name LIKE :namelist
  469.                 ORDER BY i.name ASC';
  470.                 $query $em->createQuery($dql)->setParameters($parameters);
  471.                 $suppliers $query->getResult();
  472.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  473.                 foreach ($suppliers as $item){
  474.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  475.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  476.                         unset($arraySuppliers[$item->getId()]);
  477.                     }
  478.                 }
  479.             }
  480.             if (true){
  481.                 $indice 'k';
  482.                 $parameters = array(
  483.                     'namelist' => $indice.'%'
  484.                 );
  485.                 $dql 'SELECT i
  486.                 FROM App\Entity\Supplier i
  487.                 WHERE i.name LIKE :namelist
  488.                 ORDER BY i.name ASC';
  489.                 $query $em->createQuery($dql)->setParameters($parameters);
  490.                 $suppliers $query->getResult();
  491.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  492.                 foreach ($suppliers as $item){
  493.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  494.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  495.                         unset($arraySuppliers[$item->getId()]);
  496.                     }
  497.                 }
  498.             }
  499.             if (true){
  500.                 $indice 'l';
  501.                 $parameters = array(
  502.                     'namelist' => $indice.'%'
  503.                 );
  504.                 $dql 'SELECT i
  505.                 FROM App\Entity\Supplier i
  506.                 WHERE i.name LIKE :namelist
  507.                 ORDER BY i.name ASC';
  508.                 $query $em->createQuery($dql)->setParameters($parameters);
  509.                 $suppliers $query->getResult();
  510.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  511.                 foreach ($suppliers as $item){
  512.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  513.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  514.                         unset($arraySuppliers[$item->getId()]);
  515.                     }
  516.                 }
  517.             }
  518.             if (true){
  519.                 $indice 'm';
  520.                 $parameters = array(
  521.                     'namelist' => $indice.'%'
  522.                 );
  523.                 $dql 'SELECT i
  524.                 FROM App\Entity\Supplier i
  525.                 WHERE i.name LIKE :namelist
  526.                 ORDER BY i.name ASC';
  527.                 $query $em->createQuery($dql)->setParameters($parameters);
  528.                 $suppliers $query->getResult();
  529.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  530.                 foreach ($suppliers as $item){
  531.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  532.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  533.                         unset($arraySuppliers[$item->getId()]);
  534.                     }
  535.                 }
  536.             }
  537.             if (true){
  538.                 $indice 'n';
  539.                 $parameters = array(
  540.                     'namelist' => $indice.'%'
  541.                 );
  542.                 $dql 'SELECT i
  543.                 FROM App\Entity\Supplier i
  544.                 WHERE i.name LIKE :namelist
  545.                 ORDER BY i.name ASC';
  546.                 $query $em->createQuery($dql)->setParameters($parameters);
  547.                 $suppliers $query->getResult();
  548.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  549.                 foreach ($suppliers as $item){
  550.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  551.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  552.                         unset($arraySuppliers[$item->getId()]);
  553.                     }
  554.                 }
  555.             }
  556.             if (true){
  557.                 $indice 'ñ';
  558.                 $parameters = array(
  559.                     'namelist' => $indice.'%'
  560.                 );
  561.                 $dql 'SELECT i
  562.                 FROM App\Entity\Supplier i
  563.                 WHERE i.name LIKE :namelist
  564.                 ORDER BY i.name ASC';
  565.                 $query $em->createQuery($dql)->setParameters($parameters);
  566.                 $suppliers $query->getResult();
  567.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  568.                 foreach ($suppliers as $item){
  569.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  570.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  571.                         unset($arraySuppliers[$item->getId()]);
  572.                     }
  573.                 }
  574.             }
  575.             if (true){
  576.                 $indice 'o';
  577.                 $parameters = array(
  578.                     'namelist' => $indice.'%'
  579.                 );
  580.                 $dql 'SELECT i
  581.                 FROM App\Entity\Supplier i
  582.                 WHERE i.name LIKE :namelist
  583.                 ORDER BY i.name ASC';
  584.                 $query $em->createQuery($dql)->setParameters($parameters);
  585.                 $suppliers $query->getResult();
  586.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  587.                 foreach ($suppliers as $item){
  588.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  589.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  590.                         unset($arraySuppliers[$item->getId()]);
  591.                     }
  592.                 }
  593.             }
  594.             if (true){
  595.                 $indice 'p';
  596.                 $parameters = array(
  597.                     'namelist' => $indice.'%'
  598.                 );
  599.                 $dql 'SELECT i
  600.                 FROM App\Entity\Supplier i
  601.                 WHERE i.name LIKE :namelist
  602.                 ORDER BY i.name ASC';
  603.                 $query $em->createQuery($dql)->setParameters($parameters);
  604.                 $suppliers $query->getResult();
  605.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  606.                 foreach ($suppliers as $item){
  607.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  608.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  609.                         unset($arraySuppliers[$item->getId()]);
  610.                     }
  611.                 }
  612.             }
  613.             if (true){
  614.                 $indice 'q';
  615.                 $parameters = array(
  616.                     'namelist' => $indice.'%'
  617.                 );
  618.                 $dql 'SELECT i
  619.                 FROM App\Entity\Supplier i
  620.                 WHERE i.name LIKE :namelist
  621.                 ORDER BY i.name ASC';
  622.                 $query $em->createQuery($dql)->setParameters($parameters);
  623.                 $suppliers $query->getResult();
  624.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  625.                 foreach ($suppliers as $item){
  626.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  627.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  628.                         unset($arraySuppliers[$item->getId()]);
  629.                     }
  630.                 }
  631.             }
  632.             if (true){
  633.                 $indice 'r';
  634.                 $parameters = array(
  635.                     'namelist' => $indice.'%'
  636.                 );
  637.                 $dql 'SELECT i
  638.                 FROM App\Entity\Supplier i
  639.                 WHERE i.name LIKE :namelist
  640.                 ORDER BY i.name ASC';
  641.                 $query $em->createQuery($dql)->setParameters($parameters);
  642.                 $suppliers $query->getResult();
  643.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  644.                 foreach ($suppliers as $item){
  645.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  646.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  647.                         unset($arraySuppliers[$item->getId()]);
  648.                     }
  649.                 }
  650.             }
  651.             if (true){
  652.                 $indice 's';
  653.                 $parameters = array(
  654.                     'namelist' => $indice.'%'
  655.                 );
  656.                 $dql 'SELECT i
  657.                 FROM App\Entity\Supplier i
  658.                 WHERE i.name LIKE :namelist
  659.                 ORDER BY i.name ASC';
  660.                 $query $em->createQuery($dql)->setParameters($parameters);
  661.                 $suppliers $query->getResult();
  662.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  663.                 foreach ($suppliers as $item){
  664.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  665.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  666.                         unset($arraySuppliers[$item->getId()]);
  667.                     }
  668.                 }
  669.             }
  670.             if (true){
  671.                 $indice 't';
  672.                 $parameters = array(
  673.                     'namelist' => $indice.'%'
  674.                 );
  675.                 $dql 'SELECT i
  676.                 FROM App\Entity\Supplier i
  677.                 WHERE i.name LIKE :namelist
  678.                 ORDER BY i.name ASC';
  679.                 $query $em->createQuery($dql)->setParameters($parameters);
  680.                 $suppliers $query->getResult();
  681.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  682.                 foreach ($suppliers as $item){
  683.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  684.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  685.                         unset($arraySuppliers[$item->getId()]);
  686.                     }
  687.                 }
  688.             }
  689.             if (true){
  690.                 $indice 'u';
  691.                 $parameters = array(
  692.                     'namelist' => $indice.'%'
  693.                 );
  694.                 $dql 'SELECT i
  695.                 FROM App\Entity\Supplier i
  696.                 WHERE i.name LIKE :namelist
  697.                 ORDER BY i.name ASC';
  698.                 $query $em->createQuery($dql)->setParameters($parameters);
  699.                 $suppliers $query->getResult();
  700.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  701.                 foreach ($suppliers as $item){
  702.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  703.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  704.                         unset($arraySuppliers[$item->getId()]);
  705.                     }
  706.                 }
  707.             }
  708.             if (true){
  709.                 $indice 'v';
  710.                 $parameters = array(
  711.                     'namelist' => $indice.'%'
  712.                 );
  713.                 $dql 'SELECT i
  714.                 FROM App\Entity\Supplier i
  715.                 WHERE i.name LIKE :namelist
  716.                 ORDER BY i.name ASC';
  717.                 $query $em->createQuery($dql)->setParameters($parameters);
  718.                 $suppliers $query->getResult();
  719.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  720.                 foreach ($suppliers as $item){
  721.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  722.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  723.                         unset($arraySuppliers[$item->getId()]);
  724.                     }
  725.                 }
  726.             }
  727.             if (true){
  728.                 $indice 'w';
  729.                 $parameters = array(
  730.                     'namelist' => $indice.'%'
  731.                 );
  732.                 $dql 'SELECT i
  733.                 FROM App\Entity\Supplier i
  734.                 WHERE i.name LIKE :namelist
  735.                 ORDER BY i.name ASC';
  736.                 $query $em->createQuery($dql)->setParameters($parameters);
  737.                 $suppliers $query->getResult();
  738.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  739.                 foreach ($suppliers as $item){
  740.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  741.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  742.                         unset($arraySuppliers[$item->getId()]);
  743.                     }
  744.                 }
  745.             }
  746.             if (true){
  747.                 $indice 'x';
  748.                 $parameters = array(
  749.                     'namelist' => $indice.'%'
  750.                 );
  751.                 $dql 'SELECT i
  752.                 FROM App\Entity\Supplier i
  753.                 WHERE i.name LIKE :namelist
  754.                 ORDER BY i.name ASC';
  755.                 $query $em->createQuery($dql)->setParameters($parameters);
  756.                 $suppliers $query->getResult();
  757.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  758.                 foreach ($suppliers as $item){
  759.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  760.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  761.                         unset($arraySuppliers[$item->getId()]);
  762.                     }
  763.                 }
  764.             }
  765.             if (true){
  766.                 $indice 'y';
  767.                 $parameters = array(
  768.                     'namelist' => $indice.'%'
  769.                 );
  770.                 $dql 'SELECT i
  771.                 FROM App\Entity\Supplier i
  772.                 WHERE i.name LIKE :namelist
  773.                 ORDER BY i.name ASC';
  774.                 $query $em->createQuery($dql)->setParameters($parameters);
  775.                 $suppliers $query->getResult();
  776.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  777.                 foreach ($suppliers as $item){
  778.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  779.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  780.                         unset($arraySuppliers[$item->getId()]);
  781.                     }
  782.                 }
  783.             }
  784.             if (true){
  785.                 $indice 'z';
  786.                 $parameters = array(
  787.                     'namelist' => $indice.'%'
  788.                 );
  789.                 $dql 'SELECT i
  790.                 FROM App\Entity\Supplier i
  791.                 WHERE i.name LIKE :namelist
  792.                 ORDER BY i.name ASC';
  793.                 $query $em->createQuery($dql)->setParameters($parameters);
  794.                 $suppliers $query->getResult();
  795.                 // Buscamos los elementos de esta letra y los removemos del arreglo
  796.                 foreach ($suppliers as $item){
  797.                     if (array_key_exists($item->getId(),$arraySuppliers)){
  798.                         // Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
  799.                         unset($arraySuppliers[$item->getId()]);
  800.                     }
  801.                 }
  802.             }
  803.             $suppliers $arraySuppliers;
  804.         } else {
  805.             $parameters = array(
  806.                 'namelist' => $ind.'%'
  807.             );
  808.             $dql 'SELECT i
  809.                 FROM App\Entity\Supplier i
  810.                 WHERE i.name LIKE :namelist
  811.                 ORDER BY i.name ASC';
  812.             $query $em->createQuery($dql)->setParameters($parameters);
  813.             $suppliers $query->getResult();
  814.         }
  815.         foreach($suppliers as $supplier){
  816.             $supplierIdeaServicesControl $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($supplier->getId());
  817.             $arraySuppliers = array(
  818.                 'groupId' => $supplier->getGroupId(),
  819.                 'tags' => $supplier->getTags(),
  820.                 'type' => $supplier->getType(),
  821.                 'name' => $supplier->getName(),
  822.                 'idDocument' => $supplier->getIdDocument(),
  823.                 'company' => $supplier->getCompany(),
  824.                 'id' => $supplier->getId(),
  825.             );
  826.             if (!empty($supplierIdeaServicesControl)) {
  827.                 $data_supplier[] = array(
  828.                     'controlGid' => $supplierIdeaServicesControl->getId(),
  829.                     'supplier' => $arraySuppliers,
  830.                 );
  831.             }
  832.         }
  833.         return $this->render('supplier/supplier/list-supplier-simple-letters.html.twig', array(
  834.             'supplier' => $data_supplier,
  835.             'arrayBoton' => $arrayBoton,
  836.         ));
  837.     }
  838.     /**
  839.      * @Route("/supplier/add",  name="supplier_add")
  840.      */
  841.     public function addSupplierAction(Request $request)
  842.     {
  843.         $supplier = new Supplier();
  844.         $form $this->createSupplierCreateForm($supplier);
  845.         return $this->render('supplier/supplier/add-supplier.html.twig',
  846.             array(
  847.                 'description' => '',
  848.                 'form' => $form->createView()
  849.             )
  850.         );
  851.     }
  852.     private function createSupplierCreateForm(Supplier $entity)
  853.     {
  854.         $form $this->createForm(SupplierType::class, $entity, array(
  855.             'action' => $this->generateUrl('supplier_create'),
  856.             'method' => 'POST'
  857.         ));
  858.         return $form;
  859.     }
  860.     /**
  861.      * @Route("/supplier/create", name="supplier_create")
  862.      */
  863.     public function createAction(Request $requestLoggerInterface $logger)
  864.     {
  865.         $tags $request->request->get('supplier')['tags'] ?? [];
  866.         if(isset($request->request->get('supplier')['tags'])){
  867.             $supplierData $request->request->get('supplier');
  868.             $supplierData['tags'] = implode(','$tags); // Elimina 'tags' del array clonado
  869.             // Reemplaza el array de 'supplier' modificado de vuelta en el request
  870.             $request->request->set('supplier'$supplierData);
  871.         }
  872.         $region $request->request->get('supplier')['region'];
  873.         $province $request->request->get('supplier')['province'];
  874.         $population $request->request->get('supplier')['population'];
  875.         /*PARA MAYUSCULAS*/
  876.         $name $request->request->get('supplier')['name'];
  877.         $company $request->request->get('supplier')['company'];
  878.         /* esto lo obtengo a las malas del formulario :) */
  879.         $language_data $request->request->get("language");
  880.         $description_data $request->request->get("description");
  881.         $description_form = array(
  882.             'language' => $language_data,
  883.             'description' => $description_data
  884.         );
  885.         $supplier = new Supplier();
  886.         $form $this->createSupplierCreateForm($supplier);
  887.         $form->handleRequest($request);
  888.         $supplier ->setPopulation($population);
  889.         $supplier ->setProvince($province);
  890.         $supplier ->setRegion($region);
  891.         $url $request->request->get('supplier')['url'];
  892.         if(!empty($url)){
  893.             $urlpartsparse_url($url);
  894.             if(isset($urlparts['scheme'])){
  895.                 $scheme $urlparts['scheme'];
  896.                 if ($scheme == 'https' OR $scheme == 'http') {
  897.                     $supplier->setUrl($url);
  898.                 }else{
  899.                     $supplier->setUrl('http://'.$url);
  900.                 }
  901.             }else{
  902.                 $supplier->setUrl('http://'.$url);
  903.             }
  904.         }
  905.         if(!empty($name)){
  906.             $supplier ->setName(strtoupper($name));
  907.         }
  908.         if(!empty($company)){
  909.             $supplier ->setCompany(strtoupper($company));
  910.         }
  911.         $group_client $form->get('groupId')->getData();
  912.         if(!is_null($group_client)){
  913.             $supplier->setGroupId($group_client->getId());
  914.         }
  915.         $telephone_data $form->get('telephone')->getData();
  916.         // $email_data  = $form->get('email')->getData();
  917.         $country $form->get('country')->getData();
  918.         if(!is_null($country)){
  919.             $supplier->setCountry($country->getId());
  920.         }
  921.         $errores=0;
  922.         $campo="";
  923.         if (empty($population)){
  924.             $errores 1;
  925.             $campo $this->translator->trans("City");
  926.         }elseif (empty($province)){
  927.             $errores 1;
  928.             $campo $this->translator->trans("Province");
  929.         }
  930.         $type $form->get('type')->getData();
  931.         if(!is_null($type)) {
  932.             $supplier->setType($type->getBase());
  933.         }
  934. //        if(isset($request->request->get('supplier')['tags']) && $request->request->get('supplier')['tags'] != ''){
  935.         $supplier->setTags($request->request->get('supplier')['tags']);
  936.         $verifico_phone $this->getDoctrine()->getRepository(Supplier::class)->findOneByTelephone($telephone_data);
  937.         // $verifico_email = $this->getDoctrine()->getRepository(Supplier::class)->findOneByEmail($email_data);
  938.         $isSupplierInOut $form->get('is_supplier_in_out')->getData();
  939.         $isSupplierGreenPatio $form->get('is_supplier_green_patio')->getData();
  940.         $isSupplierAvExpress $form->get('is_supplier_av_express')->getData();
  941.         $isSupplierDevelup $form->get('is_supplier_develup')->getData();
  942.         if(!is_null($isSupplierInOut)){
  943.             $supplier->setIsSupplierInOut($isSupplierInOut);
  944.         }
  945.         if(!is_null($isSupplierGreenPatio)){
  946.             $supplier->setIsSupplierGreenPatio($isSupplierGreenPatio);
  947.         }
  948.         if(!is_null($isSupplierAvExpress)){
  949.             $supplier->setIsSupplierAvExpress($isSupplierAvExpress);
  950.         }
  951.         if(!is_null($isSupplierDevelup)){
  952.             $supplier->setIsSupplierDevelup($isSupplierDevelup);
  953.         }
  954.         if($errores == "0") {
  955.             if (empty($verifico_phone)) {
  956.               
  957.                 if($form->isValid())
  958.                 {
  959.                     $em $this->getDoctrine()->getManager();
  960.                     /* Obtengo usuario logueado */
  961.                     $user_logueado $this->get('security.token_storage')->getToken()->getUser();
  962.                     $user_id $user_logueado->getId();
  963.                     $supplier->setCreatedId($user_id);
  964.                     $supplier->setUpdatedId($user_id);
  965.     //                $em->persist($supplier);
  966.     //                $em->flush();
  967.                     /* Gestión de eventos en Log */
  968.                     $user_lastname $user_logueado->getLastname();
  969.                     $user_name $user_logueado->getName();
  970.                     $user_email $user_logueado->getEmail();
  971.                     $user_rol $user_logueado->getRoles();
  972.                     $event_url $request->getPathInfo();
  973.                     $event_complete $user_name.' '.$user_lastname.' - '.$user_email.' - '.$user_rol[0].' | '.$event_url;
  974.                     try{
  975.                         $em->persist($supplier);
  976.                         $em->flush();
  977.                         $controlgeneral = new SupplierIdeaServicesControl();
  978.                         $controlgeneral->setSupplierId($supplier->getId());
  979.                         $em->persist($controlgeneral);
  980.                         $em->flush();
  981.                         /* Meto :p la data en description */
  982.                         if (!empty($language_data) && !empty($description_data)) {
  983.                             $description = new SupplierDescription();
  984.                             $description->setSupplierId($controlgeneral->getId());
  985.                             $description->setLanguage($language_data);
  986.                             $description->setDescription($description_data);
  987.                             $description->setCreatedId($user_id);
  988.                             $description->setUpdatedId($user_id);
  989.                             $em->persist($description);
  990.                             $em->flush();
  991.                         } else {
  992.                             $description = new SupplierDescription();
  993.                             $description->setSupplierId($controlgeneral->getId());
  994.                             $description->setLanguage(0);
  995.                             $description->setDescription('');
  996.                             $description->setCreatedId($user_id);
  997.                             $description->setUpdatedId($user_id);
  998.                             $em->persist($description);
  999.                             $em->flush();
  1000.                         }
  1001.                         // Control para el sistema de revision
  1002.                         $revision1 = new RevisionCarga();
  1003.                         $revision2 = new RevisionCarga();
  1004.                         $revision3 = new RevisionCarga();
  1005.                         $revision1->setIdType($supplier->getId());
  1006.                         $revision2->setIdType($supplier->getId());
  1007.                         $revision3->setIdType($supplier->getId());
  1008.                         $revision1->setName($supplier->getName());
  1009.                         $revision2->setName($supplier->getName());
  1010.                         $revision3->setName($supplier->getName());
  1011.                         // Datos generales
  1012.                         $revision1->setType('PROVEEDOR - Datos');
  1013.                         $revision1->setLink('supplier/edit/'.$supplier->getId());
  1014.                         $revision1->setStatus(false);
  1015.                         $em->persist($revision1);
  1016.                         $em->flush();
  1017.                         // Descripcion
  1018.                         $revision2->setType('PROVEEDOR - Descripción');
  1019.                         // Buscamos el ID de la descripcion
  1020.                         $idact $supplier->getId();
  1021.                         $controlgeneral $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($idact);
  1022.                         $idctrl $controlgeneral->getId();
  1023.                         $supdesc $em->getRepository(SupplierDescription::class)->findOneBySupplierId($idctrl);
  1024.                         
  1025.                         $id $supdesc->getId();
  1026.                         // FIN Buscamos el ID de la descripcion
  1027.                         $revision2->setLink('supplier/description/edit/'.$id);
  1028.                         $revision2->setStatus(false);
  1029.                         $em->persist($revision2);
  1030.                         $em->flush();
  1031.                         // Galería
  1032.                         $revision3->setType('PROVEEDOR - Galería');
  1033.                         $revision3->setLink('supplier/gallery/list/'.$supplier->getId());
  1034.                         $revision3->setStatus(false);
  1035.                         $em->persist($revision3);
  1036.                         $em->flush();
  1037.                         // FIN Control para el sistema de revision
  1038.                         $event 'The supplier has been created..';
  1039.                         $successMessage $this->translator->trans($event);
  1040.                         $this->addFlash('mensajesupplier'$successMessage);
  1041.                         $logger->info($event_complete.' | '.$event);
  1042.                     } catch (\Exception $e){
  1043.                         $event 'An error occurred: '.$e->getMessage();
  1044.                         /* Para el log */
  1045.                         $logger->error($event_complete.' | '.$event);
  1046.                         /* Para el usuario */
  1047.                         $errorMessage $this->translator->trans($event);
  1048.                         $this->addFlash('mensajesuppliererror'$errorMessage);
  1049.                     }
  1050.                     /* Fin Gestión de eventos en Log */
  1051.     //                $supplierrappelcontrol = new SupplierRappelControl();
  1052.     //                $supplierrappelcontrol->setSupplierId($supplier->getId());
  1053.     //                $supplierrappelcontrol->setCreatedId($user_id);
  1054.     //                $supplierrappelcontrol->setUpdatedId($user_id);
  1055.     //                $em->persist($supplierrappelcontrol);
  1056.     //                $em->flush();
  1057. //                    return $this->redirectToRoute('supplier_index_simple_letters', [ 'ind' => 0 ]);
  1058.                     /*CONTROL GENERAL*/
  1059.                     $controlgeneral $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($supplier->getId());
  1060.                     $ids $controlgeneral->getId();
  1061.                     return $this->redirectToRoute('services_index',
  1062.                         array(
  1063.                             'ids' => $ids
  1064.                         )
  1065.                     );
  1066.                 }else{
  1067.                     $errorMessage $this->translator->trans('Error, some fields are empty');
  1068.                     $this->addFlash('mensajesuppliererror'$errorMessage);
  1069.                 }
  1070.             }else{
  1071.                 $errorMessage $this->translator->trans('The Supplier already exists');
  1072.                 $this->addFlash('mensajesuppliererror'$errorMessage);
  1073.             }
  1074.         } else {
  1075.             $errorMessage $this->translator->trans('Error, this field is empty ');
  1076.             $this->addFlash('mensajeclienterror'$errorMessage.$campo);
  1077.         }
  1078.         return $this->render('supplier/supplier/add-supplier.html.twig', array(
  1079.             'description' => $description_form,
  1080.             'form' => $form->createView())
  1081.         );
  1082.     }
  1083.     /**
  1084.      * @Route("/supplier/edit/{id}", name="supplier_edit")
  1085.      */
  1086.     public function editAction($id)
  1087.     {
  1088.         $em $this->getDoctrine()->getManager();
  1089.         /*CONTROL GENERAL*/
  1090.         $controlgeneral $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($id);
  1091.         $ids $controlgeneral->getId();
  1092.         $supplier $em->getRepository(Supplier::class)->findOneById($id);
  1093.         $country $em->getRepository(Country::class)->findOneById($supplier->getCountry());
  1094.         $supplier->setCountry($country);
  1095.         $grupo $em->getRepository(SupplierGroup::class)->findOneById($supplier->getGroupId());
  1096.         $supplier->setGroupId($grupo);
  1097.         $suppliersettingstype $em->getRepository(SupplierSettingsType::class)->findOneByName($supplier->getType());
  1098.         $supplier->setType($suppliersettingstype);
  1099.         $form $this->createEditSupplierForm($supplier$id);
  1100.         $tags explode(","$supplier->getTags());
  1101.         $supplier->setTags($tags);
  1102.         return $this->render('supplier/supplier/edit-supplier.html.twig',
  1103.             array(
  1104.                 'id' =>$id,
  1105.                 'ids' =>$ids,
  1106.                 'supplier' => $supplier,
  1107.                 'form' => $form->createView()
  1108.             )
  1109.         );
  1110.     }
  1111.     private function createEditSupplierForm(Supplier $entity$id)
  1112.     {
  1113.         $form $this->createForm(SupplierType::class, $entity,
  1114.             array(
  1115.                 'action' => $this->generateUrl('supplier_update',
  1116.                     array(
  1117.                         'id' => $id
  1118.                     )
  1119.                 ), 'method' => 'PUT'));
  1120.         return $form;
  1121.     }
  1122.     /**
  1123.      * @Route("/supplier/update/{id}", name="supplier_update", methods={"POST", "PUT"})
  1124.      */
  1125.     public function updateAction($idRequest $requestLoggerInterface $logger)
  1126.     {
  1127.         $province $request->request->get('supplier')['province'];
  1128.         $population $request->request->get('supplier')['population'];
  1129.         $region $request->request->get('supplier')['region'];
  1130.         /*PARA MAYUSCULAS*/
  1131.         $name $request->request->get('supplier')['name'];
  1132.         $company $request->request->get('supplier')['company'];
  1133.         $em $this->getDoctrine()->getManager();
  1134.         /*CONTROL GENERAL*/
  1135.         $controlgeneral $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($id);
  1136.         $ids $controlgeneral->getId();
  1137.         $supplier $em->getRepository(Supplier::class)->findOneById($id);
  1138.         $url $request->request->get('supplier')['url'];
  1139.         $form $this->createEditSupplierForm($supplier$id);
  1140.         $form->handleRequest($request);
  1141.         if(!empty($url)){
  1142.             $urlpartsparse_url($url);
  1143.             if(isset($urlparts['scheme'])){
  1144.                 $scheme $urlparts['scheme'];
  1145.                 if ($scheme == 'https' OR $scheme == 'http') {
  1146.                     $supplier->setUrl($url);
  1147.                 }else{
  1148.                     $supplier->setUrl('http://'.$url);
  1149.                 }
  1150.             }else{
  1151.                 $supplier->setUrl('http://'.$url);
  1152.             }
  1153.         }
  1154.         $supplier ->setPopulation($population);
  1155.         $supplier ->setProvince($province);
  1156.         $supplier ->setRegion($region);
  1157.         if(!empty($name)){
  1158.             $supplier ->setName(strtoupper($name));
  1159.         }
  1160.         if(!empty($company)){
  1161.             $supplier ->setCompany(strtoupper($company));
  1162.         }
  1163.         $country $form->get('country')->getData();
  1164.         if(!is_null($country)){
  1165.             $supplier->setCountry($country->getId());
  1166.         }
  1167.         $type $form->get('type')->getData();
  1168.         if(!is_null($type)) {
  1169.             $supplier->setType($type->getBase());
  1170.         }
  1171.         if(isset($request->request->get('supplier')['tags']) && !empty($request->request->get('supplier')['tags'])){
  1172.             $supplier_tags $request->request->get('supplier')['tags'];
  1173.             if(!is_null($supplier_tags)){
  1174.                 $supplier->setTags($supplier_tags);
  1175.             }
  1176.         }else{
  1177.         }
  1178.         $groupId $form->get('groupId')->getData();
  1179.         if(!is_null($groupId)){
  1180.             $supplier->setGroupId($groupId->getId());
  1181.         }
  1182.         if($form->isSubmitted() && $form->isValid())
  1183.         {
  1184.             /* Obtengo usuario logueado */
  1185.             $user_logueado $this->get('security.token_storage')->getToken()->getUser();
  1186.             $user_id $user_logueado->getId();
  1187.             $supplier->getUpdatedId($user_id);
  1188.             $em $this->getDoctrine()->getManager();
  1189. //            $em->persist($supplier);
  1190. //            $em->flush();
  1191.             /* Gestión de eventos en Log */
  1192.             $user_lastname $user_logueado->getLastname();
  1193.             $user_name $user_logueado->getName();
  1194.             $user_email $user_logueado->getEmail();
  1195.             $user_rol $user_logueado->getRoles();
  1196.             $event_url $request->getPathInfo();
  1197.             $event_complete $user_name.' '.$user_lastname.' - '.$user_email.' - '.$user_rol[0].' | '.$event_url;
  1198.             try{
  1199.                 $em->persist($supplier);
  1200.                 $em->flush();
  1201.                 // Control para el sistema de revision
  1202.                 // Puede existir una revision de esta actividad
  1203.                 $em $this->getDoctrine()->getManager();
  1204.                 $revision $em->getRepository(RevisionCarga::class)->findOneBy(
  1205.                     array('idtype'=>$supplier->getId(),
  1206.                         'type'=>'PROVEEDOR - Datos'));
  1207.                 if ($revision == null){
  1208.                     // Se hace una nueva revision - Titulo, Destino y observacion
  1209.                     $revision = new RevisionCarga();
  1210.                     $revision->setIdType($supplier->getId());
  1211.                     $revision->setName($supplier->getName());
  1212.                     $revision->setType('PROVEEDOR - Datos');
  1213.                     $revision->setLink('supplier/edit/'.$supplier->getId());
  1214.                 } else {
  1215.                     // Ya hay una revision previa
  1216.                     $revision->setName($supplier->getName()); // El nombre puede haber cambiado
  1217.                 }
  1218.                 $revision->setStatus(false);
  1219.                 $em->persist($revision);
  1220.                 $em->flush();
  1221.                 // FIN Control para el sistema de revision
  1222.                 $event 'The supplier has been modified.';
  1223.                 $successMessage $this->translator->trans($event);
  1224.                 $this->addFlash('mensajesupplier'$successMessage);
  1225.                 $logger->info($event_complete.' | '.$event);
  1226.             } catch (\Exception $e){
  1227.                 $event 'An error occurred: '.$e->getMessage().' | transport';
  1228.                 /* Para el log */
  1229.                 $logger->error($event_complete.' | '.$event);
  1230.                 /* Para el usuario */
  1231.                 $errorMessage $this->translator->trans($event);
  1232.                 $this->addFlash('mensajesuppliererror'$errorMessage);
  1233.             }
  1234.             /* Fin Gestión de eventos en Log */
  1235.             $successMessage $this->translator->trans('The supplier has been modified.');
  1236.             $this->addFlash('mensajesupplier'$successMessage);
  1237.             return $this->redirectToRoute('supplier_index_simple_letters', [ 'ind' => ]);
  1238.         }
  1239.         return $this->render('/supplier/supplier/edit-supplier.html.twig',
  1240.             array(
  1241.                 'id'=> $id,
  1242.                 'ids' =>$ids,
  1243.                 'supplier' => $supplier,
  1244.                 'form' => $form->createView()
  1245.             )
  1246.         );
  1247.     }
  1248.     /**
  1249.      * @Route("/supplier/add-image", name="supplier_image")
  1250.      */
  1251.     public function addSupplierImage()
  1252.     {
  1253.         $dataa $_POST['image'];
  1254.         list($type$data) = explode(';'$dataa);
  1255.         list(, $data)      = explode(','$data);
  1256.         $data base64_decode($data);
  1257.         $imageName time().'.png';
  1258.         $ruta "assets/images/suppliers/";
  1259.         if (!file_exists($ruta)) {
  1260.             mkdir($ruta,0777,true);
  1261.         }
  1262.         $file fopen($ruta.$imageName"wb");
  1263.         fwrite($file$data);
  1264.         fclose($file);
  1265.         $return = array(
  1266.             'base64' => $dataa,
  1267.             'nombre_archivo' => $ruta.$imageName,
  1268.         );
  1269.         $response = new JsonResponse($return);
  1270.         return $response;
  1271.     }
  1272.     /**
  1273.      * Devuelve el proveedor según el id recibido por url
  1274.      * 
  1275.      * @Route("/supplier/get/{id}", name="get_supplier", methods={"GET"})
  1276.      */
  1277.     public function getClientAction($id) {
  1278.         $client $this->em->getRepository(Supplier::class)->findOneById($id);
  1279.         $return = array(
  1280.             'id' => $client->getId(),
  1281.             'name' => $client->getName(),
  1282.             'typology' => $client->getTypology(),
  1283.         );
  1284.         $response = new JsonResponse($return);
  1285.         return $response;
  1286.     }
  1287. }