src/Controller/Admin/EmpleadoController.php line 1179

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use DateTime;
  4. use App\Entity\Boleta;
  5. use App\Entity\Empresa;
  6. use App\Entity\Concepto;
  7. use App\Entity\Empleado;
  8. use App\Entity\Familiar;
  9. use App\Entity\Sucursal;
  10. use App\Form\EmpleadoType;
  11. use App\Entity\Observacion;
  12. use App\Entity\DatosSindicato;
  13. use App\Entity\EmpleadoBoleta;
  14. use App\Form\EmpleadoBajaType;
  15. use App\Controller\ServiceController;
  16. use App\Repository\EmpleadoRepository;
  17. use App\Entity\EmpleadoEmpresaSucursal;
  18. use Doctrine\ORM\EntityManagerInterface;
  19. use Symfony\Component\Filesystem\Filesystem;
  20. use App\Controller\QrCodeGeneratorController;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use Symfony\Component\HttpFoundation\File\File;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. use Symfony\Component\HttpFoundation\JsonResponse;
  26. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  27. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  28. use App\Controller\Admin\Empleado\EmpleadoEmpresaSucursalController;
  29. #[Route('/panel/admin/empleado')]
  30. class EmpleadoController extends AbstractController
  31. {
  32.     public function __construct(){
  33.         date_default_timezone_set("America/Buenos_Aires");
  34.     }
  35.     /**
  36.      * @return string
  37.      */
  38.     public function generateUniqueFileName()
  39.     {
  40.         return md5(uniqid());
  41.     }
  42.     public function verificarEstadoEmpleado($empleado,$em)
  43.     {
  44.         $arrayEstado = Array();
  45.         $estado 'Afiliado';
  46.         $mensaje_qr 'El trabajador esta afiliado. Goza de los beneficios.';
  47.         $mensaje 'El trabajador esta afiliado con empresa.';
  48.         $color 'primary';
  49.         //Baja
  50.         if($empleado->getIsActive() != true){
  51.             $estado 'Baja';
  52.             $mensaje_qr 'El trabajador fue dado de baja.';
  53.             $mensaje 'El trabajador fue dado de baja. No puede operar en el sistema.';
  54.             $color 'danger';
  55.         }else{
  56.             //Afiliado
  57.             if($empleado->getAfiliado() != true){
  58.                 $estado 'Sin Afiliar';
  59.                 $mensaje_qr 'El trabajador esta Sin Afiliar por lo cual no goza de beneficios.';
  60.                 $mensaje 'El Trabajador esta Sin Afiliar por lo cual no goza de algunos beneficios. Es posible que lo haya cargado un contador y nunca fue a afiliarse. ';
  61.                 $color 'secondary';
  62.             }else{
  63.                 //empresa o sucursal
  64.                 $sucursalesEmpleado $em->getRepository(EmpleadoEmpresaSucursal::class)->findBy(array(
  65.                     'empleado' => $empleado,
  66.                     'isActive' => true
  67.                 ));
  68.                 //si no encontro la empresa
  69.                 if(!$sucursalesEmpleado){
  70.                     $estado 'Sin Empresa';
  71.                     $mensaje_qr 'El trabajador esta afiliado, falta que le asignen la empresa donde trabaja.';
  72.                     $mensaje 'El trabajador esta afiliado pero no tiene empresa asignada. Es posible que no le estén aportando. Debería de Estar des-afiliado e Inactivo';
  73.                     $color 'primary';
  74.                 }else{
  75.                     //encontro al menos 1
  76.                     foreach($sucursalesEmpleado as $empleadoSucursal){       
  77.                         //si no tiene sucursal
  78.                         if($empleadoSucursal->getSucursal() == null){                 
  79.                             $estado 'Afiliado (Sin Sucursal) ';
  80.                             $mensaje_qr 'El trabajador esta afiliado, falta que le asignen la sucursal donde trabaja.';
  81.                             $mensaje 'El trabajador esta afiliado pero esta sin sucursal asignada. Es posible que no le estén aportando correctamente.';
  82.                             $color 'primary';
  83.                         }
  84.                     }
  85.                     
  86.                 } 
  87.             }
  88.         }
  89. //          <!-- pregunto cuando fue la ultima vez que cobro -->
  90. //          {% if ultimoCobro != false %}
  91. //              <!-- veo si hace mas de dos meses que no aporta. 61 dias son dos meses pero cuenta 3  -->
  92. //              {% set modify = '61' %}
  93. //              {% set date = "now"|date("m/d/Y") %}
  94. //              {% set date2 = date|date_modify("-" ~ modify ~ " day")|date("m/01/Y") %}
  95. //              {% if ultimoCobro|date('U') < date2|date('U') %}
  96. //                 <div class="alert alert-danger" role="alert">IMPORTANTE! El trabajador NO tiene el ultimo periodo aportando. La ultima boleta que figura paga es del periodo {{ ultimoCobro ? ultimoCobro|date('m-Y') : '' }}. Controle los periodos entrando en COBROS, puede ser que el empleador no este aportando al sindicato. </div>
  97. //              {% endif %}
  98. //          {% else %}
  99. //              <div class="alert alert-danger" role="alert">El trabajador no tienen ningún pago. O al menos la empresa no le esta aportando al sindicato. </div>
  100. //          {% endif %}
  101.         $arrayEstado[]=[
  102.             'estado' => $estado,
  103.             'mensaje_qr' => $mensaje_qr,
  104.             'mensaje' => $mensaje,
  105.             'color' => $color
  106.         ];
  107.         return $arrayEstado;
  108.     }
  109.     function edad($fecha_nacimiento)
  110.     {
  111.         if($fecha_nacimiento != null){
  112.             $ahora = new DateTime("now");
  113.             $diferencia $ahora->diff($fecha_nacimiento);
  114.             $anios $diferencia->format("%y");
  115.         }else{
  116.             $anios null;
  117.         }
  118.         return $anios;
  119.     }
  120.     function getArraySucursalesEmpleado($empleado,$em,$EmpleadoEmpresaSucursalController)
  121.     {
  122.         $arraySucursales = Array();
  123.         $sucursalesEmpleado $em->getRepository(EmpleadoEmpresaSucursal::class)->findBy(array(
  124.             'empleado' => $empleado,
  125.             'isActive' => true
  126.         ));
  127.         foreach($sucursalesEmpleado as $sucursalEmpleado){
  128.             array_push($arraySucursales,$EmpleadoEmpresaSucursalController->getEmpleadoEmpresa($sucursalEmpleado));
  129.         }
  130.         return $arraySucursales;
  131.     }
  132.     function getConceptosDesvinculados($empleado)
  133.     {
  134.         $arrayConceptos = Array();
  135.         foreach($empleado->getConcepto() as $concepto){
  136.             $arrayConceptos[]=[
  137.                 'id' => $concepto->getId(),
  138.                 'nombre' => $concepto->getNombre(),
  139.             ];
  140.         }
  141.         return $arrayConceptos;
  142.     }
  143.     public function getArrayEmpleado($empleado,$em,$EmpleadoEmpresaSucursalController)
  144.     {
  145.         if($empleado->getUserCargo() != null){
  146.             $userCargo $empleado->getUserCargo()->getNombre().' '.$empleado->getUserCargo()->getApellido();
  147.         }else{
  148.             $userCargo null;
  149.         }
  150.         if($empleado->getLocalidad() != null){
  151.             $localidad $empleado->getLocalidad()->getNombre();
  152.         }else{
  153.             $localidad null;
  154.         }
  155.         $arrayEmpleado = Array();
  156.         $arrayEmpleado[]=[
  157.             'id' => $empleado->getId(),
  158.             'nombre' => $empleado->getNombre(),
  159.             'apellido' =>$empleado->getApellido(),
  160.             'dni' =>$empleado->getDni(),
  161.             'cuil' =>$empleado->getCuil(),
  162.             'sexo' =>$empleado->getSexo(),
  163.             'foto' => $empleado->getFoto(),
  164.             'email' => $empleado->getEmail(),
  165.             'telefono' => $empleado->getTelefono(),
  166.             'domicilio' => $empleado->getDomicilio(),
  167.             'localidad' => $localidad,
  168.             'provincia' => $empleado->getProvincia(),
  169.             'nacionalidad' => $empleado->getNacionalidad(),
  170.             'estadoCivil' => $empleado->getEstadoCivil(),
  171.             'afiliado' => $empleado->getAfiliado(),
  172.             'horasTrabajadasDeclaradaPorEmpleado' => $empleado->getHorasTrabajadasDeclaradaPorEmpleado(),
  173.             'harina' => $empleado->getHarina(),
  174.             'caja' => $empleado->getCaja(),
  175.             'otra_obra_social' => $empleado->getOtraObraSocial(),
  176.             'fecha_alta' => $empleado->getFechaAltaAfip(),
  177.             'fecha_ingreso_sindicato' => $empleado->getFechaIngresoSindicato(),
  178.             'fecha_nacimiento' => $empleado->getFechaNacimiento(),
  179.             'edad' => $this->edad($empleado->getFechaNacimiento()),
  180.             'fecha_limite_obra_social' => $empleado->getFechaLimiteObraSocial(),
  181.             'fecha_limite_mutual' => $empleado->getFechaLimiteMutual(),
  182.             'fecha_register' => $empleado->getFechaRegister(),
  183.             'fecha_ingreso_trabajar' => $empleado->getFechaIngresoTrabajar(),
  184.             'fecha_alta_temprana' => $empleado->getFechaAltaTemprana(),
  185.             'isActive' => $empleado->getIsActive(),
  186.             'estado' => $this->verificarEstadoEmpleado($empleado,$em),
  187.             'userCargo' => $userCargo,
  188.             'arraySucursales' => $this->getArraySucursalesEmpleado($empleado,$em,$EmpleadoEmpresaSucursalController),
  189.             'arrayConceptos' => $this->getConceptosDesvinculados($empleado),
  190.         ];
  191.          return $arrayEmpleado;
  192.     }
  193.     #[Route('/'name'app_empleado_index'methods: ['GET'])]
  194.     public function index(EmpleadoRepository $empleadoRepositoryEntityManagerInterface $em): Response
  195.     {
  196.         $arrayEmpleados = Array();
  197.         foreach($empleadoRepository->findAll() as $empleado){
  198.             $arrayEmpleados[]=[
  199.                 'id' => $empleado->getId(),
  200.                 'nombre' => $empleado->getApellido().' '.$empleado->getNombre(),
  201.                 'cuil' =>$empleado->getCuil(),
  202.                 'estado' => $this->verificarEstadoEmpleado($empleado,$em),
  203.             ];
  204.         }
  205.         return $this->render('consola/panel_admin/empleado/index.html.twig', [
  206.             'arrayEmpleados' => $arrayEmpleados,
  207.         ]);
  208.     }
  209.     //INFORMES
  210.     #[Route('/informe/menu'name'empleado_informe_menu')]
  211.     public function informe_menu(): Response
  212.     {
  213.         return $this->render('consola/panel_admin/empleado/informes/menu.html.twig');
  214.     }
  215.     #[Route('/informe/general'name'empleado_informe_general'methods: ['GET'])]
  216.     public function informeGeneral(EmpleadoRepository $empleadoRepository,EmpleadoEmpresaSucursalController $EmpleadoEmpresaSucursalController,EntityManagerInterface $em): Response
  217.     {
  218.         $arrayEmpleados = Array();
  219.         foreach($empleadoRepository->findAll() as $empleado){
  220.             array_push($arrayEmpleados,$this->getArrayEmpleado($empleado,$em,$EmpleadoEmpresaSucursalController));
  221.         }
  222.         return $this->render('consola/panel_admin/empleado/informes/empleados.html.twig', [
  223.             'arrayEmpleados' => $arrayEmpleados,
  224.         ]);
  225.     }
  226.     #[Route('/informe/edades'name'empleado_informe_edades'methods: ['GET','POST'])]
  227.     public function informeEdades(Request $request,EntityManagerInterface $em): Response
  228.     {
  229.         $arrayFamiliares = Array();
  230.         //pregunto si hay envio
  231.         if (isset($_GET['Buscar']))
  232.         {
  233.             $desde $request->get("desde");
  234.             $hasta $request->get("hasta"); 
  235.         }else{
  236.             $desde 17;
  237.             $hasta 15;
  238.         }
  239.         if($desde >= $hasta){
  240.                 
  241.             //fecha mas vieja 17
  242.             $anio date("Y") - $desde;
  243.             $fechaDesde $anio.'-01-01';
  244.             $fechaDesde =\DateTime::createFromFormat('Y-m-d'$fechaDesde);
  245.             //15
  246.             $anioHasta date("Y") - $hasta;
  247.             $fechaHasta $anioHasta.'-12-31';
  248.             $fechaHasta =\DateTime::createFromFormat('Y-m-d'$fechaHasta);
  249.             $familiares $em->getRepository(Familiar::class)->findByEdades($fechaDesde,$fechaHasta);
  250.             foreach($familiares as $familiar){
  251.                 //tiene que estar afiliado y activo el titular
  252.                 if($familiar->getEmpleado()->getIsActive() == true AND $familiar->getEmpleado()->getAfiliado() == true){
  253.                     $arrayFamiliares[]=[
  254.                         'id' => $familiar->getId(),
  255.                         'nombre' => $familiar->getApellido().' '.$familiar->getNombre(),
  256.                         'fecha_nacimiento' => $familiar->getFechaNacimiento(),
  257.                         'edad' => $this->edad($familiar->getFechaNacimiento()),
  258.                         'dni' => $familiar->getDni(),
  259.                     ];
  260.                 }
  261.             }
  262.         }else{
  263.             //error
  264.             
  265.             $this->addFlash('notice', array(
  266.                 'type' => 'danger'
  267.                 'title' => 'Error!'
  268.                 'message' => 'El año desde debe ser menor que el año hasta.'
  269.             ));
  270.         }        
  271.         return $this->render('consola/panel_admin/empleado/informes/edades.html.twig', [
  272.             'arrayFamiliares' => $arrayFamiliares,
  273.             'desde' => $desde,
  274.             'hasta' => $hasta,
  275.         ]);
  276.     }
  277.     #[Route('/informe/afiliados-y-familiares'name'empleado_informe_afiliados_familiares'methods: ['GET'])]
  278.     public function informeAfiliadosFamiliares(EntityManagerInterface $em): Response
  279.     {
  280.         $arrayEmpleadosFamiliares = Array();
  281.         $empleados $em->getRepository(Empleado::class)->findBy(array(
  282.             'isActive' => true,
  283.             'afiliado' => true
  284.         ));
  285.         foreach($empleados as $empleado){
  286.             $empresaSucursal $em->getRepository(EmpleadoEmpresaSucursal::class)->findBy(array(
  287.                 'empleado' => $empleado,
  288.                 'isActive' => true
  289.             ));
  290.             //pregunto si tiene empresa asignada
  291.             if($empresaSucursal){
  292.                 //guardo
  293.                 $arrayEmpleadosFamiliares[]=[
  294.                     'nombre' => $empleado->getApellido().' '.$empleado->getNombre(),
  295.                     'dni' => $empleado->getDni(),
  296.                     'rol' => 'TITULAR',
  297.                     'estado' => 'ACTIVO',
  298.                 ];
  299.                 //saco los familiares
  300.                 $familiares $em->getRepository(Familiar::class)->findBy(array(
  301.                     'isActive' => true,
  302.                     'empleado' => $empleado
  303.                 ));
  304.                 foreach($familiares as $familiar){
  305.                     $arrayEmpleadosFamiliares[]=[
  306.                         'nombre' => $familiar->getApellido().' '.$familiar->getNombre(),
  307.                         'dni' => $familiar->getDni(),
  308.                         'rol' => 'FAMILIAR',
  309.                         'estado' => 'ACTIVO',
  310.                     ];
  311.                 }
  312.             }
  313.         }
  314.         return $this->render('consola/panel_admin/empleado/informes/empleadosFamiliares.html.twig', [
  315.             'arrayEmpleadosFamiliares' => $arrayEmpleadosFamiliares,
  316.         ]);
  317.     }
  318.     //FIN INFORMES
  319.     #[Route('/{id}/menu'name'empleado_menu'methods: ['GET'])]
  320.     public function menu(Empleado $empleado,EntityManagerInterface $em): Response
  321.     {
  322.         $arrayEmpleado = Array();
  323.         $arrayEmpleado[]=[
  324.             'id' => $empleado->getId(),
  325.             'nombre' => $empleado->getNombre().' '.$empleado->getApellido(),
  326.             'isActive' =>$empleado->getIsActive(),
  327.             'afiliado' =>$empleado->getAfiliado(),
  328.             'estado' => $this->verificarEstadoEmpleado($empleado,$em),
  329.         ];
  330.         return $this->render('consola/panel_admin/empleado/menu.html.twig', [
  331.             'empleado' => $arrayEmpleado,
  332.         ]);
  333.     }
  334.   
  335.     #[Route('/{id}/carnet'name'empleado_carnet'methods: ['GET'])]
  336.     public function carnet(Empleado $empleado,QrCodeGeneratorController $QrCodeGeneratorController,EntityManagerInterface $em): Response
  337.     {
  338.         // if($empleado->getAfiliado() == true){
  339.         //     if($empleado->getEmpresa() != null and $empleado->getSucursal() != null){
  340.                 $datoSindicato $em->getRepository(DatosSindicato::class)->find(1);
  341.                 $infoMostrar = Array();
  342.                 $infoMostrar[]=[
  343.                     'nombreCarne' => $datoSindicato->getNombreCarnet(),
  344.                     'domicilio' => $datoSindicato->getDomicilio(),
  345.                     'telefono' => $datoSindicato->getTelefono(),
  346.                     'cuit' => $datoSindicato->getCuit(),
  347.                     'nombreSecretarioGeneral' => $datoSindicato->getNombreSecretarioGeneral(),
  348.                     'nombre' => $empleado->getNombre(),
  349.                     'apellido' => $empleado->getApellido(),
  350.                     'foto' =>$empleado->getFoto(),
  351.                     'dni' =>$empleado->getDni(),
  352.                     'titular' => null,
  353.                 ];
  354.                return $this->render('consola/panel_admin/empleado/imprimir/carnet.html.twig', [
  355.                 'infoMostrar' => $infoMostrar,
  356.                 'codigo_qr' => $QrCodeGeneratorController->getQrEmpleado($empleado->getDni()),
  357.             ]);
  358.         //     }else{
  359.         //         //mensaje Flash
  360.         //         $this->addFlash('notice', array(
  361.         //             'type' => 'danger', 
  362.         //             'title' => 'ERROR!', 
  363.         //             'message' => 'No se puede imprimir el carnet porque debe tener una empresa asignada y la sucursal en la que trabaja.'
  364.         //         ));
  365.         //     }
  366.         // }else{
  367.         //     //mensaje Flash
  368.         //     $this->addFlash('notice', array(
  369.         //         'type' => 'danger', 
  370.         //         'title' => 'ERROR!', 
  371.         //         'message' => 'No se puede imprimir el carnet porque no figura como afiliado. Debe afiliarse primero.'
  372.         //     ));
  373.         // }
  374.         // return $this->redirectToRoute('empleado_menu', [
  375.         //     'id' => $empleado->getId(),
  376.         // ]);
  377.     }
  378.     #[Route('/imprimir/ficha/{id}'name'empleado_imprimir_ficha'methods: ['GET'])]
  379.     public function imprimirFicha(Empleado $empleado,EmpleadoEmpresaSucursalController $EmpleadoEmpresaSucursalController,EntityManagerInterface $em): Response
  380.     {
  381.         if($empleado->getAfiliado() == true){
  382.             //FAMILIARES
  383.             $familiares $em->getRepository(Familiar::class)->findBy(array(
  384.                 'empleado' => $empleado
  385.             ));
  386.             $arrayFamiliares = Array();
  387.             foreach($familiares as $familiar){
  388.                 $arrayFamiliares[]=[
  389.                     'nombre' => $familiar->getNombre().' '.$familiar->getApellido(),
  390.                     'parentesco' => $familiar->getParentesco(),
  391.                 ];
  392.             }
  393.             //fin familiares
  394.             $datoSindicato $em->getRepository(DatosSindicato::class)->find(1);
  395.             $infoMostrar = Array();
  396.             $infoMostrar[]=[
  397.                 'nombre' => $datoSindicato->getNombre(),
  398.                 'personeriaGremial' => $datoSindicato->getPersoneriaGremial(),
  399.                 'domicilio' => $datoSindicato->getDomicilio(),
  400.                 'localidad' => $datoSindicato->getLocalidad(),
  401.                 'telefono' => $datoSindicato->getTelefono(),
  402.                 'cuit' => $datoSindicato->getCuit(),
  403.                 'nombreSecretarioGeneral' => $datoSindicato->getNombreSecretarioGeneral(),
  404.                 'empleado' => $this->getArrayEmpleado($empleado,$em,$EmpleadoEmpresaSucursalController),
  405.                 'familiares' =>$arrayFamiliares,
  406.             ];
  407.             return $this->render('consola/panel_admin/empleado/imprimir/ficha.html.twig', [
  408.                 'infoMostrar' => $infoMostrar
  409.             ]);
  410.         }else{
  411.             //mensaje Flash
  412.             $this->addFlash('notice', array(
  413.                 'type' => 'danger'
  414.                 'title' => 'ERROR!'
  415.                 'message' => 'No se puede imprimir el carnet porque no figura como afiliado. Debe afiliarse primero.'
  416.             ));
  417.         }
  418.         return $this->redirectToRoute('empleado_menu', [
  419.             'id' => $empleado->getId(),
  420.         ]);
  421.     }
  422.  
  423.     #[Route('/new'name'app_empleado_new'methods: ['GET''POST'])]
  424.     public function new(Request $requestEmpleadoRepository $empleadoRepository,ServiceController $ServiceController): Response
  425.     {
  426.         $empleado = new Empleado();
  427.         $form $this->createForm(EmpleadoType::class, $empleado);
  428.         $form->handleRequest($request);
  429.         if ($form->isSubmitted() && $form->isValid()) {
  430.             $empleado->setNombre($ServiceController->PrimeraLetraMayuscula($empleado->getNombre()));
  431.             $empleado->setApellido($ServiceController->PrimeraLetraMayuscula($empleado->getApellido()));
  432.             //foto
  433.             $file $form->get('foto')->getData();
  434.             if ($file) {
  435.                 $fileName $this->generateUniqueFileName().'.'.$file->guessExtension();
  436.                 try {
  437.                     $file->move($this->getParameter('directory_empleado_img'),$fileName);
  438.                 } catch (FileException $e) {
  439.                 }
  440.                 $empleado->setFoto($fileName);
  441.             }
  442.             $empleado->setAfiliado(true);
  443.             $empleado->setFechaIngresoSindicato(new \DateTime('now'));
  444.             $empleado->setIsActive(true);
  445.             $empleado->setUserCargo($this->getUser());
  446.             $empleado->setFechaRegister(new \DateTime('now'));
  447.             $empleadoRepository->add($empleado);
  448.             //mensaje Flash
  449.             $this->addFlash('notice', array(
  450.                 'type' => 'success'
  451.                 'title' => 'FELICITACIONES!'
  452.                 'message' => 'He creado un nuevo Empleado. Debe seleccionar la empresa y sucursal en la que trabaja.'
  453.             ));
  454.             return $this->redirectToRoute('empleado_seleccionar_empresa', [
  455.                 'id' => $empleado->getId(),
  456.             ], Response::HTTP_SEE_OTHER);
  457.         }
  458.         return $this->renderForm('consola/panel_admin/empleado/new.html.twig', [
  459.             'empleado' => $empleado,
  460.             'form' => $form,
  461.         ]);
  462.     }
  463.     #[Route('/{id}'name'app_empleado_show'methods: ['GET'])]
  464.     public function show(Empleado $empleado,EmpleadoEmpresaSucursalController $EmpleadoEmpresaSucursalController,EntityManagerInterface $em): Response
  465.     {
  466.         return $this->render('consola/panel_admin/empleado/show.html.twig', [
  467.             'empleado' => $this->getArrayEmpleado($empleado,$em,$EmpleadoEmpresaSucursalController),
  468.         ]);
  469.     }
  470.     #[Route('/{id}/edit'name'app_empleado_edit'methods: ['GET''POST'])]
  471.     public function edit(Request $requestEmpleado $empleadoEmpleadoRepository $empleadoRepository,ServiceController $ServiceController): Response
  472.     {
  473.         //foto
  474.         $img $empleado->getFoto();
  475.         if($img != NULL){
  476.             $empleado->setFoto(
  477.                 new File($this->getParameter('directory_empleado_img').'/'.$empleado->getFoto())
  478.             );
  479.         }
  480.         //fin foto
  481.         $form $this->createForm(EmpleadoType::class, $empleado);
  482.         $form->handleRequest($request);
  483.         if ($form->isSubmitted() && $form->isValid()) {
  484.             $empleado->setNombre($ServiceController->PrimeraLetraMayuscula($empleado->getNombre()));
  485.             $empleado->setApellido($ServiceController->PrimeraLetraMayuscula($empleado->getApellido()));
  486.             //foto
  487.             $file $form->get('foto')->getData();
  488.             if ($file) {
  489.                 //borro
  490.                 if($img != NULL){
  491.                     $filesystem = new Filesystem();
  492.                     $ruta=$this->getParameter('directory_empleado_img').'/'.$img;
  493.                     $filesystem->remove($ruta);
  494.                 }
  495.                 $fileName $this->generateUniqueFileName().'.'.$file->guessExtension();
  496.                 try {
  497.                     $file->move($this->getParameter('directory_empleado_img'),$fileName);
  498.                 } catch (FileException $e) {
  499.                 }
  500.                 $empleado->setFoto($fileName);
  501.             }else{
  502.                 //es igual a null, dejo lo que esta. 
  503.                 if($img != NULL){
  504.                     $empleado->setFoto($img);
  505.                 }
  506.             }
  507.             $empleadoRepository->add($empleado);
  508.             //mensaje Flash
  509.             $this->addFlash('notice', array(
  510.                 'type' => 'success'
  511.                 'title' => 'MODIFICADO!'
  512.                 'message' => 'Se actualizaron los datos del empleado.'
  513.             ));
  514.             return $this->redirectToRoute('app_empleado_show', [
  515.                 'id' => $empleado->getId()
  516.             ], Response::HTTP_SEE_OTHER);
  517.         }
  518.         return $this->renderForm('consola/panel_admin/empleado/edit.html.twig', [
  519.             'empleado' => $empleado,
  520.             'form' => $form,
  521.         ]);
  522.     }
  523.     #[Route('/{id}/seleccionar-empresa-sucursal'name'empleado_seleccionar_empresa',methods: ['GET''POST'])]
  524.     public function seleccionarEmpresa(Request $requestEmpleado $empleadoEntityManagerInterface $entityManager): Response
  525.     {
  526.         //solo las que estan aprobadas
  527.         $empresas $entityManager->getRepository(Empresa::class)->findBy(array(
  528.             'enabled' => true
  529.         ));
  530.         $arrayEmpresas = Array();
  531.         foreach($empresas as $empresa){
  532.             $arrayEmpresas[]=[
  533.                 'id' => $empresa->getId(),
  534.                 'razonSocial' => $empresa->getRazonSocial(),
  535.                 'cuit' => $empresa->getCuit(),
  536.                 'localidad' => $empresa->getLocalidad()->getNombre(),
  537.                 'nombreFantasia' => $empresa->getNombreFantasia(),
  538.             ];
  539.         }
  540.         return $this->render('consola/panel_admin/empleado/empresa_sucursal/empresa/index.html.twig', [
  541.             'empresas' => $arrayEmpresas,
  542.             'empleado_id' => $empleado->getId(),
  543.             'empleado_nombre' => $empleado->getNombre().' '.$empleado->getApellido(),
  544.         ]);
  545.     }
  546.     #[Route('/{id}/baja'name'empleado_baja',methods: ['GET''POST'])]
  547.     public function baja(Request $requestEmpleado $empleadoEmpleadoRepository $empleadoRepositoryEntityManagerInterface $entityManager): Response
  548.     {
  549.         $empleado->setMotivo(null);
  550.         $form $this->createForm(EmpleadoBajaType::class, $empleado);
  551.         $form->handleRequest($request);
  552.         if ($form->isSubmitted() && $form->isValid()) {
  553.             $empleado->setIsActive(false);
  554.             $empleado->setAfiliado(false);
  555.             $empleadoRepository->add($empleado);
  556.             //lo desvinculo de las empresas
  557.             $empleadoEmpresas $entityManager->getRepository(EmpleadoEmpresaSucursal::class)->findBy(array(
  558.                 'empleado' => $empleado
  559.             ));
  560.             foreach($empleadoEmpresas as $empleadoEmpresa){
  561.                 $entityManager->remove($empleadoEmpresa);
  562.                 $entityManager->flush();
  563.             }
  564.             $alta null;
  565.             if($empleado->getFechaIngresoSindicato() != null){
  566.                 $alta $empleado->getFechaIngresoSindicato()->format("d-m-Y");
  567.             }
  568.             
  569.             $mensaje 'Se le dio la baja al empleado (desde: '.$alta.' - hasta: '.$empleado->getFechaBaja()->format("d-m-Y").'). Motivo: '.$empleado->getMotivo();
  570.             //creo una observacion 
  571.             $observacion = new Observacion();
  572.             $observacion->setFecha(new \DateTime("now"));
  573.             $observacion->setTexto($mensaje);    
  574.             $observacion->setEmpleado($empleado);
  575.             $observacion->setPrivada(false);
  576.             $observacion->setUserCargo($this->getUser());  
  577.             $entityManager->persist($observacion);
  578.             $entityManager->flush();
  579.             //mensaje Flash
  580.             $this->addFlash('notice', array(
  581.                 'type' => 'success'
  582.                 'title' => 'BAJA!'
  583.                 'message' => 'Se le dio la baja al empleado.'
  584.             ));
  585.             return $this->redirectToRoute('empleado_menu', [
  586.                 'id' => $empleado->getId()
  587.             ], Response::HTTP_SEE_OTHER);
  588.         }
  589.         return $this->render('consola/panel_admin/empleado/baja.html.twig', [
  590.             'empleado_id' => $empleado->getId(),
  591.             'empleado_nombre' => $empleado->getNombre().' '.$empleado->getApellido(),
  592.             'form' => $form->createView(),
  593.         ]);
  594.     }
  595.     #[Route('/{id}/familia'name'empleado_familiares'methods: ['GET'])]
  596.     public function empleadoFamiliares(Empleado $empleado): Response
  597.     {
  598.         $arrayFamiliares = Array();
  599.         foreach($empleado->getFamiliars() as $familiar){
  600.             $arrayFamiliares[]=[
  601.                 'id' => $familiar->getId(),
  602.                 'nombre' => $familiar->getNombre().' '.$familiar->getApellido(),
  603.                 'dni' => $familiar->getDni(),
  604.                 'foto' => $familiar->getFoto(),
  605.                 'nombreEmpleado' => $familiar->getEmpleado()->getNombre().' '.$familiar->getEmpleado()->getApellido(),
  606.                 'estado' => $familiar->getIsActive(),
  607.                 'parentesco' => $familiar->getParentesco(),
  608.             ];
  609.         }
  610.         return $this->render('consola/panel_admin/empleado/familiar/empleado_familiares.html.twig', [
  611.             'arrayFamiliares' => $arrayFamiliares,
  612.             'empleado_id' => $empleado->getId(),
  613.             'empleado_nombre' => $empleado->getNombre().' '.$empleado->getApellido(),
  614.         ]);
  615.     }
  616.     #[Route('/{id}/cobros'name'empleado_cobros'methods: ['GET'])]
  617.     public function empleadoCobros(Empleado $empleadoEntityManagerInterface $em): Response
  618.     {
  619.        //$EmpleadoBoletas = $em->getRepository(EmpleadoBoleta::class)->findBybuscarBoletasPagasDelAfiliado($empleado->getId());
  620.        $empleadoBoletas $em->getRepository(EmpleadoBoleta::class)->findBy(array(
  621.         'empleado' => $empleado,
  622.        ));
  623.         $arrayPagos = Array();
  624.         foreach($empleadoBoletas as $pago){
  625.             //si la boleta no fue dada de baja
  626.             if($pago->getBoleta()->getIsActive() == true){
  627.                 
  628.                 if($pago->getBoleta()->getPagada() == true){
  629.                     $pagada true;
  630.                 }else{
  631.                     $pagada false;
  632.                 }
  633.                 if($pago->getMotivoLiquidacion() != null){
  634.                     $motivo $pago->getMotivoLiquidacion()->getNombre();
  635.                 }else{
  636.                     $motivo null;
  637.                 }
  638.                 if($pago->getAcuerdoDePago() != null){
  639.                     $acuerdo $pago->getAcuerdoDePago()->getId();
  640.                 }else{
  641.                     $acuerdo null;
  642.                 }
  643.                 if($pago->getCargo() != null){
  644.                     $cargo $pago->getCargo()->getNombre();
  645.                 }else{
  646.                     $cargo null;
  647.                 }
  648.                 //guardo los cambios
  649.                 $arrayPagos[]=[
  650.                     'id' => $pago->getId(),
  651.                     'pagada' => $pagada,
  652.                     'periodo' => $pago->getFechaPeriodo(),
  653.                     'empresa_id' => $pago->getBoleta()->getEmpresa()->getId(),
  654.                     'razonSocial' => $pago->getBoleta()->getNombreEmpresa(),
  655.                     'cuit' => $pago->getBoleta()->getCuit(),
  656.                     'remuneracion' => $pago->getRemuneracion(),
  657.                     'aportado' => $pago->getMontoAportado(),
  658.                     'horas' => $pago->getCantidadHoras(),
  659.                     'cargo' => $cargo,
  660.                     'motivo' => $motivo,
  661.                     'acuerdo' => $acuerdo,
  662.                 ];
  663.             }
  664.         }
  665.         $arrayEmpleado[]=[
  666.             'id' => $empleado->getId(),
  667.             'nombre' => $empleado->getNombre().' '.$empleado->getApellido(),
  668.         ];
  669.       
  670.         return $this->render('consola/panel_admin/empleado/cobros/empleado_cobros.html.twig', [
  671.             'empleado' => $arrayEmpleado,
  672.             'arrayPagos' => $arrayPagos,
  673.             ]);
  674.     
  675.     }
  676.      /**
  677.      * @Route("/empleado-alta", name="empleado_alta", condition="request.headers.get('X-Requested-With') == 'XMLHttpRequest'")
  678.      */
  679.     public function alta(Request $requestEntityManagerInterface $em): Response
  680.     {
  681.         $response = Array();
  682.         $id $request->get("id");
  683.         $empleado $em->getRepository(Empleado::class)->find($id);
  684.         if($empleado){
  685.             $empleado->setAfiliado(true);
  686.             $empleado->setIsActive(true);
  687.             $empleado->setFechaIngresoSindicato(new \DateTime("now"));
  688.             $em->persist($empleado);
  689.             $em->flush();
  690.             $mensaje 'Se le dio el alta al empleado.';
  691.             //creo una observacion 
  692.             $observacion = new Observacion();
  693.             $observacion->setFecha(new \DateTime("now"));
  694.             $observacion->setTexto($mensaje);    
  695.             $observacion->setEmpleado($empleado);
  696.             $observacion->setPrivada(false);
  697.             $observacion->setUserCargo($this->getUser());  
  698.             $em->persist($observacion);
  699.             $em->flush();
  700.             //mensaje Flash
  701.             $this->addFlash('notice', array(
  702.                 'type' => 'success'
  703.                 'title' => 'BAJA!'
  704.                 'message' => 'Se le dio la baja al empleado.'
  705.             ));
  706.             $response[] = [
  707.                 'status' => 'success',
  708.                 'text' => 'Listo! Se le dio el alta como afiliado.',
  709.             ];
  710.         }else{
  711.             $response[] = [
  712.                 'status' => 'error',
  713.                 'text' => 'No se encontró el empleado.',
  714.             ];
  715.         }
  716.         return new JsonResponse($response);
  717.     }
  718.     /**
  719.      * @Route("/empresa/buscar_sucursales", name="buscar_sucursales", condition="request.headers.get('X-Requested-With') == 'XMLHttpRequest'")
  720.      */
  721.     public function buscar_sucursales(Request $requestEntityManagerInterface $em): Response
  722.     {
  723.         $response = Array();
  724.         $id $request->get("id");
  725.         $empresa $em->getRepository(Empresa::class)->find($id);
  726.         if($empresa){
  727.             $sucursales $em->getRepository(Sucursal::class)->findBy(array(
  728.                 'empresa' => $empresa
  729.             ));
  730.             if($sucursales){
  731.                 $arraySucursales = Array();
  732.                 foreach($sucursales as $sucursal){
  733.                     if($sucursal->getIsActive() == true){
  734.                         $arraySucursales[] = [
  735.                             'id' => $sucursal->getId(), 
  736.                             'nombre' => $sucursal->getNombre().' ('.$sucursal->getDireccion().' - .'.$sucursal->getLocalidad()->getNombre().')',
  737.                         ];
  738.                     }
  739.                 }
  740.                 $response[] = [
  741.                     'status' => 'success',
  742.                     'sucursales' => $arraySucursales,
  743.                 ];
  744.             }else{
  745.                 $response[] = [
  746.                     'status' => 'error',
  747.                     'text' => 'No puede vincularse porque la empresa debe tener al menos una sucursal declarada.',
  748.                 ];
  749.             }
  750.         }else{
  751.             $response[] = [
  752.                 'status' => 'error',
  753.                 'text' => 'No se encontro la empresa.',
  754.             ];
  755.         }
  756.         return new JsonResponse($response);
  757.     }
  758.     /**
  759.      * @Route("/empresa/sucursal-vincular", name="vincular_empleado_sucursal", condition="request.headers.get('X-Requested-With') == 'XMLHttpRequest'")
  760.      */
  761.     public function vincularEmpleadoEmpresa(Request $requestEntityManagerInterface $em): Response
  762.     {
  763.         $response = Array();
  764.         $sucursal_id $request->get("sucursal_id");
  765.         $empleado_id $request->get("empleado_id");
  766.         $sucursal $em->getRepository(Sucursal::class)->find($sucursal_id);
  767.         if($sucursal){
  768.             $empleado $em->getRepository(Empleado::class)->find($empleado_id);
  769.             if($empleado){
  770.                 //creo una vinculacion nueva
  771.                 $empleadoSucursal = new EmpleadoEmpresaSucursal();
  772.                 $empleadoSucursal->setEmpleado($empleado);
  773.                 $empleadoSucursal->setEmpresa($sucursal->getEmpresa());
  774.                 $empleadoSucursal->setSucursal($sucursal);
  775.                 $empleadoSucursal->setUserCargo($this->getUser());
  776.                 $em->persist($empleadoSucursal);
  777.                 $em->flush();
  778.                 $response[] = [
  779.                     'status' => 'success',
  780.                     'text' => 'Listo! Hemos vinculado con la sucursal.',
  781.                     'id' => $empleadoSucursal->getId(),
  782.                 ];
  783.             }else{
  784.                 $response[] = [
  785.                     'status' => 'error',
  786.                     'text' => 'Hubo un problema con los datos del empleado.',
  787.                 ];
  788.             }
  789.         }else{
  790.             $response[] = [
  791.                 'status' => 'error',
  792.                 'text' => 'No se encontró la sucursal.',
  793.             ];
  794.         }
  795.         return new JsonResponse($response);
  796.     }
  797.     #[Route('/historial/boletas/general'name'historial_empleados_boletas_general',methods: ['GET''POST'])]
  798.     public function historialEmpleadoBoletasGeneral(Request $requestEntityManagerInterface $em): Response
  799.     {
  800.         $resultado='';
  801.         $empleadosBoletas '';
  802.         //pregunto si hay envio
  803.         if (isset($_GET['Buscar']) and $_GET['fechaDesde'] <> '' and $_GET['fechaHasta'] <> '')
  804.         {
  805.             $orden=$request->get("orden");
  806.             $escala $request->get("escala");
  807.             $filtroPago $request->get("filtro");
  808.             //paso a datetime
  809.             $desde=$request->get("fechaDesde");
  810.             $hasta=$request->get("fechaHasta");
  811.             $desdeTime =\DateTime::createFromFormat('Y-m-d'$desde);         
  812.             $hastaTime =\DateTime::createFromFormat('Y-m-d'$hasta);  
  813.             //Escala salarial todos
  814.             if ($escala == 'todos')
  815.             { 
  816.                 //todos, por debajo y arriba de la escala y 
  817.                     if ($filtroPago != 'todas')
  818.                         { //hay filtro
  819.                             
  820.                             //pongo si es paga o impaga
  821.                             if ($filtroPago != 'impagas'){
  822.                                 //$pagaImpaga = 'Pagas';
  823.                                 $filtroPagoPasar true;
  824.                             }else{ 
  825.                                 //$pagaImpaga = 'Impagas';
  826.                                 $filtroPagoPasar false;
  827.                             }
  828.                             if ($orden != 'fechaDePago')
  829.                             { 
  830.                                 //POR PERIODO
  831.                                 $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPeriodo($desdeTime,$hastaTime,$filtroPagoPasar);
  832.                                
  833.                             }else{
  834.                                 //FECHA DE PAGO
  835.                                 $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPorFechaPagos($desdeTime,$hastaTime,$filtroPagoPasar);
  836.                             }
  837.                         }else{
  838.                             //TODAS pagas e impagas
  839.                             if ($orden == 'fechaDePago')
  840.                             { 
  841.                                 //FECHA DE PAGO
  842.                                 $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPorFechaPagosPagasImpagas($desdeTime,$hastaTime);
  843.                             }else{
  844.                                 //POR PERIODO
  845.                                 $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPeriodoPagasImpagasSinConcepto($desdeTime,$hastaTime);
  846.                             }
  847.                         } 
  848.             }else{             
  849.                 //POR DEBAJO DE LA ESCALA SALARIAL
  850.                 if ($filtroPago != 'todas')
  851.                 { 
  852.                     //SELECCIONO PAGAS O IMPAGAS
  853.                     if ($filtroPago != 'impagas'){
  854.                         $filtroPagoPasar true;
  855.                     }else{ 
  856.                         $filtroPagoPasar false;
  857.                     }
  858.                     if ($orden != 'fechaDePago')
  859.                     { 
  860.                         //POR PERIODO
  861.                         $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPeriodoEscala($desdeTime,$hastaTime,$filtroPagoPasar);
  862.                     }else{
  863.                         //POR FECHA DE PAGO
  864.                         $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPorFechaPagosEscala($desdeTime,$hastaTime,$filtroPagoPasar);
  865.                     }
  866.                 }else{
  867.                     //AMBAS PAGAS E IMPAGAS
  868.                     if ($orden != 'fechaDePago')
  869.                     { 
  870.                         //POR PERIODO
  871.                         $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPeriodoPagasImpagasEscala($desdeTime,$hastaTime);
  872.                     }else{
  873.                         //no hay orden y no filtro
  874.                         $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPorFechaPagosPagasImpagasEscala($desdeTime,$hastaTime);
  875.                     }
  876.                 } 
  877.             }    
  878.            
  879.         }else{
  880.             //si no viene nada pongo las pagas del ultimo a;o
  881.             $desdeTime = new \DateTime("now");   
  882.             $desdeTime->modify('-1 month');      
  883.             $hastaTime = new \DateTime("now");  
  884.             $orden 'fechaDePago';
  885.             $filtroPago 'todas';
  886.             $escala 'todos';
  887.             $conceptoSeleccionado 'todos';
  888.             $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByEntreFechasPeriodo($desdeTime,$hastaTime,true);
  889.             $desde $desdeTime->format("Y-m-01");
  890.             $hasta $hastaTime->format("Y-m-01");
  891.         }
  892.         $arrayEmpleadosBoletas = Array();
  893.         if($empleadosBoletas){     
  894.             foreach($empleadosBoletas as $empleadoBoleta){
  895.                 //periodo boleta comun
  896.                 $periodo $empleadoBoleta->getBoleta()->getFechaPeriodo()->format("m-Y");
  897.                 //si es un pago de un acuerdo no pongo el periodo por que ya esta en la boleta del acuerdo
  898.                 if($empleadoBoleta->getBoleta()->getPagoAcuerdo() == null){
  899.                     //si es un acuerdo de pago pongo desde y hasta
  900.                     if($empleadoBoleta->getBoleta()->getAcuerdoDePago() != null){
  901.                         $periodo $empleadoBoleta->getBoleta()->getFechaPeriodo()->format("m-Y").' - '.$empleadoBoleta->getBoleta()->getFechaPeriodoHasta()->format("m-Y");
  902.                     }
  903.                 }
  904.                 //acuerdo
  905.                 $acuerdo null;
  906.                 if($empleadoBoleta->getBoleta()->getAcuerdoDePago() != null){
  907.                     $acuerdo $empleadoBoleta->getBoleta()->getAcuerdoDePago()->getId();
  908.                 }
  909.                 $numeroPago null;
  910.                 if($empleadoBoleta->getBoleta()->getPagoAcuerdo() != null){
  911.                     die();
  912.                     $numeroPago $empleadoBoleta->getBoleta()->getPagoAcuerdo()->getNumeroPago();
  913.                 }
  914.                 //motivo
  915.                 $motivo null;
  916.                 if($empleadoBoleta->getMotivoLiquidacion() != null){
  917.                     $motivo $empleadoBoleta->getMotivoLiquidacion()->getNombre();
  918.                 }
  919.                 if($empleadoBoleta->getCargo() != null){
  920.                     $cargo $empleadoBoleta->getCargo()->getNombre();
  921.                 }else{
  922.                     $cargo null;
  923.                 }
  924.                 $arrayEmpleadosBoletas[]=[
  925.                     'id' => $empleadoBoleta->getId(),
  926.                     'nombre' => $empleadoBoleta->getEmpleado()->getNombre().' '.$empleadoBoleta->getEmpleado()->getApellido(),
  927.                     'empleado_ID' => $empleadoBoleta->getEmpleado()->getId(),
  928.                     'pagada' => $empleadoBoleta->getBoleta()->getPagada(),
  929.                     'periodo' => $periodo,
  930.                     'fechaDePago' => $empleadoBoleta->getBoleta()->getFechaPago()->format("d-m-Y"),
  931.                     'acuerdo' => $acuerdo,
  932.                     'numeroPago' => $numeroPago,
  933.                     'empresa_ID' => $empleadoBoleta->getBoleta()->getEmpresa()->getId(),
  934.                     'cuit' => $empleadoBoleta->getBoleta()->getCuit(),
  935.                     'remuneracion' => $empleadoBoleta->getRemuneracion(),
  936.                     'montoAportado' => $empleadoBoleta->getMontoAportado(),
  937.                     'cantidadHoras' => $empleadoBoleta->getCantidadHoras(),
  938.                     'cargo' => $cargo,
  939.                     'motivo' => $motivo,
  940.                 ];
  941.             }
  942.         }
  943.         return $this->render('consola/panel_admin/historial/empleadosBoleta.html.twig', [
  944.             'arrayEmpleadosBoletas' => $arrayEmpleadosBoletas,
  945.             'desde' => $desde,
  946.             'hasta' => $hasta,
  947.             'ordenSeleccionado' => $orden,
  948.             'filtroPagoSeleccionado' => $filtroPago,
  949.             'escalaSeleccionada' => $escala,
  950.             ]);
  951.     }
  952.     #[Route('/informe/aportantes-y-afiliados'name'empleado_afiliados_aportantes'methods: ['GET'])]
  953.     public function informeAfiliadosYaportantes(Request $request,EntityManagerInterface $em): Response
  954.     {
  955.         //Array general
  956.         $arrayEmpleados = Array();
  957.             $empleados $em->getRepository(Empleado::class)->findAll();
  958.             foreach($empleados as $empleado){
  959.                 $inserto false;
  960.                 //si esta afiliado entra
  961.                 if($empleado->getAfiliado() == true){
  962.                     $inserto true;
  963.                 }else{
  964.                     //si no es afiliado busco si pago en los ultimos 6 meses
  965.                     $empleadosBoletas $em->getRepository(EmpleadoBoleta::class)->findByUltimosSeisMesesPagos($empleado->getId());
  966.                     if($empleadosBoletas){
  967.                         $inserto true;
  968.                     }
  969.                 }
  970.                    
  971.                 if($inserto == true){
  972.                     $arrayEmpleados[]=[
  973.                         'id' => $empleado->getId(),
  974.                         'nombre' => $empleado->getNombre(),
  975.                         'apellido' =>$empleado->getApellido(),
  976.                         'dni' =>$empleado->getDni(),
  977.                         'cuil' => $empleado->getCuil(),
  978.                         'afiliado' => $empleado->getAfiliado(),
  979.                     ];
  980.                 }
  981.             }
  982.         return $this->render('consola/panel_admin/empleado/informes/afiliados_y_aportantes.html.twig', [
  983.             'arrayEmpleados' => $arrayEmpleados,
  984.         ]);
  985.     }
  986.     #[Route('/informe/aportantes'name'empleado_aportantes'methods: ['GET'])]
  987.     public function informeAportantes(Request $request,EntityManagerInterface $em): Response
  988.     {
  989.         //Array general
  990.         $arrayEmpleados = Array();
  991.             $empleados $em->getRepository(Empleado::class)->findAll();
  992.             foreach($empleados as $empleado){
  993.                 $inserto false;
  994.                 //si esta afiliado entra
  995.                 if($empleado->getAfiliado() == true){
  996.                     $inserto true;
  997.                 }else{
  998.                     //si no es afiliado busco si pago en los ultimos 6 meses
  999.                     // $empleadosBoletas = $em->getRepository(EmpleadoBoleta::class)->findByUltimosSeisMesesPagos($empleado->getId());
  1000.                     // if($empleadosBoletas){
  1001.                     //     $inserto = true;
  1002.                     // }
  1003.                 }
  1004.                    
  1005.                 if($inserto == true){
  1006.                     $arrayEmpleados[]=[
  1007.                         'id' => $empleado->getId(),
  1008.                         'nombre' => $empleado->getNombre(),
  1009.                         'apellido' =>$empleado->getApellido(),
  1010.                         'dni' =>$empleado->getDni(),
  1011.                         'cuil' => $empleado->getCuil(),
  1012.                         'afiliado' => $empleado->getAfiliado(),
  1013.                     ];
  1014.                 }
  1015.             }
  1016.         return $this->render('consola/panel_admin/empleado/informes/afiliados_y_aportantes.html.twig', [
  1017.             'arrayEmpleados' => $arrayEmpleados,
  1018.         ]);
  1019.     }
  1020.     #[Route('/informe/padron-electoral'name'empleado_padron_electoral'methods: ['GET'])]
  1021.     public function informePadronElectoral(Request $request,EmpleadoEmpresaSucursalController $EmpleadoEmpresaSucursalController,EntityManagerInterface $em): Response
  1022.     {
  1023.         //Array general
  1024.         $arrayEmpleados = Array();
  1025.         $afiliados $em->getRepository(Empleado::class)->findBy(array(
  1026.             'afiliado' => true
  1027.         ));
  1028.         $fechaTope =\DateTime::createFromFormat('Y-m-d H:i:s''2025-03-31 00:00:00'); 
  1029.         foreach($afiliados as $empleado){
  1030.             //los que no tienen fecha de ingreso hay que invertarles una
  1031.             if($empleado->getFechaIngresoSindicato() != null){
  1032.                 if($empleado->getFechaIngresoSindicato()->format('Y-m-d') < $fechaTope->format('Y-m-d')){
  1033.                     array_push($arrayEmpleados,$this->getArrayEmpleado($empleado,$em,$EmpleadoEmpresaSucursalController));
  1034.                 }
  1035.             }else{
  1036.                 array_push($arrayEmpleados,$this->getArrayEmpleado($empleado,$em,$EmpleadoEmpresaSucursalController));
  1037.             }
  1038.         }
  1039.         return $this->render('consola/panel_admin/empleado/informes/padron_electoral.html.twig', [
  1040.             'arrayEmpleados' => $arrayEmpleados,
  1041.         ]);
  1042.     }
  1043. }