<?php
namespace App\Services;
use App\Model\Collection\ProductArticleCollection;
use Pimcore\Model\DataObject\Order;
use Pimcore\Model\DataObject\UserPortal;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class CartService
{
private string $sessionUserIdentifier = 'userLogged';
public static string $sessionCartIdentifier = 'webshopCart';
/**
* @param SessionInterface $session
* @return UserPortal|null
*/
public function getUserFromSession(SessionInterface $session): ?UserPortal
{
$user = $session->get($this->sessionUserIdentifier);
if ($user instanceof UserPortal) {
return $user;
}
return null;
}
/**
* Get
*
* @param SessionInterface $session
* @return ProductArticleCollection|null
*/
public function getProductArticleCollectionFromSession(SessionInterface $session): ?ProductArticleCollection
{
$productArticleCollection = $session->get(self::$sessionCartIdentifier);
if ($productArticleCollection instanceof ProductArticleCollection) {
return $productArticleCollection;
}
return null;
}
/**
* @param SessionInterface $session
* @return array
*/
public function getCartFromSession(SessionInterface $session): array
{
$productArticleCollection = $this->getProductArticleCollectionFromSession($session);
if(!$productArticleCollection instanceof ProductArticleCollection) {
return [];
}
return $productArticleCollection->getProductArticles();
}
/**
* @param SessionInterface $session
* @return Order|null
*/
public function getOrderFromSession(SessionInterface $session): ?Order
{
$productArticleCollection = $this->getProductArticleCollectionFromSession($session);
if(!$productArticleCollection instanceof ProductArticleCollection) {
return null;
}
return $productArticleCollection->getOrder();
}
public static function formatPrice(float $price): string
{
return number_format($price, 2, '.', '');
}
}