src/KinuInk/AlumniBundle/Controller/AlumniController.php line 34

Open in your IDE?
  1. <?php
  2. namespace KinuInk\AlumniBundle\Controller;
  3. use KinuInk\AlumniBundle\Entity\Alumni;
  4. use KinuInk\AlumniBundle\Entity\Promotion;
  5. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Security\Core\Security;
  10. use Symfony\Component\HttpFoundation\File\UploadedFile;
  11. use KinuInk\AlumniBundle\Service\FileUploader;
  12. use Symfony\Component\HttpFoundation\File\File;
  13. /**
  14.  * Promotion Controller
  15.  * @Route("/")
  16.  */
  17. class AlumniController extends AbstractController
  18. {
  19.     
  20.     /**
  21.      * @Route("/", name="alumni_default")
  22.      * @Method("GET")
  23.      */
  24.     public function homeAction(Request $request)
  25.     {
  26.         /** @var $session \Symfony\Component\HttpFoundation\Session\Session */
  27.         $session $request->getSession();
  28.         
  29.         $lastUsernameKey Security::LAST_USERNAME;
  30.         
  31.         // last username entered by the user
  32.         $lastUsername = (null === $session) ? '' $session->get($lastUsernameKey);
  33.         
  34.         $csrfToken $this->has('security.csrf.token_manager')
  35.             ? $this->get('security.csrf.token_manager')->getToken('authenticate')->getValue()
  36.             : null;
  37.         
  38.         return $this->render('@KinuInkAlumni/Alumni/index.html.twig', array(
  39.             'last_username' => $lastUsername,
  40.             'csrf_token' => $csrfToken
  41.         ));
  42.     }
  43.     /**
  44.      * Display a profile
  45.      * @Route("/profile", name="alumni_profile")
  46.      * @Method("GET")
  47.      */
  48.     public function indexAction(Request $request)
  49.     {
  50.         $user $this->getUser();
  51.         
  52.         if ($user and !$user->hasRole('ROLE_ALUMNI')) {
  53.             return $this->redirectToRoute('_slug');
  54.         }
  55.         
  56.         //$this->denyAccessUnlessGranted('ROLE_ALUMNI');
  57.         //$user = $this->getUser();*
  58.         $alumni $user->getAlumni() ?: [];
  59.         if (empty($alumni)){
  60.             return $this->redirectToRoute('alumni_add');
  61.         }
  62.         $promotion = new Promotion();
  63.         $form $this->createForm('KinuInk\AlumniBundle\Form\PromotionType'$promotion);
  64.         $form->handleRequest($request);
  65.         return $this->render('@KinuInkAlumni/Alumni/profile.html.twig', array(
  66.             'alumni' => $alumni,
  67.             'form' => $form->createView()
  68.         ));
  69.     }
  70.     /**
  71.      * Add a details information in profile
  72.      * @Route("/add", name="alumni_add")
  73.      * @Method({"GET", "POST"})
  74.      */
  75.     public function newAction(Request $request)
  76.     {
  77.         $this->denyAccessUnlessGranted('ROLE_ALUMNI');
  78.         if ($user $this->getUser() and !$user->getAlumni())
  79.         {
  80.             $alumni = new Alumni();
  81.             $promotion = new Promotion();
  82.             $form $this->createForm('KinuInk\AlumniBundle\Form\AlumniType'$alumni);
  83.             $form->handleRequest($request);
  84.             $form_error = [];
  85.             if ($form->isSubmitted())
  86.             {
  87.                 if ($form->isValid())
  88.                 {
  89.                     $em $this->getDoctrine()->getManager();
  90.                     $user->setAlumni($alumni);
  91.                     $promotion->setAlumni($alumni);
  92.                     $promotion->setFormation($form['formation']->getData());
  93.                     $promotion->setAnneePromotion($form['anneeDePromotion']->getData());
  94.                     $alumni->addFormation($promotion->getFormation());
  95.                     $em->persist($promotion);
  96.                     $em->persist($alumni);
  97.                     $em->flush();
  98.                     return $this->redirectToRoute('alumni_profile');
  99.                 }
  100.                 $form_error $form->getErrors(true);
  101.             }
  102.             return $this->render('@KinuInkAlumni/Alumni/new.html.twig', array(
  103.                 'alumni' => $alumni,
  104.                 'form' => $form->createView(),
  105.                 'form_errors' => $form_error,
  106.             ));
  107.         } else {
  108.             return $this->redirectToRoute('/');
  109.         }
  110.     }
  111.     /**
  112.      * Edit a profile
  113.      * @Route("/edit", name="alumni_edit")
  114.      * @Method({"GET", "POST"})
  115.      */
  116.     public function editAction(Request $request)
  117.     {
  118.         $this->denyAccessUnlessGranted('ROLE_ALUMNI');
  119.         if ($user $this->getUser() and $user->getAlumni())
  120.         {
  121.             $editForm $this->createForm('KinuInk\AlumniBundle\Form\AlumniEditType'$user->getAlumni());
  122.             $editForm->handleRequest($request);
  123.             $form_error = [];
  124.             if ($editForm->isSubmitted())
  125.             {
  126.                 if ($editForm->isValid())
  127.                 {
  128.                     $file $user->getAlumni()->getFile();
  129.                     if ($file instanceof UploadedFile) {
  130.                         $fileUploader = new FileUploader($this->getParameter('avatars_directory'));
  131.                         $fileName $fileUploader->upload($file$user->getAlumni()->getAvatar());
  132.                         $user->getAlumni()->setAvatar(
  133.                             $fileName
  134.                         );
  135.                     }
  136.                     
  137.                     $this->getDoctrine()->getManager()->persist($user->getAlumni());
  138.                     $this->getDoctrine()->getManager()->flush();
  139.                     return $this->redirectToRoute('alumni_profile');
  140.                 }
  141.                 $form_error $editForm->getErrors(true);
  142.             }
  143.             return $this->render('@KinuInkAlumni/Alumni/edit.html.twig', array(
  144.                 'edit_form' => $editForm->createView(),
  145.                 'form_errors' => $form_error,
  146.             ));
  147.         } else {
  148.             return $this->redirectToRoute('/');
  149.         }
  150.     }
  151.     /**
  152.      * @Route("/ajouter-promotion", name="alumni_add_promotion")
  153.      * @Method({"POST"})
  154.      */
  155.     public function addPromotionAction(Request $request)
  156.     {
  157.         $this->denyAccessUnlessGranted('ROLE_ALUMNI');
  158.         if ($user $this->getUser() and $user->getAlumni())
  159.         {
  160.             $promotion = new Promotion();
  161.             $form $this->createForm('KinuInk\AlumniBundle\Form\PromotionType'$promotion);
  162.             $form->handleRequest($request);
  163.             if ($form->isSubmitted() && $form->isValid())
  164.             {
  165.                 $em $this->getDoctrine()->getManager();
  166.                 $promotion->setAlumni($user->getAlumni());
  167.                 $user->getAlumni()->addFormation($promotion->getFormation());
  168.                 $em->persist($promotion);
  169.                 $em->flush();
  170.                 return $this->redirectToRoute('alumni_profile');
  171.             }
  172.         } else {
  173.             return $this->redirectToRoute('alumni_profile');
  174.         }
  175.     }
  176. }