src/Controller/Contador/EmpleadoController.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Contador;
  3. use DateTime;
  4. use App\Entity\Cargo;
  5. use App\Entity\Empresa;
  6. use App\Entity\Empleado;
  7. use App\Entity\Sucursal;
  8. use App\Form\EmpleadoType;
  9. use App\Entity\Observacion;
  10. use App\Form\EmpleadoContadorType;
  11. use App\Controller\ServiceController;
  12. use App\Repository\EmpleadoRepository;
  13. use App\Entity\EmpleadoEmpresaSucursal;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use App\Form\EmpleadoEmpresaSucursalType;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Component\HttpFoundation\JsonResponse;
  20. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  21. #[Route('/panel/contador/empleado')]
  22. class EmpleadoController extends AbstractController
  23. {
  24.     public function __construct(){
  25.         date_default_timezone_set("America/Buenos_Aires");
  26.     }
  27.   
  28.     #[Route('/empresa/{id}/empleados'name'contador_empresa_empleados'methods: ['GET','POST'])]
  29.     public function empleados(Request $requestEmpresa $empresaEntityManagerInterface $em): Response
  30.     {
  31.         if (isset($_REQUEST['Editar']))
  32.         {
  33.             $empresaEmpleados $em->getRepository(EmpleadoEmpresaSucursal::class)->findBy(array(
  34.                 'empresa' => $empresa,
  35.                 'isActive' => true
  36.             ));
  37.             foreach ($empresaEmpleados as $empresaEmpleado) {
  38.                 //cambio la fecha y guardo una observacion
  39.                 if($_REQUEST['fechaIngreso'.$empresaEmpleado->getId()]){
  40.                     $fechaNueva $_REQUEST['fechaIngreso'.$empresaEmpleado->getId()];                         
  41.                     $fecha DateTime::createFromFormat('Y-m-d'$fechaNueva);
  42.                     //pregunto si cambio la fecha que empezó a trabajar
  43.                     if($empresaEmpleado->getFechaIngresoTrabajar() != null){
  44.                         if($empresaEmpleado->getFechaIngresoTrabajar()->format("Y-m-d") != $fecha->format("Y-m-d")){
  45.                         
  46.                             //creo una observacion 
  47.                             $observacion = new Observacion();
  48.                             $observacion->setFecha(new \DateTime("now"));
  49.                             $observacion->setTexto('El contador cambio la fecha de Ingreso a trabajar '.$empresaEmpleado->getFechaIngresoTrabajar()->format("d-m-Y").' por '.$fecha->format("d-m-Y"));    
  50.                             $observacion->setEmpleado($empresaEmpleado->getEmpleado());
  51.                             $observacion->setPrivada(false);
  52.                             $observacion->setUserCargo($this->getUser());  
  53.                             $em->persist($observacion);
  54.                             $em->flush();
  55.                             //guardo
  56.                             $empresaEmpleado->setFechaIngresoTrabajar($fecha);
  57.                         }
  58.                     }else{
  59.                         //guardo
  60.                         $empresaEmpleado->setFechaIngresoTrabajar($fecha);
  61.                     }
  62.                 }
  63.                 if(is_numeric($_REQUEST['remu'.$empresaEmpleado->getId()])) {
  64.                     $empresaEmpleado->setRemuneracion($_REQUEST['remu'.$empresaEmpleado->getId()]);
  65.                 }
  66.                 $empresaEmpleado->setHorasTrabajadas($_REQUEST['horas'.$empresaEmpleado->getId()]);
  67.                 //busco el cargo
  68.                 if($_REQUEST['cargo'.$empresaEmpleado->getId()] != null){
  69.                     $cargo $em->getRepository(Cargo::class)->find($_REQUEST['cargo'.$empresaEmpleado->getId()]);
  70.                     $empresaEmpleado->setCargo($cargo);
  71.                 }
  72.                 //busco la sucursal
  73.                 if($_REQUEST['sucursal'.$empresaEmpleado->getId()] != null){
  74.                     $sucursal $em->getRepository(Sucursal::class)->find($_REQUEST['sucursal'.$empresaEmpleado->getId()]);
  75.                     $empresaEmpleado->setSucursal($sucursal);
  76.                 }
  77.                 $em->flush();
  78.             }
  79.             //mensaje Flash
  80.             $this->addFlash('notice', array(
  81.                 'type' => 'success'
  82.                 'title' => 'LISTO!'
  83.                 'message' => 'Se actualizaron los datos para todos los empleados. Controle que los datos sean correctos.'
  84.             ));
  85.         }
  86.         //CARGOS
  87.         $cargos $em->getRepository(Cargo::class)->findBy(array(
  88.             'isActive' => true
  89.         ));
  90.         $arrayCargos = Array();
  91.         foreach($cargos as $cargo){
  92.             $arrayCargos[]=[
  93.                 'id' => $cargo->getId(),
  94.                 'nombre' => $cargo->getNombre(),
  95.             ];
  96.         }
  97.         //SUCURSALES
  98.         $sucursales $em->getRepository(Sucursal::class)->findBy(array(
  99.             'isActive' => true,
  100.             'empresa' => $empresa,
  101.         ));
  102.         $arraySucursales = Array();
  103.         foreach($sucursales as $sucursal){
  104.             $arraySucursales[]=[
  105.                 'id' => $sucursal->getId(),
  106.                 'nombre' => $sucursal->getNombre(),
  107.             ];
  108.         }
  109.         //EMPLEADOS
  110.         $empleadosEmpresa $em->getRepository(EmpleadoEmpresaSucursal::class)->findBy(array(
  111.             'empresa' => $empresa,
  112.             'isActive' => true
  113.         ));
  114.         $arrayEmpleadosEmpresa = Array();
  115.         foreach($empleadosEmpresa as $empleadoEmpresa){
  116.             $cargoId null;
  117.             if($empleadoEmpresa->getCargo() != null){
  118.                 $cargoId $empleadoEmpresa->getCargo()->getId();
  119.             }
  120.             $sucursalId null;
  121.             if($empleadoEmpresa->getSucursal() != null){
  122.                 $sucursalId $empleadoEmpresa->getSucursal()->getId();
  123.             }
  124.             $arrayEmpleadosEmpresa[]=[
  125.                 'id' => $empleadoEmpresa->getId(),
  126.                 'fechaIngreso' => $empleadoEmpresa->getFechaIngresoTrabajar(),
  127.                 'nombre' => $empleadoEmpresa->getEmpleado()->getApellido().' '.$empleadoEmpresa->getEmpleado()->getNombre(),
  128.                 'cuil' => $empleadoEmpresa->getEmpleado()->getCuil(),
  129.                 'remuneracion' => $empleadoEmpresa->getRemuneracion(),
  130.                 'horasTrabajadas' => $empleadoEmpresa->getHorasTrabajadas(),
  131.                 'cargo_id' => $cargoId,
  132.                 'sucursal_id' => $sucursalId,
  133.             ];
  134.         }
  135.         
  136.         return $this->render('consola/panel_contador/empresa/empleado/index.html.twig', [
  137.             'empresa_id' => $empresa->getId(),
  138.             'razon_social' => $empresa->getRazonSocial(),
  139.             'arrayCargos' => $arrayCargos,
  140.             'arraySucursales' => $arraySucursales,
  141.             'arrayEmpleadosEmpresa' => $arrayEmpleadosEmpresa,
  142.         ]);
  143.     }
  144.     #[Route('/{id}/empleado/new/'name'contador_empresa_empleado_new'methods: ['GET''POST'])]
  145.     public function newEmpleado(Request $request,Empresa $empresaServiceController $ServiceControllerEntityManagerInterface $em): Response
  146.     {
  147.         $empleado = new Empleado();
  148.         $form $this->createForm(EmpleadoContadorType::class, $empleado);
  149.         $form->handleRequest($request);
  150.         if ($form->isSubmitted() && $form->isValid()) {
  151.             $empleado->setNombre($ServiceController->PrimeraLetraMayuscula($empleado->getNombre()));
  152.             $empleado->setApellido($ServiceController->PrimeraLetraMayuscula($empleado->getApellido()));
  153.             $empleado->setAfiliado(false);
  154.             //$empleado->setFechaIngresoSindicato(new \DateTime('now'));
  155.             $empleado->setIsActive(true);
  156.             $empleado->setUserCargo($this->getUser());
  157.             $empleado->setFechaRegister(new \DateTime('now'));
  158.             
  159.             $em->persist($empleado);
  160.             $em->flush();
  161.             //mensaje Flash
  162.             $this->addFlash('notice', array(
  163.                 'type' => 'success'
  164.                 'title' => 'FELICITACIONES!'
  165.                 'message' => 'Ha creado un nuevo Empleado. Debe seleccionar la empresa y sucursal en la que trabaja.'
  166.             ));
  167.             return $this->redirectToRoute('contador_empleado_new_datos_empresa', [
  168.                 'id' => $empresa->getId(),
  169.                 'empleado' => $empleado->getId(),
  170.             ], Response::HTTP_SEE_OTHER);
  171.         }
  172.         return $this->renderForm('consola/panel_contador/empresa/empleado/new.html.twig', [
  173.             'empleado_nombre' => null,
  174.             'empresa_id' => $empresa->getId(),
  175.             'form' => $form,
  176.         ]);
  177.     }
  178.     #[Route('/{id}/empresa/empleado/{empleado}/datos/new/'name'contador_empleado_new_datos_empresa'methods: ['GET''POST'])]
  179.     public function datosEmpresaNew(Request $request,Empresa $empresaEmpleado $empleadoEntityManagerInterface $em): Response
  180.     {
  181.         $empleadoEmpresa = new EmpleadoEmpresaSucursal();
  182.         $empleadoEmpresa->setEmpresa($empresa);
  183.         $empleadoEmpresa->setEmpleado($empleado);
  184.         $form $this->createForm(EmpleadoEmpresaSucursalType::class, $empleadoEmpresa, ['empresa' => $empresa]);
  185.         $form->handleRequest($request);
  186.         if ($form->isSubmitted() && $form->isValid()) {
  187.             //pregunto si ya hay una vinculacion anterior con esa sucursal
  188.             $empleadoEmpresas $em->getRepository(EmpleadoEmpresaSucursal::class)->findOneBy(Array(
  189.                 'empleado' => $empleado,
  190.                 'sucursal' => $empleadoEmpresa->getSucursal(),
  191.                 'isActive' => true
  192.             ));
  193.             if($empleadoEmpresas){
  194.                 //mensaje Flash
  195.                 $this->addFlash('notice', array(
  196.                     'type' => 'info'
  197.                     'title' => 'ATENCIÓN!'
  198.                     'message' => 'El empleado ya estaba en el listado de esa sucursal.'
  199.                 ));
  200.             }else{
  201.                 $empleadoEmpresa->setIsActive(true);
  202.                 $empleadoEmpresa->setUserCargo($this->getUser());
  203.                 $em->persist($empleadoEmpresa);
  204.                 $em->flush();
  205.                 //mensaje Flash
  206.                 $this->addFlash('notice', array(
  207.                     'type' => 'success'
  208.                     'title' => 'FELICITACIONES!'
  209.                     'message' => 'Revise los datos cargados'
  210.                 ));
  211.             }
  212.             return $this->redirectToRoute('contador_empresa_empleados', [
  213.                 'id' => $empresa->getId(),
  214.             ], Response::HTTP_SEE_OTHER);
  215.         }
  216.         return $this->renderForm('consola/panel_contador/empresa/empleado/cargar_empresa.html.twig', [
  217.             'empleado_nombre' => $empleado->getNombre(),
  218.             'empresa_id' => $empresa->getId(),
  219.             'nombre_empresa' => $empresa->getRazonSocial(),
  220.             'form' => $form,
  221.         ]);
  222.     }
  223.     /**
  224.      * @Route("/buscar-empleado-padron", name="buscar_empleado_padron", condition="request.headers.get('X-Requested-With') == 'XMLHttpRequest'")
  225.      */
  226.     public function buscarEmpleado(Request $requestEntityManagerInterface $em): Response
  227.     {
  228.         $response = Array();
  229.         $cuil $request->get("cuil");
  230.         if (is_numeric($cuil) and strlen($cuil) == 11) {
  231.             $empleado $em->getRepository(Empleado::class)->findOneBy(Array(
  232.                 'cuil' => $cuil
  233.             ));
  234.             //si existe el empleado
  235.             if($empleado){
  236.                 
  237.                 //me fijo si ya tiene otra empresa solo para avisar
  238.                 $empleadoEmpresas $em->getRepository(EmpleadoEmpresaSucursal::class)->findBy(Array(
  239.                     'empleado' => $empleado,
  240.                     'isActive' => true
  241.                 ));
  242.                 if($empleadoEmpresas){
  243.                     //mensaje Flash
  244.                     $this->addFlash('notice', array(
  245.                         'type' => 'warning'
  246.                         'title' => 'ATENCIÓN!'
  247.                         'message' => 'El empleado ya tiene una empresa asignada. Comuníquelo al sindicato si el trabajador solo trabaja en una empresa.'
  248.                     ));
  249.                 }
  250.                 //lo mando derecho a que cargue la empresa.
  251.                 $response[] = [
  252.                     'status' => 'success',
  253.                     'text' => 'Encontrado!',
  254.                     'empleado_id' => $empleado->getId(),
  255.                 ];
  256.                 
  257.             }else{
  258.                 //no se encontro lo agrego
  259.                 $response[] = [
  260.                     'status' => 'form',
  261.                     'text' => 'No se encontro el empleado. Debe completar el formulario',
  262.                 ];
  263.                 //mensaje Flash
  264.                 $this->addFlash('notice', array(
  265.                     'type' => 'success'
  266.                     'title' => 'BUSQUEDA!'
  267.                     'message' => 'No se encontró el empleado con el cuil '.$cuil.' en nuestro padrón. Debe completar el formulario.'
  268.                 ));
  269.             }
  270.         }else{
  271.             $response[] = [
  272.                 'status' => 'error',
  273.                 'text' => 'El cuil que ingreso no es valido. Compruebe que este compuesto por solo 11 números.',
  274.             ];
  275.         }
  276.         return new JsonResponse($response);
  277.     }
  278. }