/** * Lists all DisponibiliteInscription entities. * * @Route("/", name="disponibiliteinscription") * @Template() */ public function indexAction() { if (false === $this->get('security.context')->isGranted('ROLE_HUMAIN')) { throw new AccessDeniedException(); } $request = $this->get('request'); $param = $request->request->all(); $em = $this->getDoctrine()->getEntityManager(); $config = $this->get('config.extension'); $admin = $this->get('security.context')->isGranted('ROLE_HUMAIN'); $entitiesQuery = "SELECT d, o FROM AssoMakerPHPMBundle:DisponibiliteInscription d LEFT JOIN d.orgas o ORDER BY d.debut"; $entities = $em->createQuery($entitiesQuery)->getResult(); $data = array('disponibiliteInscriptionItems' => $entities); $form = $this->createForm(new DisponibiliteInscriptionListType($admin, $config)); if ($this->get('request')->getMethod() == 'POST') { $form->handleRequest($request); $data = $form->getData(); $valid = $form->isValid(); if ($valid) { $decalage = $data['decalage']; $mission = $data['mission']; $statut = $data['statut']; $pointsCharisme = $data['pointsCharisme']; $confiance = $data['confiance']; $confianceDesaffect = $data['confiance2']; foreach ($data['disponibiliteInscriptionItems'] as $di) { if ($param['action'] == 'delete') { $em->remove($di); } if ($param['action'] == 'affect') { foreach ($confiance->getEquipes() as $equipe) { foreach ($equipe->getOrgas() as $orga) { if (!$orga->getDisponibilitesInscription()->contains($di)) { $orga->addDisponibiliteInscription($di); } } } } if ($param['action'] == 'desaffect') { foreach ($confianceDesaffect->getEquipes() as $equipe) { foreach ($equipe->getOrgas() as $orga) { if ($orga->getDisponibilitesInscription()->contains($di)) { $orga->getDisponibilitesInscription()->removeElement($di); } } } } if ($param['action'] == 'edit') { if ($decalage != null) { $ndi = new DisponibiliteInscription(); $debutDi = clone $di->getDebut(); $finDi = clone $di->getFin(); $debutDi->add(new \DateInterval('PT' . $decalage . 'S')); $finDi->add(new \DateInterval('PT' . $decalage . 'S')); $ndi->setDebut($debutDi); $ndi->setFin($finDi); if ($mission != null) { $ndi->setMission($mission); } else { $ndi->setMission($di->getMission()); } if ($statut != null) { $ndi->setStatut($statut); } else { $ndi->setStatut($di->getStatut()); } if ($pointsCharisme != null) { $ndi->setPointsCharisme($pointsCharisme); } else { $ndi->setPointsCharisme($di->getPointsCharisme()); } $em->persist($ndi); } else { if ($mission != null) { $di->setMission($mission); } if ($statut != null) { $di->setStatut($statut); } if ($pointsCharisme != null) { $di->setPointsCharisme($pointsCharisme); } } } } $em->flush(); } $form = $this->createForm(new DisponibiliteInscriptionListType($admin, $config)); $entities = $em->createQuery($entitiesQuery)->getResult(); } return array('entities' => $entities, 'form' => $form->createView()); }
public function removeDIFromDisponibilites(\AssoMaker\PHPMBundle\Entity\DisponibiliteInscription $di) { foreach ($this->getDisponibilites() as $dispo) { if ($di->getFin() <= $dispo->getDebut()) { } elseif ($di->getDebut() >= $dispo->getFin()) { } elseif ($di->getDebut() <= $dispo->getDebut() && $di->getFin() >= $dispo->getFin()) { $this->removeDisponibilite($dispo); } elseif ($di->getDebut() <= $dispo->getDebut() && $di->getFin() > $dispo->getDebut()) { foreach ($dispo->getCreneaux() as $creneau) { if ($creneau->getDebut() < $di->getFin() && $creneau->getFin() > $di->getDebut()) { var_dump('deja affecté a ' . $creneau->getId()); return false; } } $dispo->setDebut($di->getFin()); } elseif ($di->getDebut() < $dispo->getFin() && $di->getFin() >= $dispo->getFin()) { foreach ($dispo->getCreneaux() as $creneau) { if ($creneau->getDebut() < $di->getFin() && $creneau->getFin() > $di->getDebut()) { var_dump('deja affecté a ' . $creneau->getId()); return false; } } $dispo->setFin($di->getDebut()); } elseif ($di->getDebut() > $dispo->getDebut() && $di->getFin() < $dispo->getFin()) { foreach ($dispo->getCreneaux() as $creneau) { if ($creneau->getDebut() < $di->getFin() && $creneau->getFin() > $di->getDebut()) { var_dump('deja affecté a ' . $creneau->getId()); return false; } } print $dispo->getId(); print " "; print $di->getId(); print "scinder"; $nd = new Disponibilite(); $nd->setDebut($di->getFin()); $nd->setFin($dispo->getFin()); $dispo->setFin($di->getDebut()); foreach ($dispo->getCreneaux() as $creneau) { if ($creneau->getDebut() >= $di->getFin()) { $creneau->setDisponibilite($nd); } } $nd->setOrga($this); $this->addDisponibilite($nd); } else { print "merde..."; var_dump($dispo->getDebut()); var_dump($dispo->getFin()); var_dump($di->getDebut()); var_dump($di->getFin()); } print "\n"; } return true; }