<?php
namespace App\Controller;
use App\Entity\Resource;
use App\Repository\BookingRepository;
use App\Repository\ResourceRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
/**
* @Security("is_granted('ROLE_USER')")
*/
class DashboardController extends AbstractController
{
/**
* @Route("/dashboard", name="dashboard")
* @Security("is_granted('ROLE_EVENT_USER') or is_granted('ROLE_RESOURCE_USER') ")
*/
public function index(BookingRepository $bookingRepository, ResourceRepository $resourceRepository, Request $request)
{
if ($request->cookies->has('ui_dash_sorting-ui')) {
switch ($request->cookies->get('ui_dash_sorting-ui')) {
case 'start_desc':
$order = ['start', 'DESC'];
break;
case 'cr_desc':
$order = ['createdAt', 'DESC'];
break;
case 'cr_asc':
$order = ['createdAt','ASC'];
break;
case 'start_asc':
default:
$order = ['start','ASC'];
}
} else {
$order = ['start','ASC'];
}
if ($request->cookies->has('ui_dash_filtering-ui')){
$resource = $resourceRepository->find($request->cookies->get('ui_dash_filtering-ui'));
} else {
$resource = null;
}
$filtering = [];
if ($request->cookies->has('ui_dash_filtering-ui-user') &&
$request->cookies->get('ui_dash_filtering-ui-user')){
$filtering['owner'] = 1;
} else {
$filtering['owner'] = 0;
}
if ($request->cookies->has('ui_dash_filtering-ui-state') &&
$request->cookies->get('ui_dash_filtering-ui-state')
){
$filtering['state'] = 1;
$processingStates = ['processing','rejected','waiting'];
$completedStates = ['cancelled','approved','expired'];
} else {
$filtering['state'] = 0;
$processingStates = ['processing','waiting'];
$completedStates = ['approved'];
}
if ($resource) {
$acResource = new ArrayCollection([$resource]);
} else {
$acResource = null;
}
$enquiry = $bookingRepository->findUpcomingByState(
['enquiry'],
null,
($filtering['owner'] ? $this->getUser() : null ),
$acResource,
100,
$order
);
$processing = $bookingRepository->findUpcomingByState(
$processingStates,
null,
($filtering['owner'] ? $this->getUser() : null ),
$acResource,
100,
$order
);
$completed = $bookingRepository->findUpcomingByState(
$completedStates,
null,
($filtering['owner'] ? $this->getUser() : null ),
$acResource,
100,
$order
);
$resources = $resourceRepository->findAll();
return $this->render('dashboard/index.html.twig', [
'enquiry'=>$enquiry,
'processing'=>$processing,
'completed'=>$completed,
'resources'=>$resources,
'resource'=>$resource,
'filter' => $filtering,
'controller_name' => 'DashboardController',
]);
}
/**
* @Route("/diary", name="diary")
* @Route("/diary/{id}", name="diary_res")
* @Security("is_granted('ROLE_EVENT_USER') or is_granted('ROLE_RESOURCE_USER') ")
*/
public function diary(Request $request, Resource $resource)
{
return $this->render('resource/show.html.twig', [
'resource' => $resource,
]);
}
/**
* @Route("/ediary", name="ediary")
* @Security("is_granted('ROLE_EVENT_USER') or is_granted('ROLE_RESOURCE_USER') ")
*/
public function eventsDiary(Request $request)
{
return $this->render('event/calendar.html.twig', [
]);
}
}