<?php
namespace App\Controller;
use App\Entity\Task;
use App\Repository\TaskRepository;
use App\Repository\TaskStatutRepository;
use App\Service\RoleService;
use App\Service\StatutService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class IndexController extends BaseController
{
/**
* @Route("/", name="index")
*/
public function index(): Response
{
return $this->redirectToRoute('app_login');
// return $this->render('index/index.html.twig', [
// 'controller_name' => 'IndexController',
// ]);
}
/**
* @Route("/task/{id}/change/statut/", name="task_change_statut", methods={"POST","GET"})
* @param Request $request
* @param Task $task
* @param TaskStatutRepository $taskStatutRepository
* @return Response
*/
public function changeStatut(Request $request, Task $task, TaskStatutRepository $taskStatutRepository): Response
{
if ($request->isMethod("POST")){
$statutId = $request->request->get("statut_id");
$statut = $taskStatutRepository->findOneBy(['id' => $statutId]);
}else{
$statutName = $request->query->get("statut_name");
$statut = $taskStatutRepository->findByName($statutName);
}
$taskStatut = $task->getTaskStatus();
$statusNeedRealTimes = [StatutService::PENDING,StatutService::WAITING_CONFIRMATION];
$defaultTimeUndoing = $this->getParameter('default_time_undoing');
if ($task and $statut ){
if ($taskStatut && in_array($taskStatut->getName(), $statusNeedRealTimes, true)){
$task->setRealTimeElapsed($task->getRealTimeElapsed() + $defaultTimeUndoing);
}
$task->setTaskStatus($statut);
$this->save($task);
$this->addFlash('success', 'Changement de statut efféctué avec succées');
}
return $this->redirectToRoute($this->getUserType() . '_task_show', ['id' => $task->getId()],
Response::HTTP_SEE_OTHER);
}
/**
* @Route("/task/{id}/reestimate", name="task_reestimate", methods={"POST","GET"})
* @param Request $request
* @param Task $task
* @param TaskStatutRepository $taskStatutRepository
* @return Response
*/
public function reestimate(Request $request, Task $task, TaskStatutRepository $taskStatutRepository): Response
{
$statut = $taskStatutRepository->findByName(StatutService::WAITING_ESTIMATITON);
if ($task and $statut ){
$task->setEstimatedTime(null);
$task->setTaskStatus($statut);
$this->save($task);
$this->addFlash('success', 'Demande de reestimation effectuer ');
}
return $this->redirectToRoute($this->getUserType() . '_task_show', ['id' => $task->getId()],
Response::HTTP_SEE_OTHER);
}
/**
* @Route("/setreal/estimated/time-elapsed/", name="task_set_real_and_estimated_time", methods={"POST"})
* @param Request $request
* @param TaskRepository $taskRepository
* @return RedirectResponse
*/
public function setEstimatedOrRealTime(Request $request, TaskRepository $taskRepository): RedirectResponse
{
$data = $request->request->all();
$taskId = $data['taskId'];
$task = $taskRepository->findOneBy(['id' => $taskId]);
if (array_key_exists('estimatedTime',$data)){
$task->setEstimatedTime($data['estimatedTime']);
}elseif(array_key_exists('realTime',$data)){
$realTime = $task->getRealTimeElapsed() + $data['realTime'];
$task->setRealTimeElapsed($realTime);
}
//dd($task);
$this->entityManager->persist($task);
$this->entityManager->flush();
$this->addFlash('success', 'Enregistrement efféctué avec succès');
return $this->redirectToRoute($this->getUserType() . '_task_index');
}
/**
* @Route("/{id}/set-real-and-estimated-time-elapsed", name="task_set_real_time_elapsed", methods={"POST"})
* @param Task $task
* @param Request $request
* @param TaskStatutRepository $taskStatutRepository
* @return Response
*/
public function setRealTime(Task $task, Request $request,
TaskStatutRepository $taskStatutRepository): Response
{
$realTimeElapsed = $request->request->get("taskRealTimeElapsed");
$estimatedTime = $request->request->get('estimatedTime');
$realtimeOld = $task->getRealTimeElapsed();
if ($estimatedTime){
$task->setEstimatedTime($estimatedTime);
}elseif ($realTimeElapsed){
$task->setRealTimeElapsed($realtimeOld + $realTimeElapsed);
}
//dd($task);
$this->save($task);
return $this->redirectToRoute($this->getUserType() . '_task_show',['id' => $task->getId()]);
}
}