/** * diviser * * @param var $origine * @return Colonie */ public function diviser($origine) { $reineMere = $this->remerages->last()->getReine(); $colonie = new Colonie(); $colonie->setOrigineColonie($origine); $colonie->remerages->last()->getReine()->setRace($reineMere->getRace()); $colonie->remerages->last()->getReine()->setReineMere($reineMere); return $colonie; }
/** * @Security("has_role('ROLE_USER')") * @ParamConverter("colonieMere", options={"mapping": {"colonie_id" : "id"}}) */ public function essaimerAction(Colonie $colonieMere, Request $request) { if (!$this->getUser()->canDisplayExploitation($colonieMere->getRuche()->getRucher()->getExploitation()) || !$colonieMere->canBeEssaimee()) { throw new NotFoundHttpException('Page inexistante.'); } $colonie = new Colonie(); // L'origine de la nouvelle colonie est l'essaimage $colonie->setOrigineColonie($this->getDoctrine()->getRepository('KGBeekeepingManagementBundle:Origine')->findOneByLibelle("Essaimage")); $form = $this->createForm(new EssaimerType($colonieMere), $colonie); if ($form->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); // On garde en mémoire la ruche de départ $rucheMere = $colonieMere->getRuche(); // La colonie mère est celle qui essaime et qui est placée dans la nouvelle ruche $colonieMere->setRuche($colonie->getRuche()); // On sauvegarde pour casser le lien entre ruche et colonie sinon problème car la ruche sera affectée à deux colonies $em->persist($colonieMere); $em->flush(); // On lie la nouvelle colonie à l'ancienne ruche et à la colonie mère $colonie->essaimer($rucheMere, $colonieMere); $em->persist($colonie); $em->flush(); $flash = $this->get('braincrafted_bootstrap.flash'); $flash->success('Colonie essaimée avec succès'); return $this->redirect($this->generateUrl('kg_beekeeping_management_view_rucher', array('rucher_id' => $colonie->getRuche()->getRucher()->getId()))); } return $this->render('KGBeekeepingManagementBundle:Colonie:essaimer.html.twig', array('form' => $form->createView(), 'colonieMere' => $colonieMere)); }