<?php
namespace MojeBambino\Extensions\Subscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Doctrine\DBAL\Connection;
use MojeBambino\Extensions\Struct\Brakuje;
use Shopware\Storefront\Page\Checkout\Cart\CheckoutCartPageLoadedEvent;
use Shopware\Storefront\Page\Checkout\Offcanvas\OffcanvasCartPageLoadedEvent;
use MojeBambino\Extensions\Struct\Przyciski;
class CartPageSubscriber implements EventSubscriberInterface {
private Connection $connection;
public function __construct(Connection $connection){
$this->connection = $connection;
}
public static function getSubscribedEvents(): array{
return [CheckoutCartPageLoadedEvent::class => 'onCartPageLoaded', OffcanvasCartPageLoadedEvent::class => 'onCanvasCartPageLoaded'];
}
public function onCartPageLoaded(CheckoutCartPageLoadedEvent $event): void{
$cart = $event->getPage()->getCart();
$brakuje = new Brakuje();
$brakuje->setKoszyk($cart->getPrice()->getPositionPrice());
$brakuje->setDostawa($cart->getShippingCosts()->getTotalPrice());
$pozycje = $cart->getLineItems()->getTypes();
//echo "<pre>"; print_r($pozycje); echo "</pre>";
if(in_array("promotion", $pozycje)){
$promocja = $cart->get(array_search('promotion', $pozycje));
//echo "<pre>"; print_r($promocja->getPayloadValue("value")); echo "</pre>";
$brakuje->setKoszyk($cart->getPrice()->getPositionPrice()+$promocja->getPayloadValue("value"));
}
if($brakuje->getDostawa()>0){
$info = "<span class='text-danger'>Do darmowej dostawy brakuje ".number_format(150-$brakuje->getKoszyk(), 2, ",", " ")." zł</span>";
}
else{
$info = "";
}
$brakuje->setInfo($info);
$cart->addExtension('brakuje', $brakuje);
//print_r($cart->getPrice()->getPositionPrice());
$przyciski = new Przyciski();
$query = $this->connection->createQueryBuilder();
$query->select(['*'])->from('przyciski')->where("gdzie='koszyk'")->andWhere("active=1");
$statement = $query->execute();
$prz = $statement->fetchAll(\PDO::FETCH_ASSOC);
$przyciski->setPrzyciski($prz);
$cart->addExtension('przyciski', $przyciski);
}
public function onCanvasCartPageLoaded(OffcanvasCartPageLoadedEvent $event): void{
$cart = $event->getPage()->getCart();
$brakuje = new Brakuje();
$brakuje->setKoszyk($cart->getPrice()->getPositionPrice());
$brakuje->setDostawa($cart->getShippingCosts()->getTotalPrice());
$pozycje = $cart->getLineItems()->getTypes();
if(in_array("promotion", $pozycje)){
$promocja = $cart->get(array_search('promotion', $pozycje));
//echo "<pre>"; print_r($promocja->getPayloadValue("value")); echo "</pre>";
$brakuje->setKoszyk($cart->getPrice()->getPositionPrice()+$promocja->getPayloadValue("value"));
}
if($brakuje->getDostawa()>0){
$info = "<div class=' col-12 text-danger'>Do darmowej dostawy brakuje ".number_format(150-$brakuje->getKoszyk(), 2, ",", " ")." zł</div>";
}
else{
$info = "";
}
$brakuje->setInfo($info);
$cart->addExtension('brakuje', $brakuje);
}
}