2012-07-31 09:09:52 +00:00
< ? php
namespace KekRozsak\FrontBundle\Controller ;
use Symfony\Bundle\FrameworkBundle\Controller\Controller ;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route ;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template ;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter ;
2012-08-09 16:36:08 +00:00
use Symfony\Component\Security\Core\Exception\AccessDeniedException ;
2012-07-31 09:09:52 +00:00
use KekRozsak\FrontBundle\Entity\Event ;
class EventController extends Controller
{
2012-08-16 13:52:41 +00:00
/**
* @ Route ( " /esesmeny/ { startDate}/ { eventSlug} " , name = " KekRozsakFrontBundle_eventView " )
* @ Template ()
* @ ParamConverter ( " event " , class = " KekRozsakFrontBundle:Event " , options = { " mapping " = { " eventSlug " = " slug " , " startDate " = " startDate " }})
* @ ParamConverter ( " startDate " , class = " DateTime " , options = { " format " = " Y-m-d " })
2012-08-17 14:18:43 +00:00
*
* @ param DateTime $startDate
* @ param KekRozsak\FrontBundle\Entity\Event $event
* @ return array
2012-08-16 13:52:41 +00:00
*/
public function viewAction ( \DateTime $startDate , Event $event )
{
if ( $event -> getGroup () !== null ) {
if ( ! $event -> getGroup () -> isMember ( $this -> get ( 'security.context' ) -> getToken () -> getUser ())) {
throw new AccessDeniedException ( 'Ehhez az eseményhez nem csatlakozhatsz, mivel a csoportjának nem vagy tagja.' );
}
}
return array (
'event' => $event ,
);
}
2012-07-31 09:09:52 +00:00
2012-08-16 13:52:41 +00:00
/**
* @ Route ( " /esemeny/ { startDate}/ { eventSlug}/csatlakozas " , name = " KekRozsakFrontBundle_eventJoin " )
* @ Template ()
* @ ParamConverter ( " event " , class = " KekRozsakFrontBundle:Event " , options = { " mapping " = { " eventSlug " : " slug " , " startDate " : " startDate " }})
* @ ParamConverter ( " startDate " , class = " DateTime " , options = { " format " = " Y-m-d " })
2012-08-17 14:18:43 +00:00
*
* @ param DateTime $startDate
* @ param KekRozsak\FrontBundle\Entity\Event $event
* @ return array
2012-08-16 13:52:41 +00:00
*/
public function joinAction ( \DateTime $startDate , Event $event )
{
$user = $this -> get ( 'security.context' ) -> getToken () -> getUser ();
2012-07-31 09:09:52 +00:00
2012-08-16 13:52:41 +00:00
if ( $event -> getGroup () !== null ) {
if ( ! $event -> getGroup () -> isMember ( $user )) {
throw new AccessDeniedException ( 'Ehhez az eseményhez nem csatlakozhatsz, mivel a csoportjának nem vagy tagja.' );
}
}
2012-07-31 09:09:52 +00:00
2012-08-16 13:52:41 +00:00
$event -> addAttendee ( $user );
2012-07-31 09:09:52 +00:00
2012-08-16 13:52:41 +00:00
$em = $this -> getDoctrine () -> getEntityManager ();
$em -> persist ( $event );
$em -> flush ();
2012-07-31 09:09:52 +00:00
2012-08-16 13:52:41 +00:00
return $this -> redirect ( $this -> generateUrl ( 'KekRozsakFrontBundle_eventView' , array (
'eventDate' => $eventDate ,
'eventSlug' => $eventSlug ,
)));
}
2012-07-31 09:09:52 +00:00
2012-08-16 13:52:41 +00:00
/**
* @ Route ( " /esemenyek/ { date} " , name = " KekRozsakFrontBundle_eventList " , defaults = { " date " : null })
* @ Template ()
2012-08-17 14:18:43 +00:00
*
* @ param string $date
* @ return array
2012-08-16 13:52:41 +00:00
*/
public function listAction ( $date = null )
{
$realDate = null ;
2012-07-31 09:09:52 +00:00
2012-08-16 13:52:41 +00:00
if ( $date === null ) {
$query = $this -> getDoctrine () -> getEntityManager () -> createQuery ( 'SELECT e FROM KekRozsakFrontBundle:Event e WHERE e.cancelled = FALSE AND (e.startDate >= :day OR (e.startDate <= :day AND e.endDate >= :day))' );
$query -> setParameter ( 'day' , new \DateTime ( 'now' ), \Doctrine\DBAL\Types\Type :: DATE );
} else {
$realDate = \DateTime :: createFromFormat ( 'Y-m-d' , $date );
$query = $this -> getDoctrine () -> getEntityManager () -> createQuery ( 'SELECT e FROM KekRozsakFrontBundle:Event e WHERE e.cancelled = FALSE AND ((e.startDate < :day AND e.endDate >= :day) OR e.startDate = :day)' );
$query -> setParameter ( 'day' , $realDate , \Doctrine\DBAL\Types\Type :: DATE );
}
$events = $query -> getResult ();
2012-08-15 16:07:46 +00:00
2012-08-16 13:52:41 +00:00
return array (
'day' => $realDate ,
'events' => $events ,
);
}
2012-07-31 23:26:25 +00:00
2012-08-16 13:52:41 +00:00
/**
* @ Route ( " /esemenyek/ { date}/ajax-lista. { _format} " , name = " KekRozsakFrontBundle_eventAjaxList " , requirements = { " _format " : " html " })
* @ Template ()
* @ ParamConverter ( " date " , options = { " format " : " Y-m-d " })
2012-08-17 14:18:43 +00:00
*
* @ param DateTime $date
* @ return array
2012-08-16 13:52:41 +00:00
*/
public function ajaxListAction ( \DateTime $date )
{
$query = $this -> getDoctrine () -> getEntityManager () -> createQuery ( 'SELECT e FROM KekRozsakFrontBundle:Event e WHERE e.cancelled = FALSE AND ((e.startDate < :day AND e.endDate >= :day) OR e.startDate = :day)' );
$query -> setParameter ( 'day' , $date , \Doctrine\DBAL\Types\Type :: DATE );
$events = $query -> getResult ();
2012-07-31 23:26:25 +00:00
2012-08-16 13:52:41 +00:00
return array (
'day' => $date ,
'events' => $events ,
);
}
2012-07-31 09:09:52 +00:00
}