<?php
/**
* Created by PhpStorm.
* User: Slim Sayari
* Date: 16/05/2019
* Time: 15:03
*/
namespace App\Services;
use App\Entity\DistributionCart;
use App\Entity\DistributionFlyer;
use App\Form\DistributionCartType;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\Security\Core\Security;
use App\Entity\SessionTokenFile;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Twig\Environment;
use App\Services\CartService;
class DistributionFlyerService
{
private $em;
private $trans;
private $params;
private $security;
private $session;
private $twig;
private $abonnementService;
private $form;
private $cartService;
public function __construct(
AbonnementService $abonnementService,
Environment $twig,
SessionInterface $session,
Security $security,
ParameterBagInterface $params,
EntityManagerInterface $em,
TranslatorInterface $trans,
FormFactoryInterface $form,
CartService $cartService,
CartService $cart_service
) {
$this->em = $em;
$this->trans = $trans;
$this->params = $params;
$this->security = $security;
$this->session = $session;
$this->twig = $twig;
$this->abonnementService = $abonnementService;
$this->cartService = $cartService;
$this->form = $form;
$this->cart_service = $cart_service;
}
public function add($request){
$distributionFlyer = $this->em->getRepository(DistributionFlyer::class)->findOneByIsEnabled(true);
//check exist distrubution flyer
if($distributionFlyer) {
$cart = $this->cartService->getCartCurrent();
if(!$cart){
$cart = $this->cartService->createCart(true);
}
$displayForFlyer = false;
//check exist flyer in cart
// if($cart && $this->cartService->isProductFlyer($cart->getId())){
if($cart){
$displayForFlyer = true;
$distributionCart = new DistributionCart();
$form = $this->form->create(DistributionCartType::class, $distributionCart);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$persone = (int)$distributionCart->getNbrPersonne();
$prixQtyTtc = $distributionCart->getQty()->getPrixTtc();
$prixQtyHt = $distributionCart->getQty()->getPrixHt();
if($persone == 1){
$prixTtc = $prixQtyTtc;
$prixHt = $prixQtyHt;
}else if($persone == 2){
$prixTtc = $prixQtyTtc + ($prixQtyTtc * 30)/100;
$prixHt = $prixQtyHt + ($prixQtyHt * 30)/100;
}else if($persone == 3){
$prixTtc = $prixQtyTtc + ($prixQtyTtc * 40)/100;
$prixHt = $prixQtyHt + ($prixQtyHt * 40)/100;
}else if($persone == 4){
$prixTtc = $prixQtyTtc + ($prixQtyTtc * 50)/100;
$prixHt = $prixQtyHt + ($prixQtyHt * 50)/100;
}else{
$prixTtc = $prixQtyTtc;
$prixHt = $prixQtyHt;
}
$distributionCart->setPrixTtc($prixTtc);
$distributionCart->setPrixHt($prixHt);
$this->em->persist($distributionCart);
$this->em->flush();
return array(
'success'=>true,
'id_distribution'=>$distributionCart->getId()
);
}
return array(
'form' => $form->createView(),
'is_show'=>true,
'displayForFlyer'=>$displayForFlyer,
);
}
return array(
'is_show'=>true,
'displayForFlyer'=>$displayForFlyer
);
}else{
return array(
'is_show'=>false
);
}
}
public function edit($request,$id){
$distributionFlyer = $this->em->getRepository(DistributionFlyer::class)->findOneByIsEnabled(true);
//check exist distrubution flyer
if($distributionFlyer) {
$cart = $this->cartService->getCartCurrent();
$displayForFlyer = false;
// //check exist flyer in cart
// if($cart && $this->cartService->isProductFlyer($cart->getId())){
if($cart){
$displayForFlyer = true;
$distributionCart = $this->em->getRepository(DistributionCart::class)->find($id);
if($distributionCart) {
$form = $this->form->create(DistributionCartType::class, $distributionCart,array('edit'=>true));
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$persone = (int)$distributionCart->getNbrPersonne();
$prixQtyTtc = $distributionCart->getQty()->getPrixTtc();
$prixQtyHt = $distributionCart->getQty()->getPrixHt();
if($persone == 1){
$prixTtc = $prixQtyTtc;
$prixHt = $prixQtyHt;
}else if($persone == 2){
$prixTtc = $prixQtyTtc + ($prixQtyTtc * 30)/100;
$prixHt = $prixQtyHt + ($prixQtyHt * 30)/100;
}else if($persone == 3){
$prixTtc = $prixQtyTtc + ($prixQtyTtc * 40)/100;
$prixHt = $prixQtyHt + ($prixQtyHt * 40)/100;
}else if($persone == 4){
$prixTtc = $prixQtyTtc + ($prixQtyTtc * 50)/100;
$prixHt = $prixQtyHt + ($prixQtyHt * 50)/100;
}else{
$prixTtc = $prixQtyTtc;
$prixHt = $prixQtyHt;
}
$distributionCart->setPrixTtc($prixTtc);
$distributionCart->setPrixHt($prixHt);
$this->em->persist($distributionCart);
$this->em->flush();
return array(
'success' => true,
'id_distribution' => $distributionCart->getId()
);
}
return array(
'form' => $form->createView(),
'is_show' => true,
'displayForFlyer' => $displayForFlyer,
'distributionCart' => $distributionCart,
);
}else{
return array(
'is_show'=>false,
'displayForFlyer'=>$displayForFlyer
);
}
}
return array(
'is_show'=>true,
'displayForFlyer'=>$displayForFlyer
);
}else{
return array(
'is_show'=>false
);
}
}
public function addToCart($id){
$cart = $this->cartService->getCartCurrent();
// // check is exist product flayer
// if($cart && $this->cartService->isProductFlyer($cart->getId())){
if($cart){
$distributionCart = $this->em->getRepository(DistributionCart::class)->find($id);
if($distributionCart){
$distributionCart->setCart($cart);
$this->em->persist($distributionCart);
$this->em->flush();
$this->cartService->updatePriceCart($cart);
return true;
}
}
return false;
}
public function delete($request,$id){
$cart = $this->cartService->getCartCurrent();
if(!$cart){
return array(
'delete'=>false
);
}
$distributionCart = $this->em->getRepository(DistributionCart::class)->findOneBy(array('cart'=>$cart->getId(),'id'=>$id));
if($distributionCart) {
$distributionCart->setCart(null);
$this->em->persist($distributionCart);
$this->em->flush();
$this->cart_service->updatePriceCart($cart);
return array(
'delete'=>true
);
}else{
return array(
'delete'=>false
);
}
}
}