src/Services/CartService.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Services;
  3. use App\Model\Collection\ProductArticleCollection;
  4. use Pimcore\Model\DataObject\Order;
  5. use Pimcore\Model\DataObject\UserPortal;
  6. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  7. class CartService
  8. {
  9.     private string $sessionUserIdentifier 'userLogged';
  10.     public static string $sessionCartIdentifier 'webshopCart';
  11.     /**
  12.      * @param SessionInterface $session
  13.      * @return UserPortal|null
  14.      */
  15.     public function getUserFromSession(SessionInterface $session): ?UserPortal
  16.     {
  17.         $user $session->get($this->sessionUserIdentifier);
  18.         if ($user instanceof UserPortal) {
  19.             return $user;
  20.         }
  21.         return null;
  22.     }
  23.     /**
  24.      * Get
  25.      *
  26.      * @param SessionInterface $session
  27.      * @return ProductArticleCollection|null
  28.      */
  29.     public function getProductArticleCollectionFromSession(SessionInterface $session): ?ProductArticleCollection
  30.     {
  31.         $productArticleCollection $session->get(self::$sessionCartIdentifier);
  32.         if ($productArticleCollection instanceof ProductArticleCollection) {
  33.             return $productArticleCollection;
  34.         }
  35.         return null;
  36.     }
  37.     /**
  38.      * @param SessionInterface $session
  39.      * @return array
  40.      */
  41.     public function getCartFromSession(SessionInterface $session): array
  42.     {
  43.         $productArticleCollection $this->getProductArticleCollectionFromSession($session);
  44.         if(!$productArticleCollection instanceof ProductArticleCollection) {
  45.             return [];
  46.         }
  47.         return $productArticleCollection->getProductArticles();
  48.     }
  49.     /**
  50.      * @param SessionInterface $session
  51.      * @return Order|null
  52.      */
  53.     public function getOrderFromSession(SessionInterface $session): ?Order
  54.     {
  55.         $productArticleCollection $this->getProductArticleCollectionFromSession($session);
  56.         if(!$productArticleCollection instanceof ProductArticleCollection) {
  57.             return null;
  58.         }
  59.         return $productArticleCollection->getOrder();
  60.     }
  61.     public static function formatPrice(float $price): string
  62.     {
  63.         return number_format($price2'.''');
  64.     }
  65. }