]> Raphaƫl G. Git Repositories - airbundle/blobdiff - Controller/SessionController.php
Rename Command/Command in Command
[airbundle] / Controller / SessionController.php
index db556dcafd4ec8390ed2177ee6059d7dacf53bdc..b30d79ebd63cdb9b69e82f2b8e57ab42ec459b25 100644 (file)
@@ -47,7 +47,7 @@ class SessionController extends AbstractController {
                $this->context['cities'] = $this->doctrine->getRepository(Location::class)->findCitiesAsArray($this->period);
 
                //Add calendar
-               $this->context['calendar'] = $this->doctrine->getRepository(Session::class)->findAllByPeriodAsCalendarArray($this->period, !$this->isGranted('IS_AUTHENTICATED_REMEMBERED'), null, null, 1);
+               $this->context['calendar'] = $this->doctrine->getRepository(Session::class)->findAllByPeriodAsCalendarArray($this->period, !$this->checker->isGranted('IS_AUTHENTICATED_REMEMBERED'), null, null, 1);
 
                //Add dances
                $this->context['dances'] = $this->doctrine->getRepository(Dance::class)->findNamesAsArray();
@@ -59,7 +59,7 @@ class SessionController extends AbstractController {
                $response = new Response();
 
                //With logged user
-               if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
+               if ($this->checker->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
                        //Set last modified
                        $response->setLastModified(new \DateTime('-1 year'));
 
@@ -246,7 +246,7 @@ class SessionController extends AbstractController {
                $response = new Response();
 
                //With logged user
-               if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
+               if ($this->checker->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
                        //Set last modified
                        $response->setLastModified(new \DateTime('-1 year'));
 
@@ -418,10 +418,27 @@ class SessionController extends AbstractController {
                ]+$this->context['facebook'];
 
                //Create application form for role_guest
-               if ($this->isGranted('ROLE_GUEST')) {
+               if ($this->checker->isGranted('ROLE_GUEST')) {
                        //Set now
                        $now = new \DateTime('now');
 
+                       //Default favorites and dances
+                       $danceFavorites = $dances = [];
+                       //Default dance
+                       $danceDefault = null;
+
+                       //With admin
+                       if ($this->checker->isGranted('ROLE_ADMIN')) {
+                               //Get favorites dances
+                               $danceFavorites = $this->doctrine->getRepository(Dance::class)->findByUserId($this->getUser()->getId());
+
+                               //Get dances
+                               $dances = $this->doctrine->getRepository(Dance::class)->findAllIndexed();
+
+                               //Set dance default
+                               $danceDefault = !empty($this->context['session']['application'])?$dances[$this->context['session']['application']['dance']['id']]:null;
+                       }
+
                        //Create SessionType form
                        //TODO: move to named form ???
                        $sessionForm = $this->createForm('Rapsys\AirBundle\Form\SessionType', null, [
@@ -430,7 +447,16 @@ class SessionController extends AbstractController {
                                //Set the form attribute
                                'attr' => [ 'class' => 'col' ],
                                //Set admin
-                               'admin' => $this->isGranted('ROLE_ADMIN'),
+                               'admin' => $this->checker->isGranted('ROLE_ADMIN'),
+                               //Set dance choices
+                               'dance_choices' => $dances,
+                               //Set dance default
+                               'dance_default' => $danceDefault,
+                               //Set dance favorites
+                               'dance_favorites' => $danceFavorites,
+                               //Set to session slot or evening by default
+                               //XXX: default to Evening (3)
+                               'slot_default' => $this->doctrine->getRepository(Slot::class)->findOneById($this->context['session']['slot']['id']??3),
                                //Set default user to current
                                'user' => $this->getUser()->getId(),
                                //Set date
@@ -440,15 +466,15 @@ class SessionController extends AbstractController {
                                //Set length
                                'length' => $this->context['session']['length'],
                                //Set raincancel
-                               'raincancel' => ($this->isGranted('ROLE_ADMIN') || !empty($this->context['session']['application']['user']['id']) && $this->getUser()->getId() == $this->context['session']['application']['user']['id']) && $this->context['session']['rainfall'] >= 2,
+                               'raincancel' => ($this->checker->isGranted('ROLE_ADMIN') || !empty($this->context['session']['application']['user']['id']) && $this->getUser()->getId() == $this->context['session']['application']['user']['id']) && $this->context['session']['rainfall'] >= 2,
                                //Set cancel
-                               'cancel' => $this->isGranted('ROLE_ADMIN') || in_array($this->getUser()->getId(), explode("\n", $this->context['session']['sau_id'])),
+                               'cancel' => $this->checker->isGranted('ROLE_ADMIN') || in_array($this->getUser()->getId(), explode("\n", $this->context['session']['sau_id'])),
                                //Set modify
-                               'modify' => $this->isGranted('ROLE_ADMIN') || !empty($this->context['session']['application']['user']['id']) && $this->getUser()->getId() == $this->context['session']['application']['user']['id'] && $this->context['session']['stop'] >= $now && $this->isGranted('ROLE_REGULAR'),
+                               'modify' => $this->checker->isGranted('ROLE_ADMIN') || !empty($this->context['session']['application']['user']['id']) && $this->getUser()->getId() == $this->context['session']['application']['user']['id'] && $this->context['session']['stop'] >= $now && $this->checker->isGranted('ROLE_REGULAR'),
                                //Set move
-                               'move' => $this->isGranted('ROLE_ADMIN') || !empty($this->context['session']['application']['user']['id']) && $this->getUser()->getId() == $this->context['session']['application']['user']['id'] && $this->context['session']['stop'] >= $now && $this->isGranted('ROLE_SENIOR'),
+                               'move' => $this->checker->isGranted('ROLE_ADMIN') || !empty($this->context['session']['application']['user']['id']) && $this->getUser()->getId() == $this->context['session']['application']['user']['id'] && $this->context['session']['stop'] >= $now && $this->checker->isGranted('ROLE_SENIOR'),
                                //Set attribute
-                               'attribute' => $this->isGranted('ROLE_ADMIN') && $this->context['session']['locked'] === null,
+                               'attribute' => $this->checker->isGranted('ROLE_ADMIN') && $this->context['session']['locked'] === null,
                                //Set session
                                'session' => $this->context['session']['id']
                        ]);
@@ -468,7 +494,7 @@ class SessionController extends AbstractController {
                                $userObject = $this->getUser();
 
                                //Replace with requested user for admin
-                               if ($this->isGranted('ROLE_ADMIN') && !empty($data['user'])) {
+                               if ($this->checker->isGranted('ROLE_ADMIN') && !empty($data['user'])) {
                                        $userObject = $this->doctrine->getRepository(User::class)->findOneById($data['user']);
                                }
 
@@ -491,7 +517,7 @@ class SessionController extends AbstractController {
                                ];
 
                                //With raincancel and application and (rainfall or admin)
-                               if ($action['raincancel'] && ($application = $sessionObject->getApplication()) && ($sessionObject->getRainfall() >= 2 || $this->isGranted('ROLE_ADMIN'))) {
+                               if ($action['raincancel'] && ($application = $sessionObject->getApplication()) && ($sessionObject->getRainfall() >= 2 || $this->checker->isGranted('ROLE_ADMIN'))) {
                                        //Cancel application at start minus one day
                                        $application->setCanceled($canceled);
 
@@ -523,7 +549,19 @@ class SessionController extends AbstractController {
                                //With modify
                                } elseif ($action['modify']) {
                                        //With admin
-                                       if ($this->isGranted('ROLE_ADMIN')) {
+                                       if ($this->checker->isGranted('ROLE_ADMIN')) {
+                                               //Get application
+                                               $application = $this->doctrine->getRepository(Application::class)->findOneBySessionUser($sessionObject, $userObject);
+
+                                               //Set dance
+                                               $application->setDance($data['dance']);
+
+                                               //Queue session save
+                                               $this->manager->persist($application);
+
+                                               //Set slot
+                                               $sessionObject->setSlot($data['slot']);
+
                                                //Set date
                                                $sessionObject->setDate($data['date']);
                                        }