예제 #1
0
 public function modifierOeuvreAction($type, $id, Request $requeteUtilisateurL, Request $requeteUtilisateurF, Request $requeteUtilisateurO)
 {
     // Contrôle d'accès sur cette action métier
     if (false === $this->get('security.context')->isGranted('ROLE_USER')) {
         throw new AccessDeniedException();
     }
     // je prepare mes formulaires !!!
     // Tableau dans lequel les données du formulaire seront recueillies
     $tabFilm = array();
     $tabLivre = array();
     $tabOeuvre = array();
     switch ($type) {
         case 'monOeuvre':
             // code...
             // je charge mon repository de Oeuvre pour executer une requete sur la BD
             $repositoryOeuvres = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Oeuvre');
             // j'execute la requete perso pour remplir un tableau de oeuvre en accord avec le formulaire de page d'acceuil
             $oeuvre = $repositoryOeuvres->findById($id);
             $obj = $oeuvre;
             $ImageOeuvre = $oeuvre[0]->getImage();
             $image = $ImageOeuvre->getUrl();
             //var_dump($idImage);
             // Créateur formulaire OEUVRE
             $formOeuvre = $this->createFormBuilder($tabOeuvre)->add('TrancheAge', 'entity', array('label' => 'Tranche d Age', 'class' => 'NarratioWebOeuvresBundle:TrancheAge', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getTrancheAge()))->add('Genre', 'entity', array('label' => 'Genre', 'class' => 'NarratioWebOeuvresBundle:Genre', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getGenre()))->add('Epoque', 'entity', array('label' => 'Epoque', 'class' => 'NarratioWebOeuvresBundle:Epoque', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getEpoque()))->add('Thematique', 'entity', array('label' => 'Thematique', 'class' => 'NarratioWebOeuvresBundle:Thematique', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getThematique()))->add('ProduitDerive', 'textarea', array('label' => 'Produits dérivés', 'required' => false, 'data' => $obj[0]->getProdDer()))->add('Concept', 'textarea', array('label' => 'Concept de l oeuvre', 'required' => false, 'data' => $obj[0]->getConcept()))->add('Image', 'url', array('label' => 'Image de l oeuvre', 'required' => false, 'data' => $image))->getForm();
             $monForm = $formOeuvre;
             break;
         case 'monFilm':
             // code...
             // je charge mon repository de Film pour executer une requete sur la BD
             $repositoryFilms = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Film');
             // j'execute la requete perso pour remplir un tableau de film en accord avec le formulaire de page d'acceuil
             $film = $repositoryFilms->findById($id);
             $obj = $film;
             //var_dump($film);
             $image = $film[0]->getImageFilm()->getUrl();
             $ImageFilm = $film[0]->getImageFilm();
             //var_dump($ImageFilm);
             // Créateur formulaire FILM
             $formFilm = $this->createFormBuilder($tabFilm)->add('Acteur', 'collection', array('label' => null, 'type' => new ActeurType(), 'required' => false, 'data' => $obj[0]->getActeurs(), 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false))->add('Realisateur', new RealisateurType(), array('label' => 'Realisateur', 'required' => false, 'data' => $obj[0]->getRealisateur()))->add('Type', 'entity', array('label' => 'Type', 'class' => 'NarratioWebOeuvresBundle:Type', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getType()))->add('Synopsis', 'textarea', array('label' => 'Synopsis', 'required' => false, 'data' => $obj[0]->getSynopsis()))->add('Annee', 'text', array('label' => 'Annee de parution', 'required' => false, 'data' => $obj[0]->getAnnee()))->add('Duree', 'integer', array('label' => 'Duree du film', 'required' => false, 'data' => $obj[0]->getDuree()))->add('Image', 'url', array('label' => 'Image du film', 'required' => false, 'data' => $image))->getForm();
             $monForm = $formFilm;
             break;
         case 'monLivre':
             // code...
             // je charge mon repository de Livre pour executer une requete sur la BD
             $repositoryLivres = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Livre');
             // j'execute la requete perso pour remplir un tableau de Livre en accord avec le formulaire de page d'acceuil
             $livre = $repositoryLivres->findById($id);
             $obj = $livre;
             //var_dump($livre);
             $image = $livre[0]->getImageLivre()->getUrl();
             $ImageLivre = $livre[0]->getImageLivre();
             //var_dump($ImageLivre);
             // Créateur formulaire LIVRE
             $formLivre = $this->createFormBuilder($tabLivre)->add('Resume', 'textarea', array('label' => 'Resume', 'required' => false, 'data' => $obj[0]->getResume()))->add('Annee', 'text', array('label' => 'Annee de parution', 'required' => false, 'data' => $obj[0]->getAnnee()))->add('Auteur', 'collection', array('label' => null, 'type' => new AuteurType(), 'required' => false, 'data' => $obj[0]->getAuteur(), 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false))->add('Editeur', new EditeurType(), array('label' => 'Editeur', 'required' => false, 'data' => $obj[0]->getEditeur()))->add('Image', 'url', array('label' => 'Image du livre', 'required' => false, 'data' => $image))->getForm();
             $monForm = $formLivre;
             break;
     }
     //var_dump($formLivre);
     if ($this->getRequest()->get('action-type-oeuvre') == 'Valider') {
         $formOeuvre->handleRequest($requeteUtilisateurO);
         $tabOeuvre = $formOeuvre->getData();
         // je recup mes variables
         $Epoque = $tabOeuvre['Epoque'];
         $Genre = $tabOeuvre['Genre'];
         $TrancheAge = $tabOeuvre['TrancheAge'];
         $Thematique = $tabOeuvre['Thematique'];
         $ProduitDerive = $tabOeuvre['ProduitDerive'];
         $Concept = $tabOeuvre['Concept'];
         $Image = $tabOeuvre['Image'];
         // je remet l'url a l'image
         $ImageOeuvre->setUrl($Image);
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($ImageOeuvre);
         $gestionnaireEntite->flush();
         // je charge mon repository de Oeuvre pour executer une requete sur la BD
         $repositoryOeuvres = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Oeuvre');
         // j'execute la requete perso pour remplir un tableau de oeuvre en accord avec le formulaire de page d'acceuil
         $oeuvre = $repositoryOeuvres->findById($id);
         $oeuvre = $oeuvre[0];
         $oeuvre->setEpoque($Epoque);
         $oeuvre->setGenre($Genre);
         $oeuvre->setTrancheAge($TrancheAge);
         $oeuvre->setThematique($Thematique);
         $oeuvre->setConcept($Concept);
         $oeuvre->setProdDer($ProduitDerive);
         $oeuvre->setImage($ImageOeuvre);
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($oeuvre);
         $gestionnaireEntite->flush();
         return $this->voirOeuvreAction($oeuvre->getId());
     }
     if ($this->getRequest()->get('action-type-film') == 'Valider') {
         $formFilm->handleRequest($requeteUtilisateurF);
         $tabFilm = $formFilm->getData();
         // je recup mes variables
         $Type = $tabFilm['Type'];
         $Synopsis = $tabFilm['Synopsis'];
         $Annee = $tabFilm['Annee'];
         $Realisateur = $tabFilm['Realisateur'];
         $Duree = $tabFilm['Duree'];
         $Acteur = $tabFilm['Acteur'];
         $Image = $tabFilm['Image'];
         // je remet l'url a l'image
         $ImageFilm->setUrl($Image);
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($ImageFilm);
         $gestionnaireEntite->flush();
         // je charge mon repository de Film pour executer une requete sur la BD
         $repositoryFilms = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Film');
         // j'execute la requete perso pour remplir un tableau de film en accord avec le formulaire de page d'acceuil
         $film = $repositoryFilms->findById($id);
         $film = $film[0];
         $film->setType($Type);
         $film->setSynopsis($Synopsis);
         $film->setAnnee($Annee);
         $film->setRealisateur($Realisateur);
         $film->setDuree($Duree);
         $film->setImageFilm($ImageFilm);
         $tabActeur = $Acteur->toArray();
         //var_dump($tabActeur);
         $acteurDuFilm = $film->getActeurs()->toArray();
         $w = 0;
         for ($w = 0; $w < count($acteurDuFilm); $w++) {
             if (in_array($acteurDuFilm[$w], $tabActeur) == false) {
                 //var_dump($auteurDuLivre[$w]);
                 $monActeur = $acteurDuFilm[$w];
                 $film->removeActeur($monActeur);
             } else {
             }
         }
         // je calcule mon indice d'arret pour trier et enlever les cases vide d'un tableau
         $indicesTab = array_keys($tabActeur);
         $lastIndice = $indicesTab[count($indicesTab) - 1];
         //var_dump($lastIndice);
         $tabTri = array();
         $v = 0;
         $b = 0;
         for ($v = 0; $v <= $lastIndice; $v++) {
             if (!empty($tabActeur[$v])) {
                 $tabTri[$b] = $tabActeur[$v];
                 $b++;
             }
         }
         $tabActeur = $tabTri;
         //var_dump($tabActeur);
         $repositoryActeur = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Acteur');
         $t = 0;
         for ($t = 0; $t < count($tabActeur); $t++) {
             if ($repositoryActeur->findById($tabActeur[$t]->getId()) != null) {
                 $leActeur = $repositoryActeur->findById($tabActeur[$t]->getId());
                 $leActeur = $leActeur[0];
                 $leActeur->setNom($tabActeur[$t]->getNom());
                 $leActeur->setPrenom($tabActeur[$t]->getPrenom());
                 $gestionnaireEntite = $this->getDoctrine()->getManager();
                 $gestionnaireEntite->persist($leActeur);
                 $gestionnaireEntite->flush();
             } else {
                 $monActeur = new Acteur();
                 $monActeur->setNom($tabActeur[$t]->getNom());
                 $monActeur->setPrenom($tabActeur[$t]->getPrenom());
                 $gestionnaireEntite = $this->getDoctrine()->getManager();
                 $gestionnaireEntite->persist($monActeur);
                 $gestionnaireEntite->flush();
                 $film->addActeur($monActeur);
             }
         }
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($film);
         $gestionnaireEntite->flush();
         return $this->voirOeuvreAction($film->getOeuvre()->getId());
     }
     if ($this->getRequest()->get('action-type-livre') == 'Valider') {
         $formLivre->handleRequest($requeteUtilisateurL);
         $tabLivre = $formLivre->getData();
         // je recup mes variables
         $Editeur = $tabLivre['Editeur'];
         $Resume = $tabLivre['Resume'];
         $Annee = $tabLivre['Annee'];
         $Auteur = $tabLivre['Auteur'];
         $Image = $tabLivre['Image'];
         // je remet l'url a l'image
         $ImageLivre->setUrl($Image);
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($ImageLivre);
         $gestionnaireEntite->flush();
         // je charge mon repository de Film pour executer une requete sur la BD
         $repositoryLivres = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Livre');
         // j'execute la requete perso
         $livre = $repositoryLivres->findById($id);
         $livre = $livre[0];
         $livre->setEditeur($Editeur);
         $livre->setResume($Resume);
         $livre->setAnnee($Annee);
         $livre->setImageLivre($ImageLivre);
         $tabAuteur = $Auteur->toArray();
         //var_dump($tabAuteur);
         $auteurDuLivre = $livre->getAuteur()->toArray();
         $w = 0;
         for ($w = 0; $w < count($auteurDuLivre); $w++) {
             if (in_array($auteurDuLivre[$w], $tabAuteur) == false) {
                 //var_dump($auteurDuLivre[$w]);
                 $monAuteur = $auteurDuLivre[$w];
                 $livre->removeAuteur($monAuteur);
             } else {
             }
         }
         //var_dump($auteurDuLivre);
         $repositoryAuteur = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Auteur');
         $t = 0;
         for ($t = 0; $t < count($tabAuteur) + 1; $t++) {
             if ($t == 1) {
             } else {
                 if ($repositoryAuteur->findById($tabAuteur[$t]->getId()) != null) {
                     $leAuteur = $repositoryAuteur->findById($tabAuteur[$t]->getId());
                     $leAuteur = $leAuteur[0];
                     $leAuteur->setNom($tabAuteur[$t]->getNom());
                     $leAuteur->setPrenom($tabAuteur[$t]->getPrenom());
                     $gestionnaireEntite = $this->getDoctrine()->getManager();
                     $gestionnaireEntite->persist($leAuteur);
                     $gestionnaireEntite->flush();
                 } else {
                     $monAuteur = new Auteur();
                     $monAuteur->setNom($tabAuteur[$t]->getNom());
                     $monAuteur->setPrenom($tabAuteur[$t]->getPrenom());
                     $gestionnaireEntite = $this->getDoctrine()->getManager();
                     $gestionnaireEntite->persist($monAuteur);
                     $gestionnaireEntite->flush();
                     $livre->addAuteur($monAuteur);
                 }
             }
         }
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($livre);
         $gestionnaireEntite->flush();
         return $this->voirOeuvreAction($livre->getOeuvre()->getId());
     }
     // Envoi du formulaire à la vue chargée de l'afficher
     return $this->render('NarratioWebOeuvresBundle:Default:modifierOeuvre.html.twig', array('type' => $type, 'id' => $id, 'monForm' => $monForm->createView(), 'obj' => $obj, 'image' => $image));
 }