src/Controller/ComercialController.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Comercial;
  4. use App\Entity\User;
  5. use App\Form\ComercialType;
  6. use App\Repository\ComercialRepository;
  7. use App\Repository\ContratoRepository;
  8. use App\Repository\UserRepository;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  15. class ComercialController extends AbstractController
  16. {
  17.     /*
  18.      * @Route("/gestionarContratos", name="comercial_contratos_index")
  19.      *
  20.     public function contratosIndex(ContratoRepository $contratoRepository): Response
  21.     {
  22.         if( ($this->getUser()??new User)->getComercial()==null ){
  23.             $this->denyAccessUnlessGranted("ROLE_COMERCIAL");
  24.         }
  25.         $contratos=$contratoRepository->findBy([ 'seller'=>$this->getUser()->getComercial()??'' ]);
  26.         foreach ($contratos as $contrato){
  27.             if( $contrato->getUltimaLectura()==null ){
  28.                 $ultimaLectura=$contratoRepository->findUltimaLectura($contrato);
  29.                 if( !empty($ultimaLectura) ){
  30.                     $contrato->setUltimaLectura($ultimaLectura['fecha']??null);
  31.                 }
  32.             }
  33.         }
  34.         $this->getDoctrine()->getManager()->flush();
  35.         return $this->render('contrato/index.html.twig', [
  36.             'contratos' => $contratos,
  37.         ]);
  38.     }*/
  39.     /**
  40.      * @Route("/comercial/contratos", name="contratos_comercial")
  41.      * @Route("/gestionarContratos", name="comercial_contratos_index")
  42.      */
  43.     public function contratos(Request $requestContratoRepository $contratoRepository,
  44.                               ComercialRepository $comercialRepositoryEntityManagerInterface $entityManager): Response
  45.     {
  46.         if( ($this->getUser()??new User)->getComercial()==null ){
  47.             $this->denyAccessUnlessGranted("ROLE_COMERCIAL");
  48.         }
  49.         if( !$this->isGranted("ROLE_ADMIN") ){
  50.             $comercial=$this->getUser()->getComercial();
  51.             $contratos=$contratoRepository->findBy([ 'seller'=>$comercial??'' ]);
  52.             $contratos=array_uniquearray_merge($contratos,$contratoRepository->findBySubseller($comercial??'')) );
  53.             $comercial=$comercial->__toString();
  54.         }
  55.         elseif( $request->isMethod('get')){
  56.             $comercial=$request->get('comercial');
  57.             if($comercial===''){
  58.                 $comercial=null;
  59.             }
  60.             if( is_numeric($comercial) ){
  61.                 $comercial=$comercialRepository->find($comercial);
  62.                 $contratos=$contratoRepository->findBy([ 'oculto'=>false'seller'=>$comercial ]);
  63.                 $contratos=array_uniquearray_merge($contratos,$contratoRepository->findBySubseller($comercial,false)) );
  64.             }else{
  65.                 $contratos=$contratoRepository->findBy([ 'oculto'=>false'comercial'=>$comercial ]);
  66.             }
  67.         }
  68.         else{
  69.             $contratos=$contratoRepository->findBy([ 'oculto'=>false ]);
  70.         }
  71.         foreach ($contratos as $contrato){
  72.             if( $contrato->getUltimaLectura()==null ){
  73.                 $ultimaLectura=$contratoRepository->findUltimaLectura($contrato);
  74.                 if( !empty($ultimaLectura) ){
  75.                     $contrato->setUltimaLectura($ultimaLectura['fecha']??null);
  76.                 }
  77.             }
  78.         }
  79.         $entityManager->flush();
  80.         return $this->render('comercial/contratos.html.twig', [
  81.             'comercial'=>$comercial??'Sin comercial',
  82.             'contratos' => $contratos,
  83.         ]);
  84.     }
  85.     /**
  86.      * @Route("/puntos", name="comercial_puntos")
  87.      */
  88.     public function puntos(ComercialRepository $comercialRepositoryContratoRepository $contratoRepository): Response
  89.     {
  90.         $this->denyAccessUnlessGranted("ROLE_ADMIN");
  91.         $comerciales=$comercialRepository->findAll();
  92.         $contratos=$contratoRepository->findByMonth(date_create());
  93.         return $this->render('comercial/index.html.twig', [
  94.             'comerciales' => $comerciales,
  95.             'contratos' => $contratos,
  96.         ]);
  97.     }
  98.     /**
  99.      * @Route("/admin/comerciales", name="comercial_lista_admin")
  100.      */
  101.     public function listaAdmin(ComercialRepository $comercialRepository): Response
  102.     {
  103.         $this->denyAccessUnlessGranted("ROLE_ADMIN");
  104.         return $this->render('comercial/listaAdmin.html.twig', [
  105.             'comerciales' => $comercialRepository->findAll()
  106.         ]);
  107.     }
  108.     /**
  109.      * @Route("/comercial/lista", name="comercial_lista")
  110.      */
  111.     public function lista(ContratoRepository $contratoRepository): Response
  112.     {
  113.         $this->denyAccessUnlessGranted("ROLE_ADMIN");
  114.         $comercialesOld $contratoRepository->createQueryBuilder('c')
  115.             ->select('DISTINCT c.comercial')
  116.             ->where('c.oculto!=1')
  117.             ->getQuery()
  118.             ->getResult();
  119.         foreach ($comercialesOld as $comercial){
  120.             $comerciales[]=$comercial['comercial'];
  121.         }
  122.         foreach ($comerciales??[] as $comercial){
  123.             $contratos[$comercial]=$contratoRepository->findBy(['comercial'=>$comercial]);
  124.         }
  125.         return $this->render('comercial/lista.html.twig', [
  126.             'comerciales' => $comerciales??[],
  127.             'contratos' => $contratos??[],
  128.         ]);
  129.     }
  130.     /**
  131.      * @Route("/comercial/registrar", name="comercial_new", methods={"GET","POST"})
  132.      */
  133.     public function new(Request $requestUserRepository $userRepositoryUserPasswordHasherInterface $passwordEncoder,
  134.                         EntityManagerInterface $entityManager): Response
  135.     {
  136.         $this->denyAccessUnlessGranted('ROLE_ALTACOMERCIALES');
  137.         $comercial = new Comercial();
  138.         $form $this->createForm(ComercialType::class, $comercial);
  139.         $form->handleRequest($request);
  140.         if ($form->isSubmitted() && $form->isValid()) {
  141.             $comercial
  142.                 ->setCodigoVendedorstrtoupper($comercial->getCodigoVendedor()) )
  143.                 ->setNombrestrtoupper($comercial->getNombre()) )
  144.                 ->setApellido1strtoupper($comercial->getApellido1()) )
  145.                 ->setApellido2strtoupper($comercial->getApellido2()) )
  146.                 ->setNifstrtoupper($comercial->getNif()) )
  147.                 ->setEmailstrtolower($comercial->getEmail()) );
  148.             $user=$userRepository->findOneBy(['username'=>$comercial->getNif()]);
  149.             if($user==null){
  150.                 $user = new User();
  151.                 $user->setUsernamestrtoupper($comercial->getNif()) );
  152.                 $user->setPassword(
  153.                     $passwordEncoder->hashPassword(
  154.                         $user,
  155.                         strtoupper($comercial->getNif())
  156.                     )
  157.                 );
  158.                 $user->setRoles(["ROLE_USER","ROLE_COMERCIAL"]);
  159.                 $entityManager->persist($user);
  160.             }
  161.             $comercial->setUser($user);
  162.             $entityManager->persist($comercial);
  163.             $entityManager->flush();
  164.             return $this->redirectToRoute('comercial_lista_admin');
  165.         }
  166.         return $this->render('comercial/new.html.twig', [
  167.             'comercial' => $comercial,
  168.             'form' => $form->createView(),
  169.         ]);
  170.     }
  171.     /**
  172.      * @Route("/comercial/{id}/editar", name="comercial_edit", methods={"GET","POST"})
  173.      */
  174.     public function edit(Comercial $comercialRequest $requestUserRepository $userRepository,
  175.                          UserPasswordHasherInterface $passwordEncoderEntityManagerInterface $entityManager): Response
  176.     {
  177.         $this->denyAccessUnlessGranted('ROLE_SUPERADMIN');
  178.         $form $this->createForm(ComercialType::class, $comercial);
  179.         $form->handleRequest($request);
  180.         if ($form->isSubmitted() && $form->isValid()) {
  181.             $comercial
  182.                 ->setCodigoVendedorstrtoupper($comercial->getCodigoVendedor()) )
  183.                 ->setNombrestrtoupper($comercial->getNombre()) )
  184.                 ->setApellido1strtoupper($comercial->getApellido1()) )
  185.                 ->setApellido2strtoupper($comercial->getApellido2()) )
  186.                 ->setNifstrtoupper($comercial->getNif()) )
  187.                 ->setEmailstrtolower($comercial->getEmail()) );
  188.             $user=$userRepository->findOneBy(['username'=>$comercial->getNif()]);
  189.             if($user==null){
  190.                 $user = new User();
  191.                 $user->setUsernamestrtoupper($comercial->getNif()) );
  192.                 $user->setPassword(
  193.                     $passwordEncoder->hashPassword(
  194.                         $user,
  195.                         strtoupper($comercial->getNif())
  196.                     )
  197.                 );
  198.                 $user->setRoles(["ROLE_USER","ROLE_COMERCIAL"]);
  199.                 $entityManager->persist($user);
  200.             }
  201.             $comercial->setUser($user);
  202.             $entityManager->persist($comercial);
  203.             $entityManager->flush();
  204.             return $this->redirectToRoute('comercial_lista_admin');
  205.         }
  206.         return $this->render('comercial/new.html.twig', [
  207.             'comercial' => $comercial,
  208.             'form' => $form->createView(),
  209.         ]);
  210.     }
  211. }