src/Controller/Comun/TareaEmpleadaController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Comun;
  3. use App\Entity\Comun\TareaEmpleada;
  4. use App\Form\Comun\TareaEmpleadaType;
  5. use App\Repository\Comun\TareaEmpleadaRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use App\Entity\Admin\Empleada;
  11. use App\Entity\Comun\Tarea;
  12. use App\Service\AccesoService;
  13. #[Route('/comun/tarea/empleada')]
  14. class TareaEmpleadaController extends AbstractController {
  15.      private $accesoService;
  16.     public function __construct(AccesoService $accesoService) {
  17.         $this->accesoService $accesoService;
  18.     }
  19.     
  20.     
  21.     #[Route('/{tarea}'name'app_comun_tarea_empleada_index'methods: ['GET'])]
  22.     public function index(Tarea $tarea): Response {
  23.         return $this->render('comun/tarea_empleada/index.html.twig', [
  24.                     'tarea' => $tarea,
  25.                      'acceso'=> $this->accesoService->controlAccesosProyecto($tarea->getProyecto())
  26.         ]);
  27.     }
  28.     #[Route('/new/{tarea}'name'app_comun_tarea_empleada_new'methods: ['GET''POST'])]
  29.     public function new(Request $requestTarea $tareaTareaEmpleadaRepository $tareaEmpleadaRepository): Response {
  30.         $em $this->getDoctrine()->getManager();
  31.         $tareaEmpleada = new TareaEmpleada();
  32.         $form $this->createForm(TareaEmpleadaType::class, $tareaEmpleada);
  33.         $form->handleRequest($request);
  34.         if ($form->isSubmitted() && $form->isValid()) {
  35.             $empleada $form->get('empleada')->getData();
  36.             $horasPrevistas $form->get('horasPrevistas')->getData();
  37.             $tareaEmpleadaExistente $tareaEmpleadaRepository->findOneBy(['empleada' => $empleada->getId(), 'tarea' => $tarea->getId()]);
  38.             if (!is_null($tareaEmpleadaExistente)) {
  39.                 $horas $tareaEmpleadaExistente->getHorasPrevistas();
  40.                 $tareaEmpleadaExistente->setHorasPrevistas($horas $horasPrevistas);
  41.                 if ($tareaEmpleadaExistente->getHorasPrevistas() == 0) {
  42.                     $tareaEmpleadaRepository->remove($tareaEmpleadaExistente);
  43.                 } else {
  44.                     $tareaEmpleadaRepository->add($tareaEmpleadaExistente);
  45.                 }
  46.             } else if ($horasPrevistas 0) {
  47.                 $tareaEmpleada->setTarea($tarea);
  48.                 $tareaEmpleadaRepository->add($tareaEmpleada);
  49.             }
  50.             $this->actualizarHoras($tarea$tareaEmpleada->getEmpleada(), $tareaEmpleada->getHorasPrevistas());
  51.         }
  52.         return $this->renderForm('comun/tarea_empleada/form.html.twig', [
  53.                     'tarea_empleada' => $tareaEmpleada,
  54.                     'form' => $form,
  55.         ]);
  56.     }
  57.     #[Route('/{id}/edit'name'app_comun_tarea_empleada_edit'methods: ['GET''POST'])]
  58.     public function edit(Request $requestTareaEmpleada $tareaEmpleadaTareaEmpleadaRepository $tareaEmpleadaRepository): Response {
  59.         $form $this->createForm(TareaEmpleadaType::class, $tareaEmpleada);
  60.         $form->handleRequest($request);
  61.         $session $this->get("session");
  62.         if ($form->isSubmitted() && $form->isValid()) {
  63.             if ($tareaEmpleada->getHorasPrevistas() == 0) {
  64.                 $tareaEmpleadaRepository->remove($tareaEmpleada);
  65.             } else {
  66.                 $tareaEmpleadaRepository->add($tareaEmpleada);
  67.                 $this->actualizarHoras($tareaEmpleada->getTarea(), $tareaEmpleada->getEmpleada(), ( $tareaEmpleada->getHorasPrevistas() - $session->get('horasOriginales')));
  68.             }
  69.             $session->set('horasOriginales'null);
  70.         } else {
  71.             $session->set('horasOriginales'$tareaEmpleada->getHorasPrevistas());
  72.         }
  73.         return $this->renderForm('comun/tarea_empleada/form.html.twig', [
  74.                     'tarea_empleada' => $tareaEmpleada,
  75.                     'form' => $form,
  76.         ]);
  77.     }
  78.     #[Route('/delete/{id}'name'app_comun_tarea_empleada_delete'methods: ['GET''POST'])]
  79.     public function delete(Request $requestTareaEmpleada $tareaEmpleadaTareaEmpleadaRepository $tareaEmpleadaRepository): Response {
  80.         // faltan los fichajes 
  81.         $proyecto $tareaEmpleada->getTarea()->getProyecto();
  82.         $this->actualizarHoras($tareaEmpleada->getTarea(), $tareaEmpleada->getEmpleada(), ($tareaEmpleada->getHorasPrevistas()) * -1);
  83.         $tareaEmpleadaRepository->remove($tareaEmpleada);
  84.         return $this->redirect($this->generateUrl('app_comun_proyecto_show', ['id' => $proyecto->getId()]));
  85.     }
  86.     public function actualizarHoras(Tarea $tareaEmpleada $empleada$horasPrevistas) {
  87.         $em $this->getDoctrine()->getManager();
  88.         $tareaEmpleadaRepository $em->getRepository("App:Comun\TareaEmpleada");
  89.         if (!is_null($tarea->getPadre())) {
  90.             $tareaEmpleadaExistente $tareaEmpleadaRepository->findOneBy(['empleada' => $empleada->getId(), 'tarea' => $tarea->getPadre()->getId()]);
  91.             if (!is_null($tareaEmpleadaExistente)) {
  92.                 $horas $tareaEmpleadaExistente->getHorasPrevistas();
  93.                 $tareaEmpleadaExistente->setHorasPrevistas($horas $horasPrevistas);
  94.                 if ($tareaEmpleadaExistente->getHorasPrevistas() == 0) {
  95.                     $tareaEmpleadaRepository->remove($tareaEmpleadaExistente);
  96.                 } else {
  97.                     $tareaEmpleadaRepository->add($tareaEmpleadaExistente);
  98.                 }
  99.             } else if ($horasPrevistas 0) {
  100.                 $tareaEmpleadaNew = new TareaEmpleada();
  101.                 $tareaEmpleadaNew->setEmpleada($empleada);
  102.                 $tareaEmpleadaNew->setHorasPrevistas($horasPrevistas);
  103.                 $tareaEmpleadaNew->setTarea($tarea->getPadre());
  104.                 $tareaEmpleadaRepository->add($tareaEmpleadaNew);
  105.             }
  106.             $this->actualizarHoras($tarea->getPadre(), $empleada$horasPrevistas);
  107.         }
  108.     }
  109. }