<?php
namespace App\Controller\Shop;
use App\Component\Discount\Model\Discount;
use App\Component\Order\Model\Order;
use App\Component\Order\Model\OrderItem;
use App\Component\Order\OrderFactory;
use App\Component\Payment\Model\Payment;
use App\Component\Product\Model\Product;
use App\Component\Product\Repository\ProductRepository;
use App\Component\Shipment\Model\Shipment;
use App\Constants\Emails;
use App\Entity\CustomerContact;
use App\Entity\Invoice;
use App\Entity\OrderPayment;
use App\Entity\User;
use App\Entity\WishList;
use App\Form\AddItemType;
use App\Form\AddProductType;
use App\Form\ClearCartType;
use App\Form\CustomerContactType;
use App\Form\RemoveItemType;
use App\Form\SetDiscountType;
use App\Form\SetItemQuantityType;
use App\Form\SetPaymentType;
use App\Form\SetShipmentType;
use App\Repository\WishListRepository;
use App\Service\CurrencyService;
use App\Service\EmailService;
use App\Service\paypalExpress;
use App\Service\SmsService;
//use Stripe\Checkout\Session;
use App\Service\StripeService;
use Dompdf\Dompdf;
use Dompdf\Options;
use Stripe\Stripe;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
// Include Dompdf required namespaces
use Symfony\Component\Translation\TranslatorInterface;
class CartController extends AbstractController
{
/**
* @var TranslatorInterface
*/
private $translator;
/**
* @var OrderFactory
*/
private $orderFactory;
/** @var TokenStorageInterface */
private $tokenStorage;
public function __construct(TranslatorInterface $translator, OrderFactory $orderFactory, TokenStorageInterface $tokenStorage)
{
$this->translator = $translator;
$this->orderFactory = $orderFactory;
$this->tokenStorage = $tokenStorage;
}
/**
* @Route({
* "fr": "/cart",
* "en": "/cart/en"
* }, name="cart")
* @param Request $request
* @param CurrencyService $currency
*
*/
public function index(Request $request,
CurrencyService $currency,
OrderFactory $order,
SmsService $sms,
SessionInterface $session,
WishListRepository $wishrepo,
AuthenticationUtils $authenticationUtils) {
$clearForm = $this->createForm(ClearCartType::class, $order->getCurrent());
$setPaymentForm = $this->createForm(SetPaymentType::class, $order->getCurrent());
$setShipmentForm = $this->createForm(SetShipmentType::class, $order->getCurrent());
$setDiscountForm = $this->createForm(SetDiscountType::class, $order->getCurrent());
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
//$cookie = new Cookie('foo', 'bar', strtotime('now + 10 minutes'));
/*
$cookie = new Cookie( 'my_cookie',"56",time() + ( 2 * 365));
$res = new Response();
$res->headers->setCookie( $cookie );
$res->send();
$id = $request->cookies->get('my_cookie');
dump($id); exit;
*/
$repository = $this->getDoctrine()->getRepository(Product::class);
/**
* @var User $user
*/
$user = $this->getUser();
// $wishrepo = $this->getDoctrine()->getRepository(WishListRepository::class);
$user_wish = (!is_null($user))?$wishrepo->countUserWishList($user->getId())["cnt"]:"";
$user_bookingValue = (!is_null($user))?((float)(base64_decode($user->getBookingValue()))):"0,00";
// $locale = $request->getLocale();
// dump($locale); exit;
/*
$repository = $this->getDoctrine()->getRepository(Product::class);
$mitarbeiter = array("0131a2a3-eeb7-11ea-ba4b-1063c84cee2c"=>4,"06d6a110-33fe-11eb-aa2e-ca02b436025f"=>2,"137eb0e6-eeb6-11ea-ba4b-1063c84cee2c"=>5);
foreach($mitarbeiter AS $vorname => $nachname){
$this->orderFactory->addItem($repository->findOneBy(['id'=>$vorname]),$nachname);
}
*/
return $this->render('cart/index.html.twig', [
'last_username' => $lastUsername,
'error' => $error,
'userWish' => $user_wish,
'bookingValue'=>$user_bookingValue,
'order' => $order,
'ville' => array_key_exists($order->getCurrent()->getCart_cat(), $ville) ? $ville[$order->getCurrent()->getCart_cat()] : "Aucune",
'locale' => $request->getLocale(),
'clearForm' => $clearForm->createView(),
'setPaymentForm' => $setPaymentForm->createView(),
'currencie_convert' => $currency->getRate($session->get('converter')),
"converter" => (!empty($session->get('converter'))) ? $session->get('converter') : "EUR",
'setShipmentForm' => $setShipmentForm->createView(),
'setDiscountForm' => $setDiscountForm->createView(),
'itemsInCart' => $order->getCurrent()->getItemsTotal(),
'order_cat' => $order->getCurrent()->getCart_cat(),
'cart_cat_order' => $order->getCurrent()->getCart_cat(),
]);
}
/**
* @Route("/cart/payment/{orderId}/{contactId}", name="premium_payment")
* @param Request $request
* @return Response
*/
public function paymentAction(Request $request,
StripeService $stripe,
OrderFactory $order,
$contactId,
AuthenticationUtils $authenticationUtils,
$orderId,
SessionInterface $session,
EmailService $emailService,
ProductRepository $productRepository,
CurrencyService $currency) {
/** @var User $user */
$user = $this->getUser();
$userData = ["name" => $user->getName(), "forname" => $user->getForeName()];
$first_name = $request->request->get('first_name');
$email = $request->request->get('email');
$stripeToken = $request->request->get('stripeToken');
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
if ($request->isMethod('POST')) {
if ($first_name) {
try {
$entity = $this->getDoctrine()->getManager();
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('pdf/rechnungsmuster.html.twig', [
'error' => $error,
'last_username' => $lastUsername,
'order' => $order,
'userData' => $userData,
'locale' => $request->getLocale(),
'currencie_convert' => $currency->getRate($session->get('converter')),
"converter" => (!empty($session->get('converter'))) ? $session->get('converter') : "EUR",
'itemsInCart' => $order->getCurrent()->getItemsTotal(),
]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Store PDF Binary Data
$output = $dompdf->output();
$publicDirectory = $this->getParameter('kernel.project_dir') . '/public/invoices/';
// e.g /var/www/project/public/mypdf.pdf
$pdfFilepath = $publicDirectory . 'invoice_' . $order->getCurrent()->getId() . '.pdf';
// Write file to the desired path
file_put_contents($pdfFilepath, $output);
$invoice_pdf = new invoice();
$invoice_pdf->setInvoiceUrl('invoice_' . $order->getCurrent()->getId() . '.pdf');
$invoice_pdf->setInvoiceId($contactId);
$invoice_pdf->setPaymentInfo("Visa Card");
$invoice_pdf->setUser($user);
$invoice_pdf->setInvoiceNumber($order->getCurrent()->getId());
$entity->persist($invoice_pdf);
$entity->flush();
$orderPay = new OrderPayment();
// $date = (new \DateTime('now'))->format("Y-m-d H:i:s");jij
$orderPay->setContactId($contactId);
$orderPay->setTransactionId($stripeToken);
$orderPay->setInvoiceId($invoice_pdf->getInvoiceId());
$orderPay->setUser($user);
$orderPay->setPaymentAmount($order->getCurrent()->getPriceTotal() + 2.99*$currency->getRate($session->get('converter')));
$orderPay->setCurrencyCode((!empty($session->get('converter'))) ? $session->get('converter') : "EUR");
$orderPay->setPaymentStatus(0);
$orderPay->setOrderId($order->getCurrent()->getId());
$entity->persist($orderPay);
$entity->flush();
$emailService->sendMail($user->getEmail(), Emails::PAYMENT_SUCCESS, ["name" => $user->getForeName()]);
$stripe->createCharge($this->getUser(), $stripeToken, $order->getCurrent()->getPriceTotal() * 100);
$session->clear();
return $this->redirectToRoute('home1');
} catch (\Stripe\Error\Base $e) {
$this->addFlash('warning', sprintf('Unable to take payment, %s', $e instanceof \Stripe\Error\Card ? lcfirst($e->getMessage()) : 'please try again.'));
return $this->redirectToRoute('premium_payment');
}
}
}
return $this->render('cart/paymentStripe.html.twig', [
'amount' => $order->getCurrent()->getPriceTotal(),
'contactId' => $contactId,
'orderId' => $orderId,
'stripe_public_key' => $this->getParameter('stripe_public_key'),
'order_cat' => $order->getCurrent()->getCart_cat(),
]);
}
/**
* @Route("/cart/Payment-Customer", name="cart-payment-customer")
* @param Request $request
*/
public function PaymentCustomer(Request $request,
SessionInterface $session,
OrderFactory $order,
EmailService $emailService,
ProductRepository $productRepository,
\Swift_Mailer $mailer,
CurrencyService $currency
) {
/**
* @var User $user
*/
$user = $this->getUser();
$userData = ["name" => $user->getName(), "forname" => $user->getForeName()];
// $orderPay->setCreatedAt($date);
if ($request->isXmlHttpRequest()) {
$arr_cus =
["friend_name" => $request->request->get('friend_name'),
"friend_tel" => !empty($request->request->get('friend_tel')) ? $request->request->get('friend_tel') : "",
"id_friend" => $request->request->get('friend_id'),
"friend_note" => $request->request->get('friend_note'),
"summe" => $request->request->get('summe'),
"order_id" => $order->getCurrent()->getId(),
"payment_type" => $request->request->get('payment_type'),
"delivery_type" => $request->request->get('delivery_type') ,
"currencie" => (!empty($session->get('converter'))) ? $session->get('converter') : "EUR",
'order_cat' => !is_null($order->getCurrent()->getCart_cat())?$order->getCurrent()->getCart_cat():1,
];
$payment = $this->getDoctrine()->getRepository('App\Component\Payment\Model:Payment')->findOneBy(['id' => $request->request->get('payment_type')]);
if($payment){
$this->orderFactory->setPayment($payment);
}
if ($payment->getName() == "Bank Transfert") {
if ($request->request->get('friend_id') == 0 || $request->request->get('friend_id') == 10000000 ) {
$customerContact = new CustomerContact();
$customerContact->addUser($user);
$customerContact->SetName($request->request->get('friend_name'));
$customerContact->setMsg($request->request->get('friend_note'));
$customerContact->setStatus(10);
$customerContact->setMobile(!empty($request->request->get('friend_tel')) ? $request->request->get('friend_tel') : "");
$customerContact->setAddress(!empty($request->request->get('delivery_type')) ? $request->request->get('delivery_type') : "");
// Save
$entity = $this->getDoctrine()->getManager();
$entity->persist($customerContact);
$entity->flush();
$lastContactId = $customerContact->getId();
} else {
$customerContact = $this->getDoctrine()->getRepository(CustomerContact::class)->find($request->request->get('friend_id'));
$customerContact->SetName($request->request->get('friend_name'));
$customerContact->setMsg($request->request->get('friend_note'));
$customerContact->setMobile($request->request->get('friend_tel'));
$customerContact->setAddress($request->request->get('delivery_type'));
// Save
$em = $this->getDoctrine()->getManager();
$em->flush();
$lastContactId = $request->request->get('friend_id');
}
array_push($arr_cus, $lastContactId);
$entity = $this->getDoctrine()->getManager();
$invoice_pdf = new invoice();
$invoice_pdf->setInvoiceUrl('invoice_' . $order->getCurrent()->getId() . '.pdf');
$invoice_pdf->setInvoiceId($lastContactId);
$invoice_pdf->setPaymentInfo($request->request->get('friend_note'));
$invoice_pdf->setUser($user);
$invoice_pdf->setInvoiceNumber($order->getCurrent()->getId());
$entity->persist($invoice_pdf);
$entity->flush();
$orderPay = new OrderPayment();
// $date = (new \DateTime('now'))->format("Y-m-d H:i:s");jij
$orderPay->setContactId($lastContactId);
$orderPay->setTransactionId("BT-" . $orderPay->getId());
$orderPay->setOrderId($order->getCurrent()->getId());
$orderPay->setInvoiceId($invoice_pdf->getInvoiceId());
$orderPay->setUser($user);
// $orderPay->setPaymentAmount((int) $request->request->get('summe'));
$amountTotal = $order->getCurrent()->getPriceTotal() + (2.99*$currency->getRate($session->get('converter')));
$orderPay->setPaymentAmount($amountTotal);
$orderPay->setCurrencyCode((!empty($session->get('converter'))) ? $session->get('converter') : "EUR");
$orderPay->setPaymentStatus(0);
$entity->persist($orderPay);
$entity->flush();
if($user->getCodePromoStatus() == 2){
$em = $this->getDoctrine()->getManager();
$discount = $this->getDoctrine()->getRepository('App\Component\Discount\Model:Discount')->findOneBy(['userId'=>$user->getId()]);
if(!is_null($discount)) {
$discount->setUserId(0);
$user->setCodePromoName("");
$user->setCodePromoStatus(0);
$user->setCodePromoValue("");
$em->persist($discount);
$em->persist($user);
$em->flush();
}else{
}
}
$date = (new \DateTime('now'))->format("d-m-Y");
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
$path = 'img/logo/logo.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('pdf/rechnungsmuster.html.twig', [
'logo'=>$base64,
'order' => $order,
'user_id'=>$user->getId(),
'telephone_user' => $user->getMobile(),
'invoiceID'=>$invoice_pdf->getInvoiceId(),
'methode_payment'=>"Bank Transfert",
'destinataire'=>$request->request->get('friend_name'),
'telephone_destinataire'=>$request->request->get('friend_tel'),
'message_destinataire'=> !empty($request->request->get('friend_note')) ? $request->request->get('friend_note') : "",
'mode_livraison'=>$request->request->get('delivery_type'),
'date_invoice'=>$date,
'userData' => $userData,
'locale' => $request->getLocale(),
'currencie_convert' => $currency->getRate($session->get('converter')),
"converter" => (!empty($session->get('converter'))) ? $session->get('converter') : "EUR",
'itemsInCart' => $order->getCurrent()->getItemsTotal(),
]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Store PDF Binary Data
$output = $dompdf->output();
$publicDirectory = $this->getParameter('kernel.project_dir') . '/public/invoices/';
// e.g /var/www/project/public/mypdf.pdf
$pdfFilepath = $publicDirectory . 'invoice_' . $order->getCurrent()->getId() . '.pdf';
// Write file to the desired path
file_put_contents($pdfFilepath, $output);
//$emailService->sendMail($user->getEmail(), Emails::PAYMENT_SUCCESS, ["name" => $user->getForeName()]);
$villeName = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$numberVille = !is_null($order->getCurrent()->getCart_cat())?$order->getCurrent()->getCart_cat():1;
$message = (new \Swift_Message('Attente de Confirmation du paiement pour la commande n°'.$invoice_pdf->getInvoiceId().' sur YeYeTo.Com dans la ville de '. $villeName[$numberVille].' '))
->setFrom('info@yeyeto.com')
->setTo($user->getEmail())
->setBody(
$this->renderView(
'email/bankTransfert.html.twig', [
"code" => $orderPay->getId(),
"custoData" => $customerContact->getName(),
"amount" => $amountTotal,
'logo'=>$base64,
'order' => $order,
'user_id'=>$user->getId(),
'telephone_user' => $user->getMobile(),
'invoiceID'=>$invoice_pdf->getInvoiceId(),
'methode_payment'=> "Bank Transfert",
'destinataire'=>$request->request->get('friend_name'),
'telephone_destinataire'=>$request->request->get('friend_tel'),
'message_destinataire'=> $request->request->get('friend_tel'),
'mode_livraison'=>$request->request->get('delivery_type'),
'date_invoice'=>$date,
'userData' => $userData,
'locale' => $request->getLocale(),
'currencie_convert' => $currency->getRate($session->get('converter')),
"converter" => (!empty($session->get('converter'))) ? $session->get('converter') : "EUR",
'itemsInCart' => $order->getCurrent()->getItemsTotal(),
]
),
'text/html'
)->attach(\Swift_Attachment::fromPath($pdfFilepath,"application/pdf"));
$mailer->send($message);
$json=[];
$json[] = $arr_cus;
$session->clear();
return new JsonResponse($json);
}
if ($payment->getName() == "visa card" || $payment->getName() == "Paypal" || $payment->getName() == "Pay Yeyeto" ) {
$session->set('customer_data', $arr_cus);
// $session->get('cat_c1');
$json=[];
$json[] = $arr_cus;
return new JsonResponse($json);
} else {
return new JsonResponse($json);
}
} else {
$json['error'] = "Error";
}
return new JsonResponse($json);
}
/**
* @Route("/cart/bank-transfer/{orderId}/{contactId}", name="cart-bank-transfer")
* @param Request $request
*/
public function BankCustomer(OrderFactory $order,
$orderId,
$contactId,
AuthenticationUtils $authenticationUtils,
paypalExpress $paymentService,
SessionInterface $session,
Request $request,
WishListRepository $wishrepo) {
$clearForm = $this->createForm(ClearCartType::class, $order->getCurrent());
$setPaymentForm = $this->createForm(SetPaymentType::class, $order->getCurrent());
$setShipmentForm = $this->createForm(SetShipmentType::class, $order->getCurrent());
$setDiscountForm = $this->createForm(SetDiscountType::class, $order->getCurrent());
$custoCon = $this->getDoctrine()->getRepository(CustomerContact::class)->findOneBy(['id' => $contactId]);
$custoOrd = $this->getDoctrine()->getRepository(OrderPayment::class)->findOneBy(['order_id' => $orderId]);
// dd($custoOrd);exit;
/**
* @var User $user
*/
$user = $this->getUser();
$userData = ["name" => $user->getName(),
"forname" => $user->getForeName(),
];
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
$user_wish = (!is_null($user))?$wishrepo->countUserWishList($user->getId())["cnt"]:"";
$user_bookingValue = (!is_null($user))?((float)(base64_decode($user->getBookingValue()))):"0,00";
$null_1 = "000000";
$em = $this->getDoctrine()->getManager();
$sql_query = ' UPDATE cart_order_item SET session_id = "' . $null_1 . '" WHERE order_id = "' . $orderId . '" ; ';
$statement1 = $em->getConnection()->prepare($sql_query);
$statement1->execute();
return $this->render('cart/banktransfer.html.twig', [
'error' => $error,
'last_username' => $lastUsername,
'userWish' => $user_wish,
'bookingValue'=>$user_bookingValue,
'userData' => $userData,
"code" => $custoOrd->getId(),
"custoData" => $custoCon->getName(),
"amount" => $custoOrd->getPaymentAmount(),
'order' => $order,
"converter" => (!empty($session->get('converter'))) ? $session->get('converter') : "EUR",
'id_order' => $order->getCurrent()->getId(),
'clearForm' => $clearForm->createView(),
'setPaymentForm' => $setPaymentForm->createView(),
'setShipmentForm' => $setShipmentForm->createView(),
'setDiscountForm' => $setDiscountForm->createView(),
'itemsInCart' => $order->getCurrent()->getItemsTotal(),
'order_cat' => $order->getCurrent()->getCart_cat(),
]);
}
/**
* @Route("/cart/otherfriend/{id}/{status}", name="cart-otherfriend")
* @param Request $request
*/
public function OtherCustomer($id, $status, ProductRepository $productRepository, OrderFactory $order)
{
$custoCon = $this->getDoctrine()->getRepository(CustomerContact::class)->findOneBy(['id' => $id,'status'=>$status]);
return $this->render('cart/otherfriend.html.twig', [
'order' => $order,
'id' => $custoCon->getId(),
'name' => $custoCon->getName(),
'mobile' => $custoCon->getMobile(),
]);
}
/**
* @Route("/cart/action/{cat_sp}", name="cart-action")
* @param Request $request
* @param CurrencyService $currency
*/
public function buyAction(CurrencyService $currency, OrderFactory $order, SessionInterface $session, $cat_sp, ProductRepository $productRepository)
{
$repository = $this->getDoctrine()->getRepository(Product::class);
$action = $productRepository->findAllProductByAction($cat_sp);
for ($i = 0; $i < count($action); $i++) {
$this->orderFactory->addItemRecharge($repository->findOneBy(['id' => $action[$i]["prod_id"]]), $action[$i]["qty"]);
}
//69494 51 89 Nazer
return $this->redirectToRoute('home1');
}
/**
*@Route({
* "fr": "/cart/checkout",
* "en": "/cart/checkout/en"
* }, name="cart-checkout")
*@param paypalExpress $paymentService
*@param Request $request
*/
public function checkoutCart(OrderFactory $order,
paypalExpress $paymentService,
SessionInterface $session,
Request $request,
CurrencyService $currency,
AuthenticationUtils $authenticationUtils,
WishListRepository $wishrepo) {
$clearForm = $this->createForm(ClearCartType::class, $order->getCurrent());
$setPaymentForm = $this->createForm(SetPaymentType::class, $order->getCurrent());
$setShipmentForm = $this->createForm(SetShipmentType::class, $order->getCurrent());
$setDiscountForm = $this->createForm(SetDiscountType::class, $order->getCurrent());
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
/**
* @var User $user
*/
$user = $this->getUser();
if (!is_null($user)) {
$user_wish = $wishrepo->countUserWishList($user->getId())["cnt"];
} else {
return $this->redirectToRoute('cart');
}
$user_bookingValue = (!is_null($user))?((float)(base64_decode($user->getBookingValue()))):"0,00";
// dd( $currency->getRate($session->get('converter'))); exit;
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
// dd($this->getDoctrine()->getRepository(Payment::class)->findAll()); exit;
foreach ($this->getDoctrine()->getRepository(Payment::class)->findAll() as $pay_data) {
$payData[] = ['id' => $pay_data->getId(), 'name' => $pay_data->getName(), 'price' => $pay_data->getPrice()];
}
$customerContact = new CustomerContact();
$formCust = $this->createForm(CustomerContactType::class, $customerContact);
if ($shipment = $this->getDoctrine()->getRepository('App\Component\Shipment\Model:Shipment')->findOneBy(['id' => $order->getCurrent()->getShipment()])) {
$shipment_info = ["id" => $shipment->getId(), "name" => $shipment->getName(), "price" => $shipment->getPrice(), "image" => $shipment->getImage()];
} else {
$shipment_info = ["id" => "0", "name" => "Retrait au magasin", "price" => 0, "image" => "<span class='fa fa-home fa-3x'></span>"];
}
$formCust->handleRequest($request);
if ($formCust->isSubmitted() && $formCust->isValid()) {
$customerContact->addUser($user);
// Save
$em = $this->getDoctrine()->getManager();
$em->persist($customerContact);
$em->flush();
return $this->redirectToRoute('cart-checkout');
}
$custoConts = $this->getDoctrine()->getRepository(CustomerContact::class)->findBy(['user' => $user->getId(),'status'=>10]);
// $payment = $this->getDoctrine()->getRepository(Payment::class)->findAll();
// $shipment = $this->getDoctrine()->getRepository(Shipment::class)->findAll();
$order->getCurrent()->setUserId($user->getId());
$em = $this->getDoctrine()->getManager();
$em->flush();
if (count($custoConts) > 0) {
foreach ($custoConts as $custoCon) {
$arr_cust[] = ['id' => $custoCon->getId(), 'name' => $custoCon->getName(), 'mobile' => $custoCon->getMobile()];
}
} else {
$arr_cust[] = ['id' => "", 'name' => "", 'mobile' => ""];
}
return $this->render('cart/checkout.html.twig', [
'error' => $error,
'ville' => array_key_exists($order->getCurrent()->getCart_cat(), $ville) ? $ville[$order->getCurrent()->getCart_cat()] : "Aucune",
'last_username' => $lastUsername,
'payData' => $payData,
"shipment_info" => $shipment_info,
'arr_custs' => $arr_cust,
"arr_custs_length" => count($custoConts),
'paypal_client_id' => $paymentService::PayPal_CLIENT_ID,
'paypal_secret' => $paymentService::PayPal_SECRET,
'paypal_base_url' => $paymentService::PayPal_BASE_URL,
'base_url' => $paymentService::BASE_URL,
'userWish' => $user_wish,
'bookingValue'=>$user_bookingValue,
'order' => $order,
"converter" => (!empty($session->get('converter'))) ? $session->get('converter') : "EUR",
'currencie_convert' => $currency->getRate($session->get('converter')),
'id_order' => $order->getCurrent()->getId(),
'cart_cat_order' => $order->getCurrent()->getCart_cat(),
'clearForm' => $clearForm->createView(),
'setPaymentForm' => $setPaymentForm->createView(),
'setShipmentForm' => $setShipmentForm->createView(),
'setDiscountForm' => $setDiscountForm->createView(),
'formCust' => $formCust->createView(),
'itemsInCart' => $order->getCurrent()->getItemsTotal(),
'order_cat' => $order->getCurrent()->getCart_cat(),
]);
}
public function addItemForm(Product $product): Response
{
$form = $this->createForm(AddItemType::class, $product);
return $this->render('cart/_addItem_form.html.twig', [
'form' => $form->createView(),
]);
}
public function addItemForm1(Product $product): Response
{
$form = $this->createForm(AddProductType::class, $product);
return $this->render('cart/_addproduct.html.twig', [
'form' => $form->createView(),
]);
}
/**
* @Route({
* "fr": "/cart/addWishlist/{id}",
* "en": "/cart/addWishlist/{id}/en"
* }, name="cart.addWishlist", methods={"POST"})
* @param Request $request
*
*/
public function AddWishlist(Request $request, SessionInterface $session, ProductRepository $prodrepo, WishListRepository $wishrepo): Response
{
$productId = $request->request->get('product_wish');
$product = $prodrepo->find($productId);
if (!is_null($this->tokenStorage->getToken()) && $this->tokenStorage->getToken() == 'anon.') {
$session->getFlashBag()->add('error', 'You have to be logged to add to the wishlist');
return new RedirectResponse('home1');
}
if ($this->tokenStorage->getToken()) {
$user = $this->tokenStorage->getToken()->getUser();
// $tokenUser->getUser()
// $delay = new \DateTime ();
// $delay
// ->setTimestamp (strtotime ('2 minutes ago'));
// We are checking the Admin class in order to be certain we can
// call "getLastActivity".
// && $user->getLastActivity() < $delay) {
if ($user == "anon.") {
$this->addFlash('error', 'Vous devez vous connecter à votre compte ou en créer un!');
// redirect
return $this->redirectToRoute('app_login1');
}
$wishlist = $wishrepo->findOneBy(array('user' => $user->getId()));
if (is_null($wishlist)) {
$wishlist = new WishList();
$wishlist->setUser($user);
}
$wishlist->addProduct($product);
$em = $this->getDoctrine()->getManager();
$em->persist($wishlist);
$em->flush();
$session->getFlashBag()->add('success', 'Product added to the wishlist');
return $this->redirect($request->server->get('HTTP_REFERER'));
}
return $this->redirectToRoute('home1');
}
public function removeItemForm(OrderItem $item): Response
{
$form = $this->createForm(RemoveItemType::class, $item);
return $this->render('cart/_removeItem_form.html.twig', [
'form' => $form->createView(),
]);
}
public function setItemQuantityForm(OrderItem $item): Response
{
$form = $this->createForm(SetItemQuantityType::class, $item);
return $this->render('cart/_setItemQuantity_form.html.twig', [
'form' => $form->createView(),
]);
}
public function setCartItemQuantityForm(OrderItem $item): Response
{
$form = $this->createForm(SetItemQuantityType::class, $item);
return $this->render('cart/_setCartItemQuantity_form.html.twig', [
'form' => $form->createView(),
]);
}
/**
* @Route({
* "fr": "/cart/addProduct/{id}",
* "en": "/cart/addProduct/{id}/en"
* }, name="cart.addProduct", methods={"POST"})
* @param Request $request
*
*/
public function addProduct(Request $request, Product $product): Response
{
/*
$form = $this->createForm(AddProductType::class, $product);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->addItem($product, $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addProduct.message.success'));
}
return $this->redirectToRoute('home1');
*/
$session = new Session();
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(AddProductType::class, $product);
$form->handleRequest($request);
$id = $form->get("id")->getData();
$QUERY = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" ORDER BY DATE(created_at) DESC LIMIT 1 ;';
$statement = $em->getConnection()->prepare($QUERY);
$statement->execute();
$result = $statement->fetch();
if ($result == false) {
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->addItem($product, $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addItem.message.success'));
$QUERY1 = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" AND product_id = "' . $id . '" LIMIT 1 ;';
$statement1 = $em->getConnection()->prepare($QUERY1);
$statement1->execute();
$result1 = $statement1->fetch();
$sql_query = ' UPDATE cart_order SET cart_cat = ' . $product->getCart_cat() . ' WHERE id = "' . $result1["order_id"] . '" ; ';
$statement2 = $em->getConnection()->prepare($sql_query);
$statement2->execute();
}
return $this->redirectToRoute('home1');
} else if (($result != false) && $result["cart_cat"] != $product->getCart_cat() && $result["cart_cat"] != 10) {
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$message = "Impossible! Vous avez au depart choisit un magasin dans la ville de " . $ville[$result["cart_cat"]] . " et maintenant vous changez par celui de " . $ville[$product->getCart_cat()] . ". Vous ne pouvez que faire vos achats dans les magasins d'une même ville: ";
$this->addFlash('error', $message);
return $this->redirectToRoute('cart');
}if (($result != false && $result["cart_cat"] == $product->getCart_cat()) || ($result["cart_cat"] != $product->getCart_cat() && $result["cart_cat"] == 10)) {
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->addItem($product, $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addItem.message.success'));
$QUERY1 = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" AND product_id = "' . $id . '" ORDER BY DATE(created_at) DESC LIMIT 1 ;';
$statement1 = $em->getConnection()->prepare($QUERY1);
$statement1->execute();
$result1 = $statement1->fetch();
$sql_query = ' UPDATE cart_order SET cart_cat = ' . $product->getCart_cat() . ' WHERE id = "' . $result1["order_id"] . '" ; ';
$statement2 = $em->getConnection()->prepare($sql_query);
$statement2->execute();
}
return $this->redirectToRoute('home1');
} else {
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$message = "Impossible! Vous avez au depart choisit un magasin dans la ville de " . $ville[$result["cart_cat"]] . " et maintenant vous changer par celui de " . $ville[$product->getCart_cat()] . ". Vous ne pouvez que faire vos achats dans les magasins d'une même ville: ";
$this->addFlash('error', $message);
return $this->redirectToRoute('cart');
}
}
/**
* @Route({
* "fr": "/cart/addItem/{id}",
* "en": "/cart/addItem/{id}/en"
* }, name="cart.addItem", methods={"POST"})
* @param Request $request
*
*/
public function addItem(Request $request, Product $product, $id): Response
{
$session = new Session();
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(AddItemType::class, $product);
$form->handleRequest($request);
$QUERY = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" ORDER BY DATE(created_at) DESC LIMIT 1 ;';
$statement = $em->getConnection()->prepare($QUERY);
$statement->execute();
$result = $statement->fetch();
if ($result == false) {
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->addItem($product, $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addItem.message.success'));
$QUERY1 = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" AND product_id = "' . $id . '" LIMIT 1 ;';
$statement1 = $em->getConnection()->prepare($QUERY1);
$statement1->execute();
$result1 = $statement1->fetch();
$sql_query = ' UPDATE cart_order SET cart_cat = ' . $product->getCart_cat() . ' WHERE id = "' . $result1["order_id"] . '" ; ';
$statement2 = $em->getConnection()->prepare($sql_query);
$statement2->execute();
}
return $this->redirectToRoute('home1');
} else if (($result != false) && $result["cart_cat"] != $product->getCart_cat() && $result["cart_cat"] != 10) {
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$message = "Impossible! Vous avez au depart choisit un magasin dans la ville de " . $ville[$result["cart_cat"]] . " et maintenant vous changer par celui de " . $ville[$product->getCart_cat()] . ". Vous ne pouvez que faire vos achats dans les magasins d'une même ville: ";
$this->addFlash('error', $message);
return $this->redirectToRoute('cart');
}if (($result != false && $result["cart_cat"] == $product->getCart_cat()) || ($result["cart_cat"] != $product->getCart_cat() && $result["cart_cat"] == 10)) {
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->addItem($product, $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addItem.message.success'));
$QUERY1 = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" AND product_id = "' . $id . '" ORDER BY DATE(created_at) DESC LIMIT 1 ;';
$statement1 = $em->getConnection()->prepare($QUERY1);
$statement1->execute();
$result1 = $statement1->fetch();
$sql_query = ' UPDATE cart_order SET cart_cat = ' . $product->getCart_cat() . ' WHERE id = "' . $result1["order_id"] . '" ; ';
$statement2 = $em->getConnection()->prepare($sql_query);
$statement2->execute();
}
return $this->redirectToRoute('home1');
} else {
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$message = "Impossible! Vous avez au depart choisit un magasin dans la ville de " . $ville[$result["cart_cat"]] . " et maintenant vous changer par celui de " . $ville[$product->getCart_cat()] . ". Vous ne pouvez que faire vos achats dans les magasins d'une même ville: ";
$this->addFlash('error', $message);
return $this->redirectToRoute('cart');
}
}
/**
* @Route({
* "fr": "/cart/addsearch/{id}",
* "en": "/cart/addsearch/{id}/en"
* }, name="cart_search", methods={"POST"})
* @param Request $request
*
*/
public function addSearchProduct(Request $request, Product $product): Response
{
if ($request->request->get('product_id')) {
$session = new Session();
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(Product::class);
$QUERY = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" ORDER BY DATE(created_at) DESC LIMIT 1 ;';
$statement = $em->getConnection()->prepare($QUERY);
$statement->execute();
$result = $statement->fetch();
if ($result == false) {
$this->orderFactory->addItem($repository->findOneBy(['id' => $request->request->get('product_id')]), $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addItem.message.success'));
$QUERY1 = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" AND product_id = "' . $request->request->get('product_id') . '" LIMIT 1 ;';
$statement1 = $em->getConnection()->prepare($QUERY1);
$statement1->execute();
$result1 = $statement1->fetch();
$sql_query = ' UPDATE cart_order SET cart_cat = ' . $product->getCart_cat() . ' WHERE id = "' . $result1["order_id"] . '" ; ';
$statement1 = $em->getConnection()->prepare($sql_query);
$statement1->execute();
return $this->redirectToRoute('shop_detail_ville', ['ville' => $request->request->get('cat'), 'magasin' => $request->request->get('magasin'), 'categorie'=>$request->request->get('categorie'), 'type'=>$request->request->get('type')]);
} // elseif (($result != false) && $result["cart_cat"] != $product->getCart_cat()) {
else if (($result != false) && $result["cart_cat"] != $product->getCart_cat() && $result["cart_cat"] != 10) {
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$message = "Impossible! Vous avez au depart choisit un magasin dans la ville de " . $ville[$result["cart_cat"]] . " et maintenant vous changer par celui de " . $ville[$product->getCart_cat()] . " vous ne pouvez que faire vos achats dans les magasins d'une même ville: ";
$this->addFlash('error', $message);
return $this->redirectToRoute('cart');
} //elseif (($result != false) && $result["cart_cat"] == $product->getCart_cat()) {
if (($result != false && $result["cart_cat"] == $product->getCart_cat()) || ($result["cart_cat"] != $product->getCart_cat() && $result["cart_cat"] == 10)) {
$this->orderFactory->addItem($repository->findOneBy(['id' => $request->request->get('product_id')]), $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addItem.message.success'));
$QUERY1 = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" AND product_id = "' . $request->request->get('product_id') . '" ORDER BY DATE(created_at) DESC LIMIT 1 ;';
$statement1 = $em->getConnection()->prepare($QUERY1);
$statement1->execute();
$result1 = $statement1->fetch();
$sql_query = ' UPDATE cart_order SET cart_cat = ' . $product->getCart_cat() . ' WHERE id = "' . $result1["order_id"] . '" ; ';
$statement2 = $em->getConnection()->prepare($sql_query);
$statement2->execute();
// return $this->redirectToRoute('home1');
return $this->redirectToRoute('shop_detail_ville', ['ville' => $request->request->get('cat'), 'magasin' => $request->request->get('magasin'), 'categorie'=>$request->request->get('categorie'), 'type'=>$request->request->get('type')]);
} else {
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$message = "Impossible! Vous avez au depart choisit un magasin dans la ville de " . $ville[$result["cart_cat"]] . " et maintenant vous changer par celui de " . $ville[$product->getCart_cat()] . ". Vous ne pouvez que faire vos achats dans les magasins d'une même ville: ";
$this->addFlash('error', $message);
return $this->redirectToRoute('cart');
}
}
}
/**
* @Route({
* "fr": "/cart/addsearch2/{id}",
* "en": "/cart/addsearch2/{id}/en"
* }, name="cart_search2", methods={"POST"})
* @param Request $request
*
*/
public function addSearchProducts(Request $request, Product $product): Response
{
if ($request->request->get('product_id')) {
$session = new Session();
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(Product::class);
$QUERY = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" ORDER BY DATE(created_at) DESC LIMIT 1 ;';
$statement = $em->getConnection()->prepare($QUERY);
$statement->execute();
$result = $statement->fetch();
if ($result == false) {
$this->orderFactory->addItem($repository->findOneBy(['id' => $request->request->get('product_id')]), $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addItem.message.success'));
$QUERY1 = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" AND product_id = "' . $request->request->get('product_id') . '" LIMIT 1 ;';
$statement1 = $em->getConnection()->prepare($QUERY1);
$statement1->execute();
$result1 = $statement1->fetch();
$sql_query = ' UPDATE cart_order SET cart_cat = ' . $product->getCart_cat() . ' WHERE id = "' . $result1["order_id"] . '" ; ';
$statement1 = $em->getConnection()->prepare($sql_query);
$statement1->execute();
// return $this->redirectToRoute('home1');
return $this->redirect($request->server->get('HTTP_REFERER'));
} // elseif (($result != false) && $result["cart_cat"] != $product->getCart_cat()) {
else if (($result != false) && $result["cart_cat"] != $product->getCart_cat() && $result["cart_cat"] != 10) {
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$message = "Impossible! Vous avez au depart choisit un magasin dans la ville de " . $ville[$result["cart_cat"]] . " et maintenant vous changer par celui de " . $ville[$product->getCart_cat()] . " vous ne pouvez que faire vos achats dans les magasins d'une même ville: ";
$this->addFlash('error', $message);
return $this->redirectToRoute('cart');
} //elseif (($result != false) && $result["cart_cat"] == $product->getCart_cat()) {
if (($result != false && $result["cart_cat"] == $product->getCart_cat()) || ($result["cart_cat"] != $product->getCart_cat() && $result["cart_cat"] == 10)) {
$this->orderFactory->addItem($repository->findOneBy(['id' => $request->request->get('product_id')]), $request->request->get('quantity'));
$this->addFlash('success', $this->translator->trans('app.cart.addItem.message.success'));
$QUERY1 = 'SELECT * FROM cart_order_item where session_id = "' . $session->getId() . '" AND product_id = "' . $request->request->get('product_id') . '" ORDER BY DATE(created_at) DESC LIMIT 1 ;';
$statement1 = $em->getConnection()->prepare($QUERY1);
$statement1->execute();
$result1 = $statement1->fetch();
$sql_query = ' UPDATE cart_order SET cart_cat = ' . $product->getCart_cat() . ' WHERE id = "' . $result1["order_id"] . '" ; ';
$statement2 = $em->getConnection()->prepare($sql_query);
$statement2->execute();
// return $this->redirectToRoute('home1');
return $this->redirect($request->server->get('HTTP_REFERER'));
} else {
$ville = [1 => "Douala", 2 => "Yaoundé", 3 => "Bafoussam", 4 => "Mbouda", 10 => ""];
$message = "Impossible! Vous avez au depart choisit un magasin dans la ville de " . $ville[$result["cart_cat"]] . " et maintenant vous changer par celui de " . $ville[$product->getCart_cat()] . ". Vous ne pouvez que faire vos achats dans les magasins d'une même ville: ";
$this->addFlash('error', $message);
return $this->redirectToRoute('cart');
}
}
}
/**
* @Route({
* "fr": "/cart/removeItem/{id}",
* "en": "/cart/removeItem/{id}/en"
* }, name="cart.removeItem", methods={"POST"})
* @param Request $request
*
*/
public function removeItem(Request $request, OrderItem $item): Response
{
$form = $this->createForm(RemoveItemType::class, $item);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->removeItem($item);
$this->addFlash('success', $this->translator->trans('app.cart.removeItem.message.success'));
}
return $this->redirectToRoute('cart');
}
/**
* @Route({
* "fr": "/cart/getremoveItem/{id}",
* "en": "/cart/getremoveItem/{id}/en"
* }, name="getremoveItem", methods={"GET"})
* @param Request $request
*
*/
public function getRemoveItem(Request $request, $id): Response
{
$orderItem = $this->getDoctrine()->getRepository('App\Component\Order\Model:OrderItem')->findOneBy(array('id'=>$id));
if ($orderItem != null){
$this->orderFactory->removeItem($orderItem);
$this->addFlash('success', $this->translator->trans('app.cart.removeItem.message.success'));
}
return $this->redirectToRoute('cart');
}
/**
* @Route({
* "fr": "/cart/setItemQuantity/{id}",
* "en": "/cart/setItemQuantity/{id}/en"
* }, name="cart.setItemQuantity", methods={"POST"})
* @param Request $request
*
*/
public function setQuantity(Request $request, OrderItem $item): Response
{
$form = $this->createForm(SetItemQuantityType::class, $item);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->setItemQuantity($item, $form->getData()->getQuantity());
$this->addFlash('success', $this->translator->trans('app.cart.setItemQuantity.message.success'));
}
return $this->redirectToRoute('cart');
}
/**
* @Route({
* "fr": "/cart/clear",
* "en": "/cart/clear/en"
* }, name="cart.clear", methods={"POST"})
* @param Request $request
*
*/
public function clear(Request $request): Response
{
$form = $this->createForm(ClearCartType::class, $this->orderFactory->getCurrent());
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->clear();
$this->addFlash('success', $this->translator->trans('app.cart.clear.message.success'));
}
return $this->redirectToRoute('home1');
}
/**
* @Route({
* "fr": "/cart/setPayment",
* "en": "/cart/setPayment/en"
* }, name="cart.setPayment", methods={"POST"})
* @param Request $request
*
*/
public function setPayment(Request $request, OrderFactory $order): Response
{
$form = $this->createForm(SetPaymentType::class, $order->getCurrent());
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->setPayment($form->getData()->getPayment());
$this->addFlash('success', $this->translator->trans('app.cart.setPayment.message.success'));
}
return $this->redirectToRoute('cart');
}
/**
* @Route({
* "fr": "/cart/setShipment",
* "en": "/cart/setShipment/en"
* }, name="cart.setShipment", methods={"POST"})
* @param Request $request
*
*/
public function setShipment(Request $request): Response
{
$form = $this->createForm(SetShipmentType::class, $this->orderFactory->getCurrent());
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->orderFactory->setShipment($form->getData()->getShipment());
$this->addFlash('success', $this->translator->trans('app.cart.setShipment.message.success'));
}
//return $this->redirectToRoute('cart');
return $this->redirect($request->server->get('HTTP_REFERER'));
}
/**
* @Route({
* "fr": "/cart/setDiscount",
* "en": "/cart/setDiscount/en"
* }, name="cart.setDiscount", methods={"POST"})
* @param Request $request
*
*/
public function setDiscount(Request $request): Response
{
/**
* @var User $user
*/
$user = $this->getUser();
$form = $this->createForm(SetDiscountType::class, $this->orderFactory->getCurrent());
$form->handleRequest($request);
$em = $this->getDoctrine()->getManager();
if ($form->isSubmitted() && $form->isValid()) {
if(!is_null($user)){
$discount = $this->getDoctrine()->getRepository('App\Component\Discount\Model:Discount')->findOneBy([
'code' => $form->get('discountCode')->getData(),'userId'=>$user->getId()
]);
if ($discount !== null) {
$this->orderFactory->setDiscount($discount);
// $discount->setUserId(0);
//$user->setCodePromoName("");
$user->setCodePromoStatus(2);
// $user->setCodePromoValue("");
// $em->persist($discount);
$em->persist($user);
$em->flush();
$this->addFlash('success', $this->translator->trans('app.cart.setDiscount.message.success'));
} else {
$this->addFlash('error', $this->translator->trans('app.cart.setDiscount.message.codeNotFound'));
}
}else{
$this->addFlash('error', $this->translator->trans('app.cart.setDiscount.message.codeNotFound'));
}
}
return $this->redirectToRoute('cart');
}
}