<?php

namespace Lc\ShopBundle\Model;

use Lc\ShopBundle\Model\OrderShop;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\MappedSuperclass()
 */
abstract class DocumentDeliveryNote extends AbstractDocumentOrder
{
        /**
         * @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\OrderShopInterface", mappedBy="documentDeliveryNote")
         */
        protected $orderShops;

        public function __construct()
        {
                $this->orderShops = new ArrayCollection();
        }

        /**
         * @return Collection|OrderShop[]
         */
        public function getOrderShops(): Collection
        {
                return $this->orderShops;
        }

        public function addOrderShop(OrderShop $orderShop): self
        {
                if (!$this->orderShops->contains($orderShop)) {
                        $this->orderShops[] = $orderShop;
                        $orderShop->setDocumentDeliveryNote($this);
                }

                return $this;
        }

        public function removeOrderShop(OrderShop $orderShop): self
        {
                if ($this->orderShops->contains($orderShop)) {
                        $this->orderShops->removeElement($orderShop);
                        // set the owning side to null (unless already changed)
                        if ($orderShop->getDocumentDeliveryNote() === $this) {
                                $orderShop->setDocumentDeliveryNote(null);
                        }
                }

                return $this;
        }
}