<?php
namespace App\Controller;
use App\Entity\Action;
use App\Form\UserProfileType;
use App\Service\Datatable\DtTask;
use FOS\UserBundle\Model\UserManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
/**
* @Route("/user")
* @Security("has_role('ROLE_USER')")
*
*/
class UserController extends AbstractController
{
/**
* @Route("/profile", name="user_profile", methods={"GET","POST"})
*/
public function index( Request $request, UserManagerInterface $userManager )
{
$form = $this->createForm(UserProfileType::class, $this->getUser());
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$userManager->updateUser($this->getUser());
return $this->redirectToRoute('user_profile' );
}
return $this->render('user/profile.html.twig', [
'controller_name' => 'UserController',
'user' => $this->getUser(),
'form' => $form->createView()
]);
}
/**
* @Route("/task", name="user_tasks", methods={"GET","POST"})
*/
public function taskList( Request $request, DtTask $dtTask )
{
$table = $dtTask->getList($request);
if ($table->isCallback()) {
return $table->getResponse();
}
return $this->render('admin/task/list.html.twig', [
'datatable' => $table,
]);
}
/**
* @Route("/task/{id}", name="user_tasks_complete", methods={"PUT"})
*/
public function deleteBooking(Request $request, Action $action): Response
{
if ($this->isCsrfTokenValid('complete'.$action->getId(), $request->request->get('_token'))
&& $action->canClose($this->getUser()) || $this->getUser()->hasRole('ROLE_ACTION_ADMIN')) {
$action->setCompleted(true);
$this->getDoctrine()->getManager()->persist($action);
$this->getDoctrine()->getManager()->flush();
$this->addFlash('success', 'Task marked as <b>completed</b>.');
} else {
$this->addFlash('danger', 'Failed to close the task.');
}
return $this->redirectToRoute('user_tasks');
}
}