<?php

namespace Lc\CaracoleBundle\Model\Order;

use Doctrine\ORM\Mapping as ORM;
use Lc\CaracoleBundle\Doctrine\Extension\ReductionInterface;
use Lc\CaracoleBundle\Doctrine\Extension\ReductionTrait;
use Lc\CaracoleBundle\Model\Reduction\ReductionCreditInterface;

/**
 * @ORM\MappedSuperclass()
 */
abstract class OrderReductionCreditModel implements ReductionInterface
{
    use ReductionTrait;

    /**
     * @ORM\Column(type="string", length=255)
     */
    protected $title;


    /**
     * @ORM\ManyToOne(targetEntity="Lc\CaracoleBundle\Model\Order\OrderShopInterface", inversedBy="orderReductionCredits")
     * @ORM\JoinColumn(nullable=false)
     */
    protected $orderShop;

    /**
     * @ORM\ManyToOne(targetEntity="Lc\CaracoleBundle\Model\Reduction\ReductionCreditInterface")
     * @ORM\JoinColumn(nullable=false)
     */
    protected $reductionCredit;


    /**
     * @ORM\Column(type="string", length=255)
     */
    protected $type;


    public function __toString()
    {
        return $this->title;
    }

    public function getTitle(): ?string
    {
        return $this->title;
    }

    public function setTitle(string $title): self
    {
        $this->title = $title;

        return $this;
    }

    public function getOrderShop(): ?OrderShopInterface
    {
        return $this->orderShop;
    }

    public function setOrderShop(?OrderShopInterface $orderShop): self
    {
        $this->orderShop = $orderShop;

        return $this;
    }

    public function getReductionCredit(): ?ReductionCreditInterface
    {
        return $this->reductionCredit;
    }

    public function setReductionCredit(?ReductionCreditInterface $reductionCredit): self
    {
        $this->reductionCredit = $reductionCredit;

        return $this;
    }

    public function getType(): ?string
    {
        return $this->type;
    }

    public function setType(string $type): self
    {
        $this->type = $type;

        return $this;
    }

}