initial commit
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\Clients;
|
||||
use App\Entity\Reports;
|
||||
use App\Entity\ReportsTodo;
|
||||
use App\Enum\ReportTodoEnum;
|
||||
use App\Services\AddReports;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
class ReportsController extends AbstractController
|
||||
{
|
||||
#[Route('/set-status-todo', name: 'app_set_status_todo')]
|
||||
#[IsGranted('reportEdit')]
|
||||
public function setStatusTodo(EntityManagerInterface $entityManager, AddReports $reportsService, Request $request): Response
|
||||
{
|
||||
$reportId = $request->getPayload()->get('reportId');
|
||||
$token = $request->getPayload()->get("token");
|
||||
if ($reportId && $this->isCsrfTokenValid('report-status', $token)) {
|
||||
$report = $entityManager->getRepository(Reports::class)->find($reportId);
|
||||
$reportsService->setClient($report->getClient());
|
||||
$isDone = false;
|
||||
foreach (ReportTodoEnum::cases() as $case) {
|
||||
$todo = $entityManager->getRepository(ReportsTodo::class)->findOneBy([
|
||||
"report" => $report->getId(),
|
||||
"name" => $case->value
|
||||
]);
|
||||
if (!$todo) {
|
||||
$todo = new ReportsTodo();
|
||||
$todo->setReport($report);
|
||||
$todo->setName($case);
|
||||
}
|
||||
if (isset($_POST[$case->value])){
|
||||
$todo->setDeleted(false);
|
||||
} else {
|
||||
$todo->setDeleted(true);
|
||||
}
|
||||
if ($todo->getName() === ReportTodoEnum::COMPLETE && !$todo->isDeleted()) {
|
||||
$isDone = true;
|
||||
}
|
||||
$entityManager->persist($todo);
|
||||
}
|
||||
$report->setDone($isDone);
|
||||
$entityManager->persist($report);
|
||||
$entityManager->flush();
|
||||
$reportsService->tryAddNextReport();
|
||||
}
|
||||
return $this->redirect($request->headers->get('referer'));
|
||||
}
|
||||
|
||||
#[Route('/add-next-report', name: 'app_add_next_report')]
|
||||
#[IsGranted('reportEdit')]
|
||||
public function addNextReport(Request $request, EntityManagerInterface $entityManager, AddReports $addReports): Response
|
||||
{
|
||||
$clientId = $request->getPayload()->get('clientId');
|
||||
$token = $request->getPayload()->get("token");
|
||||
if ($clientId && $this->isCsrfTokenValid('add-next-report', $token)) {
|
||||
$client = $entityManager->getRepository(Clients::class)->find($clientId);
|
||||
$addReports->setClient($client);
|
||||
$addReports->addNextReport();
|
||||
}
|
||||
return $this->redirect($request->headers->get('referer'));
|
||||
}
|
||||
#[Route('/edit-first-report', name: 'app_edit_first_report')]
|
||||
#[IsGranted('reportEdit')]
|
||||
public function editFirstReport(Request $request, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
$clientId = $request->getPayload()->get('clientId');
|
||||
$date = $request->getPayload()->get('newDate');
|
||||
$token = $request->getPayload()->get("token");
|
||||
if ($clientId && $this->isCsrfTokenValid('edit-first-report', $token)) {
|
||||
$report = $entityManager->getRepository(Reports::class)->findBy(["client" => $clientId], ["dateStart"=>"ASC"]);
|
||||
$newDateStart = new \DateTime($date);
|
||||
$i=0;
|
||||
foreach ($report as $item) {
|
||||
$tmp = clone $newDateStart;
|
||||
$tmp->modify('+'.AddReports::NEXT_REPORT_MONTH * $i.' month');
|
||||
$item->setDateStart($tmp);
|
||||
$entityManager->persist($item);
|
||||
|
||||
$i++;
|
||||
}
|
||||
$entityManager->flush();
|
||||
}
|
||||
return $this->redirectToRoute('app_client', ['id'=>$clientId]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user