lib/boab/ecommerce-bundle/src/Entity/Cart.php line 14

Open in your IDE?
  1. <?php
  2. namespace Boab\EcommerceBundle\Entity;
  3. use Boab\EcommerceBundle\Model\ItemInterface;
  4. use Boab\EcommerceBundle\Repository\CartRepository;
  5. use Boab\EcommerceBundle\Doctrine\CartSetItemsListener;
  6. use Doctrine\ORM\Mapping as ORM;
  7. /**
  8.  * @ORM\Entity(repositoryClass=CartRepository::class)
  9.  * @ORM\EntityListeners({CartSetItemsListener::class})
  10.  */
  11. class Cart implements CartInterface
  12. {
  13.     /**
  14.      * @ORM\Id
  15.      * @ORM\GeneratedValue
  16.      * @ORM\Column(type="integer")
  17.      */
  18.     private $id;
  19.     /**
  20.      * @ORM\Column(type="string", length=6)
  21.      */
  22.     private $uniqueId;
  23.     /**
  24.      * @ORM\Column(type="json")
  25.      */
  26.     private $items = [];
  27.     /**
  28.      * @ORM\Column(type="datetime")
  29.      */
  30.     private $createdAt;
  31.     /**
  32.      * @ORM\Column(type="datetime", nullable=true)
  33.      */
  34.     private $updatedAt;
  35.     /**
  36.      * @ORM\Column(type="string", length=10)
  37.      */
  38.     private $status;
  39.     public function __construct(array $items=[])
  40.     {
  41.         $this->items $items;
  42.     }    
  43.     public function getId(): ?int
  44.     {
  45.         return $this->id;
  46.     }
  47.     public function getUniqueId(): ?string
  48.     {
  49.         return $this->uniqueId;
  50.     }
  51.     public function setUniqueId(string $uniqueId): self
  52.     {
  53.         $this->uniqueId $uniqueId;
  54.         return $this;
  55.     }
  56.     public function getItems(): ?array
  57.     {
  58.         return $this->items;
  59.     }
  60.     public function setItems(array $items): self
  61.     {
  62.         $this->items $items;
  63.         return $this;
  64.     }
  65.     public function setItem(ItemInterface $item)
  66.     {
  67.         $this->items[$item->getId()] = $item;
  68.         return $this;
  69.     }
  70.     public function removeItem(string $itemId)
  71.     {
  72.         unset($this->items[$itemId]);
  73.         return $this;
  74.     }
  75.     public function getCreatedAt(): ?\DateTimeInterface
  76.     {
  77.         return $this->createdAt;
  78.     }
  79.     public function setCreatedAt(\DateTimeInterface $createdAt): self
  80.     {
  81.         $this->createdAt $createdAt;
  82.         return $this;
  83.     }
  84.     public function getUpdatedAt(): ?\DateTimeInterface
  85.     {
  86.         return $this->updatedAt;
  87.     }
  88.     public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
  89.     {
  90.         $this->updatedAt $updatedAt;
  91.         return $this;
  92.     }
  93.     public function getItemsCount():int
  94.     {
  95.         return count($this->items);
  96.     }
  97.     public function getTotalAmount():int
  98.     {
  99.         $total 0;
  100.         foreach($this->items as $key => $item){
  101.             $total $total $item->getAmount();
  102.         }
  103.         
  104.         return $total;
  105.     }
  106.     public function getStatus(): ?string
  107.     {
  108.         return $this->status;
  109.     }
  110.     public function setStatus(string $status): self
  111.     {
  112.         $this->status $status;
  113.         return $this;
  114.     } 
  115.     public function isEmpty():bool
  116.     {
  117.         return count($this->items) == 0;
  118.     }
  119.     public function updateItemLicense($itemId$license$price)
  120.     {
  121.         $this->items[$itemId]->setLicense($license);
  122.         $this->items[$itemId]->setPrice($price);
  123.     }
  124.     public function updateItem(string $itemIdint $qty)
  125.     {
  126.         $this->items[$itemId]->setQty($qty);
  127.     }
  128. }