/**
* 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
*
$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();
$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'));
$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]);
/**
* 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 ???
*
'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)
];
}
$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'));
//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%', [
//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%', [
$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
],
]+$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
//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']
]);
$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']);
}
];
//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);
//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']);
}
$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