<?php
declare(strict_types=1);
namespace App\CoreBundle\Model\OrderPdf;
use App\CoreBundle\Form\Admin\QuickSearch\QuickSearchFormData;
use App\CoreBundle\Model\UploadedFile\UploadedFileFacade;
use Doctrine\ORM\EntityManagerInterface;
use WPO\WC\PDF_Invoices\Compatibility\Order;
class OrderPdfFacade
{
/**
* @var \Doctrine\ORM\EntityManagerInterface
*/
protected $em;
/**
* @var \App\CoreBundle\Model\OrderPdf\OrderPdfRepository
*/
protected $orderPdfRepository;
/**
* @var \App\CoreBundle\Model\OrderPdf\OrderPdfFactoryInterface
*/
protected $orderPdfFactory;
/**
* @var \App\CoreBundle\Model\UploadedFile\UploadedFileFacade
*/
protected $uploadedFileFacade;
public function __construct(
EntityManagerInterface $em,
OrderPdfRepository $orderPdfRepository,
OrderPdfFactoryInterface $orderPdfFactory,
UploadedFileFacade $uploadedFileFacade
) {
$this->em = $em;
$this->orderPdfRepository = $orderPdfRepository;
$this->orderPdfFactory = $orderPdfFactory;
$this->uploadedFileFacade = $uploadedFileFacade;
}
/**
* @param int $orderPdfId
* @return \App\CoreBundle\Model\OrderPdf\OrderPdf
*/
public function getById(int $orderPdfId): OrderPdf
{
return $this->orderPdfRepository->getById($orderPdfId);
}
/**
* @return \App\CoreBundle\Model\OrderPdf\OrderPdf[]
*/
public function getAll(): array
{
return $this->orderPdfRepository->getAll();
}
/**
* @param \App\CoreBundle\Model\OrderPdf\OrderPdfData $orderPdfata
* @return \App\CoreBundle\Model\OrderPdf\OrderPdf
*/
public function create(OrderPdfData $orderPdfData): OrderPdf
{
// if (!$this->em->isOpen()) {
// $this->em = $this->em->create(
// $this->em->getConnection(),
// $this->em->getConfiguration()
// );
// }
$orderPdf = $this->orderPdfFactory->create($orderPdfData);
$this->em->persist($orderPdf);
$this->em->flush();
if (!empty($orderPdfData->file->uploadedFiles)) {
$this->uploadedFileFacade->manageFiles($orderPdf, $orderPdfData->file);
}
return $orderPdf;
}
/**
* @param int $orderPdfId
* @param \App\CoreBundle\Model\OrderPdf\OrderPdfData $orderPdfata
* @return \App\CoreBundle\Model\OrderPdf\OrderPdf
*/
public function edit(int $orderPdfId, OrderPdfData $orderPdfData): OrderPdf
{
$orderPdf = $this->orderPdfRepository->getById($orderPdfId);
$orderPdf->edit($orderPdfData);
$this->em->flush();
if (!empty($orderPdfData->file->uploadedFiles)) {
$this->uploadedFileFacade->manageFiles($orderPdf, $orderPdfData->file);
}
return $orderPdf;
}
/**
* @param OrderPdf $orderPdf
* @param array $orders
* @return void
*/
public function refreshOrders(OrderPdf $orderPdf, array $orders): void
{
$oldOrders = $orderPdf->getOrders();
}
/**
* @param \App\CoreBundle\Form\Admin\QuickSearch\QuickSearchFormData $quickSearchData
* @return \Doctrine\ORM\QueryBuilder
*/
public function getOrderPdfListQueryBuilderByQuickSearchData(QuickSearchFormData $quickSearchData)
{
return $this->orderPdfRepository->getOrderPdfListQueryBuilderByQuickSearchData(
$quickSearchData
);
}
/**
* @param int $orderPdfId
*/
public function deleteById($orderPdfId)
{
$orderPdf = $this->orderPdfRepository->getById($orderPdfId);
$this->em->remove($orderPdf);
$this->em->flush();
}
}