<?php
namespace App\Controller;
use Mpdf\Mpdf;
use App\Entity\Lot;
use App\Entity\Prospect;
use App\Entity\Historique;
use App\Entity\PieceJointe;
use Mpdf\Output\Destination;
use App\Service\Notification;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Mailer\Mailer;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\HttpFoundation\Response;
use Sonata\AdminBundle\Controller\CRUDController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class LotAdminController extends CRUDController
{
protected $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function preCreate(Request $request, object $object): ?Response {
if($object->getProgrammeParent()) {
$object->setLivraison($object->getProgrammeParent()->getLivraison());
foreach ($object->getProgrammeParent()->getPjs() as $pj) {
$clonedPj = clone $pj;
$clonedPj->setLot($object);
$clonedPj->setPieceJointeMere($pj);
$clonedPj->setProgramme(null);
$object->addPj($clonedPj);
}
}
foreach (Lot::INTITULES_PREDEFINIS as $description) {
$pj = new PieceJointe();
$pj->setDescriptionCourte($description);
$pj->setLot($object);
$object->addPj($pj);
}
return null;
}
public function editAction(Request $request): Response
{
$originalProgrammeParentId = $this->admin->getSubject()->getProgrammeParent()->getId();
$response = parent::editAction($request);
$lotObject = $this->admin->getSubject();
if ($response instanceof RedirectResponse && $response->isRedirect() && $originalProgrammeParentId != $lotObject->getProgrammeParent()->getId()) {
return $this->redirectToRoute('admin_app_programme_lot_edit', array(
'id' => $lotObject->getProgrammeParent()->getId(),
'childId' => $request->get('childId')
));
}
return $response;
}
/**
* @param $id
*/
public function cloneAction($id): Response
{
$object = $this->admin->getSubject();
if (!$object) {
throw new NotFoundHttpException(sprintf('Impossible de trouver le lot associé à l\'id : %s', $id));
}
$clonedObject = clone $object;
$clonedObject->setReference($object->getReference() . ' (Copie)');
$this->admin->create($clonedObject);
$this->addFlash('sonata_flash_success', 'Le lot a bien été dupliqué.');
return new RedirectResponse(
$this->admin->generateUrl('edit', ['id' => $clonedObject->getId()])
);
}
}