X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/bf7340106f67f4bd1e22bf1f831b39673257fdec..eb1f263248166f36f5eb7dc17e39721e80b3e7c2:/Controller/SessionController.php?ds=sidebyside diff --git a/Controller/SessionController.php b/Controller/SessionController.php index db556dc..b2dde1d 100644 --- a/Controller/SessionController.php +++ b/Controller/SessionController.php @@ -33,7 +33,7 @@ class SessionController extends AbstractController { /** * List all sessions * - * @desc Display all sessions with an application or login form + * Display all sessions with an application or login form * * @param Request $request The request instance * @@ -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')); @@ -139,7 +139,7 @@ class SessionController extends AbstractController { $dances = implode($this->translator->trans(' and '), array_filter(array_merge([implode(', ', array_slice($dances, 0, -1))], array_slice($dances, -1)), 'strlen')); //Set title - $this->context['title'] = $this->translator->trans('%dances% %cities% sessions', ['%dances%' => $dances, '%cities%' => $cities]); + $this->context['title']['page'] = $this->translator->trans('%dances% %cities% sessions', ['%dances%' => $dances, '%cities%' => $cities]); //Set description $this->context['description'] = $this->translator->trans('%dances% indoor and outdoor session calendar %cities%', ['%dances%' => $dances, '%cities%' => $cities]); @@ -151,7 +151,7 @@ class SessionController extends AbstractController { /** * List all sessions for tango argentin * - * @desc Display all sessions in tango argentin json format + * Display all sessions in tango argentin json format * * @todo Drop it if unused by tangoargentin ??? * @@ -192,7 +192,7 @@ class SessionController extends AbstractController { 'status' => in_array('canceled', $session['class'])?'annulé':'confirmé', 'modified' => $session['modified']->format(\DateTime::ISO8601), #'organizer' => $session['application']['user']['title'], - #'source' => $this->router->generate('rapsys_air_session_view', ['id' => $sessionId, 'location' => $this->translator->trans($session['l_title'])], UrlGeneratorInterface::ABSOLUTE_URL) + #'source' => $this->router->generate('rapsysair_session_view', ['id' => $sessionId, 'location' => $this->translator->trans($session['l_title'])], UrlGeneratorInterface::ABSOLUTE_URL) 'source' => $this->router->generate($route, $routeParams, UrlGeneratorInterface::ABSOLUTE_URL) ]; } @@ -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')); @@ -348,7 +348,7 @@ class SessionController extends AbstractController { //With application if (!empty($this->context['session']['application'])) { //Set title - $this->context['title'] = $this->translator->trans('%dance% %id% by %pseudonym%', ['%id%' => $id, '%dance%' => $this->context['session']['application']['dance']['title'], '%pseudonym%' => $this->context['session']['application']['user']['title']]); + $this->context['title']['page'] = $this->translator->trans('%dance% %id% by %pseudonym%', ['%id%' => $id, '%dance%' => $this->context['session']['application']['dance']['title'], '%pseudonym%' => $this->context['session']['application']['user']['title']]); //Set description $this->context['description'] = ucfirst($this->translator->trans('%dance% %location% %city% %slot% on %date% at %time%', [ @@ -372,7 +372,7 @@ class SessionController extends AbstractController { //Without application } else { //Set title - $this->context['title'] = $this->translator->trans('Session %id%', ['%id%' => $id]); + $this->context['title']['page'] = $this->translator->trans('Session %id%', ['%id%' => $id]); //Set description $this->context['description'] = ucfirst($this->translator->trans('%location% %city% %slot% on %date% at %time%', [ @@ -395,12 +395,12 @@ class SessionController extends AbstractController { $this->context['section'] = $this->context['session']['location']['title']; //Set facebook title - $this->context['facebook']['metas']['og:title'] = $this->context['title'].' '.$this->context['session']['location']['at']; + $this->context['facebook']['og:title'] = $this->context['title']['page'].' '.$this->context['session']['location']['at']; //Set facebook image - $this->context['facebook'] = [ + $this->context['fbimage'] = [ 'texts' => [ - $this->context['session']['application']['user']['title']??$this->context['title'] => [ + $this->context['session']['application']['user']['title']??$this->context['title']['page'] => [ 'font' => 'irishgrover', 'size' => 110 ], @@ -418,21 +418,47 @@ 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->security->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, [ + $sessionForm = $this->factory->create('Rapsys\AirBundle\Form\SessionType', null, [ //Set the action - 'action' => $this->generateUrl('rapsys_air_session_view', ['id' => $id, 'location' => $this->context['session']['location']['slug'], 'dance' => $this->context['session']['application']['dance']['slug']??null, 'user' => $this->context['session']['application']['user']['slug']??null]), + 'action' => $this->generateUrl('rapsysair_session_view', ['id' => $id, 'location' => $this->context['session']['location']['slug'], 'dance' => $this->context['session']['application']['dance']['slug']??null, 'user' => $this->context['session']['application']['user']['slug']??null]), //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(), + 'user' => $this->security->getUser()->getId(), //Set date 'date' => $this->context['session']['date'], //Set begin @@ -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->security->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->security->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->security->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->security->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'] ]); @@ -465,10 +491,10 @@ class SessionController extends AbstractController { $sessionObject = $this->doctrine->getRepository(Session::class)->findOneById($id); //Set user - $userObject = $this->getUser(); + $userObject = $this->security->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']); } @@ -706,7 +744,7 @@ class SessionController extends AbstractController { $this->manager->flush(); //Redirect to cleanup the form - return $this->redirectToRoute('rapsys_air_session_view', ['id' => $id, 'location' => $this->context['session']['location']['slug'], 'dance' => $this->context['session']['application']['dance']['slug']??null, 'user' => $this->context['session']['application']['user']['slug']??null]); + return $this->redirectToRoute('rapsysair_session_view', ['id' => $id, 'location' => $this->context['session']['location']['slug'], 'dance' => $this->context['session']['application']['dance']['slug']??null, 'user' => $this->context['session']['application']['user']['slug']??null]); } //Add form to context