src/Nolimit/Project/Manager/ProjectManager.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Nolimit\Project\Manager;
  3. use App\Entity\Project;
  4. use App\Nolimit\Pdf\PdfFileManager;
  5. use App\Nolimit\Project\Persister\ProjectPersister;
  6. use App\Nolimit\Project\Provider\ProjectDatatableProvider;
  7. use App\Nolimit\Project\Provider\ProjectPdfProvider;
  8. use App\Nolimit\Settings\Provider\SettingsProvider;
  9. use App\Repository\ProjectRepository;
  10. use Doctrine\DBAL\Exception;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Psr\Log\LoggerInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. class ProjectManager
  16. {
  17.     private EntityManagerInterface $em;
  18.     private TranslatorInterface $translator;
  19.     private ProjectRepository $projectRepository;
  20.     private ProjectPersister $projectPersister;
  21.     private ProjectPdfProvider $projectPdfProvider;
  22.     private ProjectDatatableProvider $projectDatatableProvider;
  23.     private PdfFileManager $fileManager;
  24.     private LoggerInterface $logger;
  25.     public function __construct(
  26.         EntityManagerInterface $em,
  27.         TranslatorInterface $translator,
  28.         ProjectRepository $projectRepository,
  29.         ProjectPersister $projectPersister,
  30.         LoggerInterface $stockLogger,
  31.         ProjectPdfProvider $projectPdfProvider,
  32.         ProjectDatatableProvider $projectDatatableProvider,
  33.         PdfFileManager $fileManager,
  34.         LoggerInterface $logger
  35.     )
  36.     {
  37.         $this->em $em;
  38.         $this->translator $translator;
  39.         $this->projectRepository $projectRepository;
  40.         $this->projectPersister $projectPersister;
  41.         $this->stockLogger $stockLogger;
  42.         $this->projectPdfProvider $projectPdfProvider;
  43.         $this->projectDatatableProvider $projectDatatableProvider;
  44.         $this->fileManager $fileManager;
  45.         $this->logger $logger;
  46.     }
  47.     public function getDataTable(): array
  48.     {
  49.         $data = [];
  50.         $project $this->projectRepository->findAll();
  51.         foreach ($project as $item) {
  52.             $data[] = $this->projectDatatableProvider->datatableRow($item);
  53.         }
  54.         return $data;
  55.     }
  56.     public function saveUpdateProject(Request $request): Project
  57.     {
  58.         $project $this->projectPersister->insertUpdateProject($request);
  59.         return $project;
  60.     }
  61.     public function deleteProject(int $id): bool
  62.     {
  63.         $dispozitieHeader $this->projectRepository->find($id);
  64.         if (!$dispozitieHeader) {
  65.             return false;
  66.         }
  67.         $dispozitieBodies $this->dispozitieBodyRepository->findWhereShippedNotNull($id);
  68.         if ($dispozitieHeader->getDeletable() && count($dispozitieBodies) == 0) {
  69.             $this->auctionManager->removeDispozitieInAuction($id);
  70.             $this->dispozitieBodyRepository->deleteBy($id);
  71.             $this->dispozitieHeaderRepository->remove($dispozitieHeadertrue);
  72.             //delete pdf from server
  73.             $path $this->dispozitieDir'dispozitie_'.$id.'.pdf';
  74.             //$path = $this->getParameter('dispozitie_directory'). 'dispozitie_'.$id.'.pdf';
  75.             try {
  76.                 $this->fileManager->removeFile($path);
  77.             } catch (Exception $e) {
  78.                 $this->logger->critical("DizpozitieManager: Dizpozitie PDF fizikai kitörlés nem történt meg!");
  79.             }
  80.             return true;
  81.         }
  82.         return false;
  83.     }
  84.     public function getFilteredData(Request $request)
  85.     {
  86.         $arrayDatatable $this->projectDatatableProvider->datatableRows();
  87.         //company
  88.         if ($request->get('company') !== null) {
  89.             $arrayForm $request->get('company');
  90.             $arrayDatatable array_filter($arrayDatatable, function ($value) use ($arrayForm) {
  91.                 return (in_array($value['company_id'], $arrayForm));
  92.             });
  93.         }
  94.         //status
  95.         if ($request->get('type') !== null) {
  96.             $arrayForm $request->get('type');
  97.             $arrayDatatable array_filter($arrayDatatable, function ($value) use ($arrayForm) {
  98.                 return (in_array($value['project_type_id'], $arrayForm));
  99.             });
  100.         }
  101.         //status
  102.         if ($request->get('status') !== null) {
  103.             $arrayForm $request->get('status');
  104.             $arrayDatatable array_filter($arrayDatatable, function ($value) use ($arrayForm) {
  105.                 return (in_array($value['status_id'], $arrayForm));
  106.             });
  107.         }
  108.         // end_date
  109.         if ($request->get('end_date') !== "") {
  110.             $arrayForm $request->get('end_date');
  111.             $dateForm explode('-'$arrayForm);
  112.             $start=trim($dateForm[0]);
  113.             if($start!="Invalid date")
  114.             {
  115.                 $fromDate date('Y-m-d H:m:s'strtotime($dateForm[0]));
  116.                 $toDate date('Y-m-d H:m:s'strtotime($dateForm[1]));
  117.                 $arrayDatatable array_filter($arrayDatatable, function ($value) use ($fromDate$toDate) {
  118.                     $dateAr date('Y-m-d H:m:s'strtotime($value['deadline']));
  119.                     return ($dateAr >= $fromDate && $dateAr <= $toDate);
  120.                 });
  121.             }
  122.         }
  123.         return array_values($arrayDatatable);
  124.     }
  125. }