src/Controller/Quote/QuoteRequestController.php line 47
<?phpnamespace App\Controller\Quote;use App\Entity\Quote\QuoteRequest;use App\Form\Type\Quote\QuoteRequestType;use App\Repository\Quote\QuoteRequestRepository;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use App\Manager\Quote\QuoteRequestManager;use App\Service\Quote\QuoteService;use Sylius\Component\Core\Repository\CustomerRepositoryInterface;use Sylius\Component\Product\Repository\ProductRepositoryInterface;use Symfony\Bridge\Twig\Mime\TemplatedEmail;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\Mailer\Exception\TransportExceptionInterface;use Symfony\Component\Mailer\MailerInterface;#[Route('/quote-request')]class QuoteRequestController extends AbstractController{private $manager;private $productRepository;private $customerRepository;public function __construct(QuoteRequestManager $manager,ProductRepositoryInterface $productRepository,CustomerRepositoryInterface $customerRepository,) {$this->manager = $manager;$this->productRepository = $productRepository;$this->customerRepository = $customerRepository;}#[Route('/new', name: 'app_frontend_quote_request_new', methods: ['GET', 'POST'])]public function new(Request $request, MailerInterface $mailer, QuoteService $quoteService): Response{$quoteRequest = new QuoteRequest();$this->manager->initFormFileCollection($quoteRequest);$params = $request->get('_route_params');$params['product'] = $request->query->get('product');$form = $this->createForm(QuoteRequestType::class, $quoteRequest, ['action' => $this->generateUrl('app_frontend_quote_request_new', $params)]);$form->handleRequest($request);$product = null;if ($request->query->get('product') !== null) {$product = $this->productRepository->find($request->query->get('product'));}if ($form->isSubmitted() && $form->isValid()) {$quoteRequest->setCode($quoteService->generateRandomString());if ($product) {$quoteRequest->setProduct($product);$quoteRequest->setType('generic');} else {$quoteRequest->setType('specific');}foreach ($quoteRequest->getAttributes() as $item) {if (!$item->getValue()) {$quoteRequest->removeAttribute($item);}}foreach ($quoteRequest->getOptions() as $item) {if (!$item->getValue()) {$quoteRequest->removeOption($item);}}foreach ($quoteRequest->getFiles() as $item) {if (!$item->getFile()) {$quoteRequest->removeFile($item);}}if ($this->getUser()) {$quoteRequest->setCustomer($this->getUser()->getCustomer());}$this->manager->save($quoteRequest);try {$email = new TemplatedEmail();//$fileName = sprintf('%s.pdf', 'quote_request_' . (new \Datetime('now'))->format('d-m-Y') . '_' . (new \Datetime('now'))->format('H:m:s'));$email->to($quoteRequest->getEmail())->subject('Quote Request')->htmlTemplate('frontend/quote/quote_request/welcome_email.html.twig')->context(['quote' => $quoteRequest,])// $pdf is a TCPDF object//->attach($pdf->output($fileName, 'S'), $fileName, 'application/pdf');$mailer->send($email);} catch (TransportExceptionInterface $e) {//dd($e);}$this->addFlash('success', 'app.flash.request_for_quote_successfully');return $this->redirectToRoute('app_frontend_alert');}if ($product) {return $this->render('frontend/quote/quote_request/new_with_product.html.twig', ['quote_request' => $quoteRequest,'form' => $form->createView(),'product' => $product]);}return $this->render('frontend/quote/quote_request/new.html.twig', ['quote_request' => $quoteRequest,'form' => $form->createView(),]);}}