<?php
namespace App\Controller;
use App\Env;
use App\Func;
use App\DTO\AppDTO;
use LogicException;
use App\Entity\City;
use App\Entity\Prod;
use App\Entity\User;
use App\Entity\Order;
use App\Entity\Region;
use App\Entity\Esystem;
use App\Entity\Delivery;
use App\Service\Pay\Pay;
use App\Service\Auth\Auth;
use App\Service\Cart\Cart;
use App\Service\Mail\Mail;
use App\Entity\Subdelivery;
use App\Entity\Transaction;
use App\Event\OrderMakedEvent;
use App\Event\OrderPayedEvent;
use App\Service\Referal\Referal;
use App\Repository\CityRepository;
use App\Repository\ProdRepository;
use App\Repository\UserRepository;
use App\Service\Checkout\Checkout;
use App\Repository\OrderRepository;
use App\Repository\RegionRepository;
use App\Repository\EsystemRepository;
use App\Repository\DeliveryRepository;
use Psr\Cache\InvalidArgumentException;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Exception\ORMException;
use App\Repository\SubdeliveryRepository;
use App\Repository\TransactionRepository;
use Symfony\Contracts\Cache\CacheInterface;
use Psr\Container\NotFoundExceptionInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Security;
use Psr\Container\ContainerExceptionInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Psr\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
use Symfony\Component\HttpFoundation\RequestStack;
/** @package App\Controller */
class CheckoutController extends AbstractASController
{
protected EntityManagerInterface $em;
protected CacheInterface $Cache;
protected AppDTO $app;
protected Auth $Auth;
protected Checkout $Checkout;
protected User $User;
protected Cart $Cart;
protected $cart_items;
// Repositories
protected ProdRepository $Prods;
protected DeliveryRepository $Deliveries;
protected SubdeliveryRepository $SubDeliveries;
protected CityRepository $Cities;
protected RegionRepository $Regions;
protected EsystemRepository $Esystems;
protected UserRepository $Users;
protected OrderRepository $Orders;
protected TransactionRepository $Transactions;
private $step;
private $order_key = "asdflhi2508qyslakg08q2t5ojgz";
public function __construct(EntityManagerInterface $em, CacheInterface $Cache, AppDTO $app, Auth $Auth, Checkout $Checkout, Cart $Cart, Security $security, RequestStack $requestStack)
{
$this->requestStack = $requestStack;
$this->Cache = $Cache;
$this->em = $em;
$this->app = $app;
$this->Auth = $Auth;
$this->Auth->setUser($security->getUser());
$this->Checkout = $Checkout;
$this->Cart = $Cart;
$this->Deliveries = $this->em->getRepository(Delivery::class);
$this->SubDeliveries = $this->em->getRepository(Subdelivery::class);
$this->Cities = $this->em->getRepository(City::class);
$this->Regions = $this->em->getRepository(Region::class);
$this->Esystems = $this->em->getRepository(Esystem::class);
$this->Users = $this->em->getRepository(User::class);
$this->Orders = $this->em->getRepository(Order::class);
$this->Prods = $em->getRepository(Prod::class);
$this->Transactions = $em->getRepository(Transaction::class);
$this->cart_items = $this->Cart->getCart();
foreach ($this->cart_items as $k => $v) {
$this->cart_items[$k]['prod'] = $this->Prods->find($v['id']);
}
}
#[Route(path: '/checkout', name: 'checkout_no_locale', defaults: ['_locale' => '%app.default_lang%'])]
#[Route(path: '/{_locale}/checkout', name: 'checkout', requirements: ['_locale' => '%app.langs%'])]
public function index(): Response
{
return $this->redirectToRoute('checkout_form');
}
// Форма. Данные пользователя
#[Route(path: '/checkout/form', name: 'checkout_form_no_locale', defaults: ['_locale' => '%app.default_lang%'])]
#[Route(path: '/{_locale}/checkout/form', name: 'checkout_form', requirements: ['_locale' => '%app.langs%'])]
public function form(Request $request): Response
{
$email = strtolower(trim($request->get('email')));
$surname = trim($request->get('surname'));
$name = trim($request->get('name'));
$phone = trim($request->get('phone'));
$errors = [];
if (!empty($request->get('submit'))) {
$user = $this->Users->findOneBy(['email' => $email]);
if (strlen($email) && $this->Auth->getUserId() == 0 && $user) { // Клиент есть в базе но не авторизирован
$this->Checkout->setEmail($email);
$errors['notloggedin'] = 1;
} else {
if (!strlen($surname)) { // Пустое поле Фамилии
$errors['surname_empty'] = 1;
} elseif (!strlen($name)) { // Пустое поле Имени
$errors['name_empty'] = 1;
} else {
$usersurname = $surname;
$username = $name;
$usergender = '';
if ($username && $usersurname) {
if ($this->Auth->getUserId() == 0 && !$user) { // Новый клиент
} elseif ($this->Auth->getUserId()) { // Клиент авторизирован
$user->setName($username);
$user->setSurname($usersurname);
$user->setGender($usergender);
$user->setPhone($phone);
//$this->Auth->login($user); /// TODO
$this->em->flush();
}
}
}
if (!empty($email) && filter_var($email, FILTER_CALLBACK, array('options' => '\App\Func::is_email'))) {
$this->Checkout->setName($name);
$this->Checkout->setSurname($surname);
$this->Checkout->setGender($usergender);
$this->Checkout->setEmail($email);
$this->Checkout->setPhone($phone);
$this->Checkout->setKey($this->order_key);
} else {
$errors['email_invalid'] = 1; // email невалиден
}
if (!strlen($phone)) { // Пустое поле Номер телефона
$errors['phone_empty'] = 1;
}
if (count((array)$errors) == 0) { // Если ошибок нет, переходим на этап Доставка
return $this->redirectToRoute('checkout_delivery');
}
}
return $this->render('checkout/form.html.twig', [
'controller_name' => 'CheckoutController',
'checkout' => $this->Checkout,
'user' => $this->getUser(),
"errors" => $errors,
"step" => 1,
'h1' => $this->app->labels->get('checkout-title-1'),
'cart' => $this->Cart,
'cart_items' => $this->cart_items,
]);
} else { // Форма не отправлена. Заход на страницу /checkout/
return $this->render('checkout/form.html.twig', [
'controller_name' => 'CheckoutController',
'checkout' => $this->Checkout,
'user' => $this->getUser(),
"errors" => $errors,
"step" => 1,
'h1' => $this->app->labels->get('checkout-title-1'),
'cart' => $this->Cart,
'cart_items' => $this->cart_items,
]);
}
}
// Выбор способа доставки
#[Route(path: '/checkout/delivery', name: 'checkout_delivery_no_locale', defaults: ['_locale' => '%app.default_lang%'])]
#[Route(path: '/{_locale}/checkout/delivery', name: 'checkout_delivery', requirements: ['_locale' => '%app.langs%'])]
public function delivery(Request $request): Response
{
if (empty($this->Checkout->getName()) || empty($this->Checkout->getEmail())) {
return $this->redirectToRoute('checkout_form');
}
if ($request->get('postform')) { // Обработка формы с полями ввода (для некоторых видов доставки)
$d_addr = $request->get('delivery-addr');
$d_flat = $request->get('delivery-flat');
$d_post_code = $request->get('delivery-postcode');
$d_comment = $request->get('delivery-comment');
$name = $request->get('name');
$d_post_name = $request->get('delivery-postname');
$this->Checkout->setDelivery_post_code('');
$this->Checkout->setDelivery_post_name('');
$this->Checkout->setDelivery_post_worktime('');
$this->Checkout->setDelivery_post_phone('');
$this->Checkout->setDelivery_post_email('');
if (($name) && ((Env::site() == Env::MIX) || (Env::site() == Env::OPT_MIX))) {
$this->Checkout->setCity_name($name);
$this->Checkout->setDelivery_post_name($d_post_name);
}
if ($d_addr) {
$this->Checkout->setUseraddr($d_addr);
}
if ($d_flat) {
$this->Checkout->setUseraddr($d_addr);
if ((Env::site() != Env::MIX) && (Env::site() != Env::OPT_MIX)) {
$this->Checkout->setUseraddr($d_addr . ', ' . $this->app->labels->get('checkout-confirm-6') . ' ' . $d_flat);
}
$this->Checkout->setUserflat($d_flat);
}
$this->Checkout->setDelivery_post_code($d_post_code);
$this->Checkout->setComment($d_comment);
return $this->redirectToRoute('checkout_payment');
} else {
if (!$this->Checkout->getUserlat() && !$this->Checkout->getUserlon()) {
$user = $this->Users->find($this->Auth->getUserId());
if ($user && $user->getLat() && $user->getLon()) {
$this->Checkout->setUserlat($user->getLat());
$this->Checkout->setUserlon($user->getLon());
}
}
if (count($request->request->all()) > 0) {
return $this->redirectToRoute('checkout_payment');
} else {
$user = $this->Users->find($this->Auth->getUserId());
return $this->render('checkout/delivery.html.twig', [
'controller_name' => 'CheckoutController',
'checkout' => $this->Checkout,
'user' => $this->getUser(),
"step" => 2,
'h1' => $this->app->labels->get('checkout-title-2'),
'deliveries' => $this->Deliveries->getByRegion($this->Checkout->getRegion_fias_id()),
'this_checkout' => $this->Checkout,
'cart' => $this->Cart,
'cart_items' => $this->cart_items,
]);
}
}
}
// Выбор способа оплаты
#[Route(path: '/checkout/payment', name: 'checkout_payment_no_locale', defaults: ['_locale' => '%app.default_lang%'])]
#[Route(path: '/{_locale}/checkout/payment', name: 'checkout_payment', requirements: ['_locale' => '%app.langs%'])]
public function payment(): Response
{
if (empty($this->Checkout->getName()) || empty($this->Checkout->getEmail())) {
//return $this->redirectToRoute('checkout_form');
}
$esystems = $this->Esystems->getByRegion($this->Checkout->getRegion_fias_id(), $this->Auth->isOpt(), $this->Cart->getAmount());
$esystems = $this->Esystems->filterByDelivery($esystems, (int) $this->Checkout->getDelivery_id());
return $this->render('checkout/payment.html.twig', [
'controller_name' => 'CheckoutController',
'checkout' => $this->Checkout,
'user' => $this->getUser(),
"step" => 3,
'h1' => $this->app->labels->get('checkout-title-3'),
'esystems' => $esystems,
'cart' => $this->Cart,
'cart_items' => $this->cart_items,
]);
}
// Подтверждение заказа
#[Route(path: '/checkout/confirm', name: 'checkout_confirm_no_locale', defaults: ['_locale' => '%app.default_lang%'])]
#[Route(path: '/{_locale}/checkout/confirm', name: 'checkout_confirm', requirements: ['_locale' => '%app.langs%'])]
public function confirm(Request $request, Mail $Mail, Referal $Referal): Response
{
//$this->app->page->setH1($this->app->labels->get('checkout-title-4'));
$user = null;
if (empty($request->request->all())) {
$worktimestr = '';
if ($this->Checkout->getDelivery_post_worktime()) {
$worktimestr = $this->Checkout->getDelivery_post_worktime();
$worktimestr = str_replace(': ', ':|', $worktimestr);
$worktimestr = str_replace('; ', '|', $worktimestr);
$worktimearr = explode('|', $worktimestr);
$worktimestr = '';
for ($i = 0; $i < count($worktimearr); $i++) {
if ($i % 2 == 0) {
$worktimestr .= '<dt>' . $worktimearr[$i] . '</dt>';
} else {
$worktimestr .= '<dd>' . $worktimearr[$i] . '</dd>';
}
}
}
return $this->render('checkout/confirm.html.twig', [
'worktime' => $worktimestr,
'checkout' => $this->Checkout,
'user' => $this->getUser(),
"step" => 4,
'cart' => $this->Cart,
'cart_items' => $this->cart_items,
]);
} else {
// if (empty($this->Checkout->getName()) || empty($this->Checkout->getEmail())) {
// return $this->redirectToRoute('checkout_form');
// }
// if ($this->Checkout->getLastOrderTime() && $this->Checkout->getLastOrderTime() > (time() - 60)) {
// return $this->redirectToRoute('cart');
// } else {
// $this->Checkout->setLastOrderTime(time());
// }
// Регистрация нового клиента
if (!$this->Auth->getUserId()) {
$password = substr(md5(time()), 0, 8);
$usermail = strtolower($this->Checkout->getEmail());
$opt = $this->Auth->isOpt() ? 1 : 0;
$user = new User();
$user->setType('client');
$user->setPassword($password);
$user->setEmail(strtolower(trim($usermail)));
$user->setName($this->Checkout->getName());
$user->setSurname($this->Checkout->getSurname());
$user->setGender($this->Checkout->getGender());
$user->setPhone(Func::mkphone($this->Checkout->getPhone()));
$user->setCity($this->Checkout->getCity_name());
$user->setAddress($this->Checkout->getUseraddr());
$user->setLat($this->Checkout->getUserlat());
$user->setLon($this->Checkout->getUserlon());
$user->setIp($_SERVER['REMOTE_ADDR']);
$user->setCreated(time());
$user->setDiscount(0);
$user->setOpt($opt);
$this->em->persist($user);
$this->em->flush();
$userid = $user->getId();
$params = array(
"type" => "client",
"login" => $usermail,
"gender" => $this->Checkout->getGender(),
"pass" => $password,
"email" => $usermail,
"name" => $this->Checkout->getName(),
"surname" => $this->Checkout->getSurname(),
"phone" => $this->Checkout->getPhone(),
"city" => $this->Checkout->getCity_name(),
"address" => $this->Checkout->getUseraddr(),
);
$Mail->send($this->app->sett->get('sitename'), Env::mail_from(), $usermail, $this->app->labels->get("register_message_theme"), Func::mess_from_tmp($this->app->templates->get("register_message_template"), $params));
$Mail->send($this->app->sett->get('sitename'), Env::mail_from(), $this->app->sett->get('admin_email'), $this->app->labels->get("register_message_theme"), Func::mess_from_tmp($this->app->templates->get("register_message_template"), $params));
} else {
$user = $this->Users->find($this->Auth->getUserId());
$userid = $user->getId();
}
$deliverycost = (int) $this->Checkout->getDelivery_cost();
if (($this->Cart->getAmount() >= $this->app->sett->get('free_delivery_amount')) && (!$this->Auth->isOpt())) {
$deliverycost = 0;
}
$needcall = ($request->get('needcall') == 'on' || $request->get('needcall') == 1) ? 1 : 0;
$opt = $this->Auth->isOpt() ? 1 : 0;
$Order = new Order();
$Order->setUser($userid);
$Order->setManager((int) $user->getManager());
$Order->setName($this->Checkout->getSurname() . " " . $this->Checkout->getName());
if ((Env::site() == Env::MIX) || (Env::site() == Env::OPT_MIX)) {
$addr = $this->Checkout->getUseraddr();
if ($this->Checkout->getUserflat()) {
$addr = $this->Checkout->getUseraddr() . ' ' . $this->app->labels->get('checkout-confirm-6') . ' ' . $this->Checkout->getUserflat();
}
$Order->setAddr($addr);
} else {
$Order->setAddr($this->Checkout->getUseraddr());
}
$Order->setCity($this->Checkout->getCity_name());
$Order->setPhone($this->Checkout->getPhone());
$Order->setEmail($this->Checkout->getEmail());
$Order->setTstamp(time());
$Order->setDelivery($this->Checkout->getDelivery_id());
$Order->setSubdelivery($this->Checkout->getDelivery_sub_id());
$Order->setDeliverycost($deliverycost);
$Order->setPostcode($this->Checkout->getDelivery_post_code());
$Order->setEsystem($this->Checkout->getPayment_id());
$Order->setSklad($this->Checkout->getDelivery_post_name());
$Order->setComment($request->get('comment', ''));
$Order->setStatus(4);
$Order->setNeedcall($needcall);
$Order->setReferal($Referal->getId());
$Order->setSession(json_encode($_SESSION, JSON_UNESCAPED_UNICODE));
$Order->setCookie(json_encode($_COOKIE, JSON_UNESCAPED_UNICODE));
$Order->setOpt($opt);
$Order->setAmount($this->Cart->getAmount() + $deliverycost);
$Order->setWeight($this->Cart->getWeight());
$Order->setAmountWithoutDiscount($this->Cart->getAmountWithoutDiscount());
if ((Env::site() == Env::MIX) || (Env::site() == Env::OPT_MIX)) {
$Order->setCompanyNip($this->Checkout->getCompanyNip());
$Order->setCompanyName($this->Checkout->getCompanyName());
$Order->setCompanyIndex($this->Checkout->getCompanyIndex());
$Order->setCompanyCity($this->Checkout->getCompanyCity());
$Order->setCompanyStreet($this->Checkout->getCompanyStreet());
$Order->setCompanyHouse($this->Checkout->getCompanyHouse());
$Order->setCompanyFlat($this->Checkout->getCompanyFlat());
}
$this->em->persist($Order);
$this->em->flush();
$order_id = $Order->getId();
$this->Checkout->setLastOrderTime(time());
$client_data = "<table><tr><td>" . $this->app->labels->get('name') . "</td><td>" . $this->Checkout->getName() . " " . $this->Checkout->getSurname() . "</td></tr><tr><td>Email</td><td>" . $this->Checkout->getEmail() . "</td></tr><tr><td>" . $this->app->labels->get('phone') . "</td><td>" . Func::mkphone($this->Checkout->getPhone()) . "</td></tr><tr><td>" . $this->app->labels->get('address') . "</td><td>" . $this->Checkout->getCity_name() . ", " . $this->Checkout->getUseraddr() . "</td></tr></table>";
$this->Cart->saveCart($order_id);
$order_maked = 1;
// $Order = new Model_Order($order_id);
// $view->Model_Order = $Order;
// $view->cart = $Order->cart;
// $view->order = $Order->get($order_id);
// $view->order_amount = $Order->amount();
$order_cont = $this->renderView('cart/show.html.twig', [
'checkout' => $this->Checkout,
'user' => $this->getUser(),
'cart' => $this->Cart,
'cart_items' => $this->cart_items,
'freedelivery' => $this->Cart->isFreeDelivery((float) $this->app->sett->get('free_delivery_amount')),
'order' => $Order,
]);
$payment = $this->Esystems->find($this->Checkout->getPayment_id());
$delivery = $this->Deliveries->find($this->Checkout->getDelivery_id());
$params = array(
"order_id" => $order_id,
//"client" => $url->s['checkout']['surname']." ".$url->s['checkout']['name'],
"order_time" => date("d.m.Y (G:i)", time()),
"order" => $order_cont,
"client" => $client_data,
"payment" => $payment ? $payment->getCont() : '',
"delivery" => $delivery ? $delivery->getCont() : '',
"login" => $user->getEmail(),
"pass" => $user->getPassword(),
"name" => $this->Checkout->getName(),
"surname" => $this->Checkout->getSurname(),
"email" => $this->Checkout->getEmail(),
"phone" => Func::mkphone($this->Checkout->getPhone()),
"city" => $this->Checkout->getCity_name(),
"address" => $this->Checkout->getUseraddr(),
"needcall" => $needcall,
);
$Mail->send($this->app->sett->get('sitename'), Env::mail_from(), $this->Checkout->getEmail(), $this->app->labels->get("order_message_theme"), Func::mess_from_tmp($this->app->templates->get("order_message_template"), $params));
$Mail->send($this->app->sett->get('sitename'), Env::mail_from(), $this->app->sett->get('admin_email'), $this->app->labels->get("order_message_theme"), Func::mess_from_tmp($this->app->templates->get("order_message_template"), $params));
$this->Cart->deleteNullFromColors();
$this->Cart->deleteAll();
$this->Checkout->setRemarkingCart(1);
if ($payment->isAutof()) {
return $this->redirectToRoute('checkout_pay', ['order' => $order_id]);
} else {
return $this->redirectToRoute('checkout_finish', ['order_id' => $order_id]);
}
}
}
// Заказ оформлен. Страница "Спасибо"
#[Route(path: '/checkout/finish/{order_id}', name: 'checkout_finish_no_locale', defaults: ['_locale' => '%app.default_lang%'])]
#[Route(path: '/checkout/completed/{order_id}', name: 'checkout_completed_no_locale', defaults: ['_locale' => '%app.default_lang%'])]
#[Route(path: '/{_locale}/checkout/finish/{order_id}', name: 'checkout_finish', requirements: ['_locale' => '%app.langs%'])]
#[Route(path: '/{_locale}/checkout/completed/{order_id}', name: 'checkout_completed', requirements: ['_locale' => '%app.langs%'])]
public function finish(EventDispatcherInterface $dispatcher, int $order_id): Response
{
if ($this->Checkout->getRemarkingCart() == 1) {
$order = $this->Orders->find($order_id);
$user = $this->Users->find($order->getUser());
$this->Cart->loadFromOrder($order->getId());
if ($order->getStatus() != 7 && !in_array($order->getEsystem(), [25])) {
$event = new OrderMakedEvent($order);
$dispatcher->dispatch($event, OrderMakedEvent::NAME);
}
$order_sum = $this->Cart->getAmount();
$prods = $this->Cart->getCart();
$cartitems = $this->Cart->getCart();
$order_sum = $order_sum;
$order_id = $order_id;
$this->Cart->deleteAll();
$this->Checkout->clear();
$this->Checkout->setRemarkingCart(0);
return $this->render('checkout/finish.html.twig', [
'controller_name' => 'CheckoutController',
'checkout' => $this->Checkout,
'user' => $this->getUser(),
"step" => 5,
'h1' => $this->app->labels->get('checkout-title-5'),
"order_sum" => $order_sum,
"prods" => $prods,
"cartitems" => $cartitems,
"order_sum" => $order_sum,
"order_id" => $order_id,
]);
} else {
return $this->redirectToRoute('home');
}
}
// Оплата
/**
* @param Pay $Pay
* @param Request $request
* @param EventDispatcherInterface $dispatcher
* @return Response
* @throws BadRequestException
* @throws NotFoundExceptionInterface
* @throws ContainerExceptionInterface
* @throws LogicException
* @throws InvalidArgumentException
* @throws ORMException
*/
#[Route('/checkout/pay', name: 'checkout_pay')]
public function pay(Pay $Pay, Request $request, EventDispatcherInterface $dispatcher): Response
{
$order_id = $request->get("order", 0);
$order = $this->Orders->find($order_id);
if (!$order) {
return $this->redirectToRoute('home');
}
//TODO. Решить костыль с задвоением
$event = new OrderMakedEvent($order);
$dispatcher->dispatch($event, OrderMakedEvent::NAME);
$this->Cart->loadFromOrder($order->getId());
$order_sum = $order->getAmount();
$Pay->pay($order->getEsystem(), $order->getId(), $order_sum);
return new Response('ok');
}
// Проверка результата оплаты
#[Route('/checkout/pay-result/esystem-{esystem_id}/order-{order_id}', name: 'checkout_pay_result')]
public function payResult(EventDispatcherInterface $dispatcher, int $esystem_id, int $order_id): Response
{
$esystem = $this->Esystems->find($esystem_id);
$script_name = $esystem->getScript();
/** @var Pay $Pay */
$Pay = new $script_name();
if ($Pay->is_success($order_id)) {
$order = $this->Orders->find($order_id);
$order->setStatus(7);
$this->em->flush();
$dispatcher->dispatch(new OrderPayedEvent($order), OrderPayedEvent::NAME);
}
return new Response('ok');
}
// Успешная оплата Robokassa
#[Route('/checkout/pay-result-robokassa-afog91856kgfsadf150h', name: 'checkout_pay_result_robokassa_success')]
public function payResultRobokassaSuccess(Request $request): Response
{
$order_id = $request->get('inv_id');
$order_sum = $request->get('out_summ');
$order = $this->Orders->find($order_id);
$order->setStatus(7);
$this->em->flush();
return $this->redirectToRoute('checkout_finish', ['order_id' => $order_id]);
}
// Неудачная оплата Robokassa
#[Route('/checkout/pay-result-robokassa-asg258goag0lvb', name: 'checkout_pay_result_robokassa_failed')]
public function payResultRobokassaFailed(): Response
{
return $this->render('checkout/failed.html.twig', [
'controller_name' => 'CheckoutController',
]);
}
// Успешная оплата Prezelewy
/**
* @param EventDispatcherInterface $dispatcher
* @param Request $request
* @return Response
* @throws BadRequestException
*/
#[Route('/checkout/payresult-przelewy-asdflkh2058yjba0g8g250ib0', name: 'checkout_pay_result_przelewy_success')]
public function payResultPrzelewySuccess(EventDispatcherInterface $dispatcher, Request $request): Response
{
$order_id = $request->get('order');
$input = (string) $request->getContent();
$post = json_encode($_POST);
if (!empty($input)) {
$this->Transactions->transactionResult($order_id, $post, $input);
}
$order = $this->Orders->find($order_id);
$order->setStatus(7);
$this->em->flush();
$dispatcher->dispatch(new OrderPayedEvent($order), OrderPayedEvent::NAME);
return new Response('done');
}
#[Route('/checkout/test-test', name: 'checkout_test_test')]
public function testtest(EventDispatcherInterface $dispatcher, Request $request): Response
{
$order_id = $request->get('order');
$input = (string) $request->getContent();
$post = json_encode($_POST);
// if (!empty($input)) {
// $this->Transactions->transactionResult($order_id, $post, $input);
// }
$order = $this->Orders->find($order_id);
$event = new OrderMakedEvent($order);
$dispatcher->dispatch($event, OrderMakedEvent::NAME);
return new Response('done');
}
}