<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\Core\Common\Controller\Resource;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;
final class RFQController extends ResourceController
{
private const LOGIN_PATH = '/%s/login';
public function createAction(Request $request): Response
{
/** @var RedirectResponse $response */
$response = parent::createAction($request);
if (
$request->isMethod('POST')
&& $response instanceof RedirectResponse
&& $response->getTargetUrl() === sprintf(self::LOGIN_PATH, $request->getLocale())
) {
$rfqFormData = $request->request->all();
$session = $request->getSession();
$session->set('rfq_form_data', $rfqFormData);
$refererUrl = $request->headers->get('referer');
if ($refererUrl) {
$session->set('_security.shop.target_path', $refererUrl);
}
return $response;
}
if (
!$this->getUser()
&& $request->isMethod('POST')
&& $response instanceof RedirectResponse
) {
/** @var Session $session */
$session = $request->getSession();
$session->getFlashBag()->clear();
$this->addFlash('header', 'open_marketplace.rfq.request_completion.header');
$this->addFlash('warning', 'open_marketplace.rfq.request_completion.message');
return $response;
}
if (422 === $response->getStatusCode() || 413 === $response->getStatusCode()) {
$this->addFlash('error', 'open_marketplace.rfq.max_attachments_message');
return $this->redirectToRoute('sylius_shop_product_show', [
'slug' => $request->get('slug', ''),
'id' => $request->get('productId', ''),
]);
}
return $response;
}
}