<?php
namespace App\Controller;
use App\Entity\CategoryProject;
use App\Entity\CategoryTask;
use App\Entity\Company;
use App\Entity\Document;
use App\Entity\Project;
use App\Entity\ProjectSearch;
use App\Entity\Task;
use App\Form\CompanyType;
use App\Form\DocumentType;
use App\Form\ProjectSearchType;
use App\Form\ProjectType;
use App\Form\TaskType;
use App\Repository\CompanyRepository;
use App\Repository\PlaceRepository;
use App\Repository\ProjectRepository;
use App\Repository\TaskRepository;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TimeType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Security;
//added by abdel
use DateTime;
use App\Utils\UtilsFunc;
class ListTasksUserController extends AbstractController
{
/**
* @Route("/list-tasks-user", name="list_tasks_user")
*/
public function displayListTasksUser(taskRepository $taskRepository,CompanyRepository $companyRepository)
{
$user=$this->getUser();
// check or Find Task activ in Timer if exists
$task_activ=$taskRepository->findOneBy(array('user' => $user,'statusTask' => 1));
if (!$task_activ) {$task_activ=''; $date= new DateTime();$date_timer= date('Y-m-d H:i:s');}
else { $date = $task_activ->getStartAt();$date_timer= $date->format('Y-m-d H:i:s');}
$start_date='2021-01-01';
$end_date=date("Y-m-d");
//$end_date = date('y:m:d', time() + 86400);
$end_date = date('Y:m:d 23:59:59');
// $end_date ='2022-11-11';
//echo $end_date;
$month="";$year="";
// ??? $companies=$user->getCompanies();
$companies=$companyRepository->findAll();
$tasks=$taskRepository->findAllTasksOfUsersAndCompaniesinPeriod($user,$companies, $month, $year,$start_date,$end_date);
return $this->render('ab_user_list_tasks/index.html.twig', [
'tasks' => $tasks,
'task_activ'=>$task_activ,
'date_timer'=>$date_timer,
]);
}
/************ Quick modify task (date - desc/Place)***************************************/
/**
* @Route("/edit-date-task-modal-{id}", name="edit_date_task_modal")
*/
public function editDateTaskInModal(Task $task, EntityManagerInterface $entityManager, Request $request)
{
if ($task->getUser() != $this->getUser()){
return $this->redirectToRoute('show_project',['id'=>$task->getProject()->getId()]);
}
$project=$task->getProject();
$form = $this->createForm(TaskType::class,$task,array('categoryProject' => $task->getProject()->getCategory()));
$form->remove('start_at');
$form->remove('end_at');
$form->remove('durationHours');
$form->remove('durationMinutes');
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid())
{
$otherCategoryCheckbox = $form->get('otherCategoryCheckbox')->getData();
$otherCategory = $form->get('otherCategory')->getData();
if ($otherCategoryCheckbox){
$newCategoryTask = new CategoryTask();
$newCategoryTask->setCategoryName($otherCategory);
$newCategoryTask->setCategoryProject($project->getCategory());
$entityManager->persist($newCategoryTask);
$task->setCategoryTask($newCategoryTask);
}
$start_task_date = $request->request->get('start_task_date');
$end_task_date = $start_task_date;
$timeFrom = $request->request->get('timeFrom');
$timeTo = $request->request->get('timeTo');
$startAt=new DateTime($start_task_date.' '.$timeFrom);
$endAt=new DateTime($start_task_date.' '.$timeTo);
// Absolute value of time difference in seconds
$diff = abs(strtotime($timeFrom) - strtotime($timeTo));
// Convert $diff to minutes
$tmins = $diff/60;
// Get hours
$hours = floor($tmins/60);
// Get minutes
$mins = $tmins%60;
$task->setDurationHours($hours);
$task->setdurationMinutes($mins);
$task->setStartAt($startAt);
$task->setEndAt($endAt);
$entityManager->persist($task);
$entityManager->flush();
$this->addFlash('success','Your task has been successfully added !');
return $this->redirect($request->headers->get('referer'));
}
return $this->render('ab_user_list_tasks/edit_date_task_modal.html.twig', [
'form'=>$form->createView(),
'task' => $task,
]);
}
/***************Modify category task/Description /Placetask - Modal Widow ********************/
/**
* @Route("/edit-category-description-task-modal-{id}", name="edit_category_description_task_modal")
*/
public function editTaskCategoryDescriptionInModal(Task $task, EntityManagerInterface $entityManager, Request $request)
{
if ($task->getUser() != $this->getUser()){
return $this->redirectToRoute('show_project',['id'=>$task->getProject()->getId()]);
}
// Important when otherCategoryCheckbox is checked
$project=$task->getProject();
$form = $this->createForm(TaskType::class,$task,array('categoryProject' => $task->getProject()->getCategory()));
$form->remove('start_at');
$form->remove('end_at');
$form->remove('durationHours');
$form->remove('durationMinutes');
$form->handleRequest($request);
// Get task's parameters wich removed from form and statu task
$durationHours=$task->getDurationHours();
$durationMinutes=$task->getdurationMinutes();
$startAt=$task->getStartAt();
$endAt=$task->getEndAt();
$statusTask=$task->getStatusTask();
if($form->isSubmitted() && $form->isValid())
{
$otherCategoryCheckbox = $form->get('otherCategoryCheckbox')->getData();
$otherCategory = $form->get('otherCategory')->getData();
if ($otherCategoryCheckbox){
//$project=$task->getProject(); in top
$newCategoryTask = new CategoryTask();
$newCategoryTask->setCategoryName($otherCategory);
$newCategoryTask->setCategoryProject($project->getCategory());
$entityManager->persist($newCategoryTask);
$task->setCategoryTask($newCategoryTask);
}
$task->setDurationHours($durationHours);
$task->setdurationMinutes($durationMinutes);
$task->setStartAt($startAt);
$task->setEndAt($endAt);
$task->setStatusTask($statusTask);
$entityManager->persist($task);
$entityManager->flush();
$this->addFlash('success','Your task has been successfully Modified !');
return $this->redirect($request->headers->get('referer'));
}
return $this->render('ab_user_list_tasks/edit_category_description_task_modal.html.twig', [
'form'=>$form->createView(),
'task' => $task,
]);
}
}