src/Infrastructure/Doctrine/Entity/DoctrineCart.php line 16

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Infrastructure\Doctrine\Entity;
  4. use App\Domain\Common\Entity\Cart;
  5. use App\Domain\Common\Entity\IzOrderClient;
  6. use App\Infrastructure\Doctrine\Entity\Traits\IdableTrait;
  7. use App\Infrastructure\Doctrine\Entity\Traits\TimestampableTrait;
  8. use Doctrine\ORM\Mapping as ORM;
  9. /**
  10.  * @ORM\Entity(repositoryClass="App\Infrastructure\Doctrine\Repository\DoctrineCartRepository")
  11.  */
  12. class DoctrineCart implements Cart
  13. {
  14.     use IdableTrait;
  15.     use TimestampableTrait;
  16.     /**
  17.      * @ORM\OneToOne(
  18.      *     targetEntity="App\Infrastructure\Doctrine\Entity\DoctrineIzOrderClient",
  19.      *     inversedBy="cart",
  20.      * )
  21.      * @ORM\JoinColumn(referencedColumnName="code_client", nullable=false)
  22.      */
  23.     private ?IzOrderClient $client null;
  24.     /**
  25.      * @ORM\Column(type="json")
  26.      */
  27.     private array $content = [];
  28.     /**
  29.      * @ORM\Column(type="integer")
  30.      */
  31.     private int $lastArticlePosition 0;
  32.     public function getClient(): ?IzOrderClient
  33.     {
  34.         return $this->client;
  35.     }
  36.     public function setClient(IzOrderClient $client): void
  37.     {
  38.         $this->client $client;
  39.     }
  40.     public function getContent(): array
  41.     {
  42.         return $this->content;
  43.     }
  44.     public function setContent(array $content): void
  45.     {
  46.         $this->content $content;
  47.     }
  48.     public function addContent(string $codeArticleint $quantity 1): void
  49.     {
  50.         if (empty($this->content[$codeArticle])) {
  51.             $this->setLastArticlePosition($this->getLastArticlePosition() + 1);
  52.             $this->content += [$codeArticle => [
  53.                 Cart::QUANTITY_KEY => 0,
  54.                 Cart::POSITION_KEY => $this->getLastArticlePosition(),
  55.             ]];
  56.         }
  57.         $this->content[$codeArticle][Cart::QUANTITY_KEY] += $quantity;
  58.     }
  59.     public function editContent(string $codeArticleint $quantity 1): void
  60.     {
  61.         if (!empty($this->content[$codeArticle])) {
  62.             $this->content[$codeArticle][Cart::QUANTITY_KEY] = $quantity;
  63.             if ($quantity <= 0) {
  64.                 $this->removeContent($codeArticle);
  65.             }
  66.         }
  67.     }
  68.     public function removeContent(string $codeArticle): void
  69.     {
  70.         unset($this->content[$codeArticle]);
  71.     }
  72.     public function getLastArticlePosition(): int
  73.     {
  74.         return $this->lastArticlePosition;
  75.     }
  76.     public function setLastArticlePosition(int $lastArticlePosition): void
  77.     {
  78.         $this->lastArticlePosition $lastArticlePosition;
  79.     }
  80. }