<?php

namespace OfficeBrain\Bundle\GreenBookBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * @author OfficeBrain 4835 <info@officebrain.com>
 * Entity For GreenbookMaster
 * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
 */

/**
 * GreenbookMaster
 *
 * @ORM\Table(name="tbl_greenbook_master")
 * @ORM\Entity(repositoryClass="OfficeBrain\Bundle\GreenBookBundle\Entity\GreenbookMasterRepository")
 */
class GreenbookMaster
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="bigint", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="coupon_image", type="string", length=255, nullable=false)
     */
    private $couponImage;

    /**
     * @var string
     *
     * @ORM\Column(name="coupon_type", type="string", length=12, nullable=false)
     */
    private $couponType;

    /**
     * @var integer
     *
     * @ORM\Column(name="supplier_id", type="integer", nullable=false)
     */
    private $supplierId;

    /**
     * @var string
     *
     * @ORM\Column(name="supplier_email", type="string", length=50, nullable=false)
     */
    private $supplierEmail;

    /**
     * @var integer
     *
     * @ORM\Column(name="product_category_id", type="integer", nullable=false)
     */
    private $productCategoryId;

    /**
     * @var string
     *
     * @ORM\Column(name="sub_category_id", type="string", length=10, nullable=false)
     */
    private $subCategoryId;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="start_date", type="datetime", nullable=false)
     */
    private $startDate;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="end_date", type="datetime", nullable=false)
     */
    private $endDate;

    /**
     * @var string
     *
     * @ORM\Column(name="group_ids", type="string", length=255, nullable=false)
     */
    private $groupIds;

    /**
     * @var string
     *
     * @ORM\Column(name="status", type="string",columnDefinition="ENUM('A', 'P', 'I', 'R')",nullable=false)
     */
    private $status = 'P';

    /**
     * @var string
     *
     * @ORM\Column(name="reject_reason", type="text", nullable=false)
     */
    private $rejectReason;

    /**
     * @ORM\OneToMany(targetEntity="\OfficeBrain\Bundle\GreenBookBundle\Entity\GreenbookLanguage", mappedBy="greenbookId", cascade={"all"})
     */
    protected $languageMapping;

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

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set couponImage
     *
     * @param string $couponImage
     * @return GreenbookMaster
     */
    public function setCouponImage($couponImage)
    {
        $this->couponImage = $couponImage;

        return $this;
    }

    /**
     * Get couponImage
     *
     * @return string 
     */
    public function getCouponImage()
    {
        return $this->couponImage;
    }

    /**
     * Set couponType
     *
     * @param string $couponType
     * @return GreenbookMaster
     */
    public function setCouponType($couponType)
    {
        $this->couponType = $couponType;

        return $this;
    }

    /**
     * Get couponType
     *
     * @return string 
     */
    public function getCouponType()
    {
        return $this->couponType;
    }

    /**
     * Set supplierId
     *
     * @param integer $supplierId
     * @return GreenbookMaster
     */
    public function setSupplierId($supplierId)
    {
        $this->supplierId = $supplierId;

        return $this;
    }

    /**
     * Get supplierId
     *
     * @return integer 
     */
    public function getSupplierId()
    {
        return $this->supplierId;
    }

    /**
     * Set supplierEmail
     *
     * @param string $supplierEmail
     * @return GreenbookMaster
     */
    public function setSupplierEmail($supplierEmail)
    {
        $this->supplierEmail = $supplierEmail;

        return $this;
    }

    /**
     * Get supplierEmail
     *
     * @return string 
     */
    public function getSupplierEmail()
    {
        return $this->supplierEmail;
    }

    /**
     * Set productCategoryId
     *
     * @param integer $productCategoryId
     * @return GreenbookMaster
     */
    public function setProductCategoryId($productCategoryId)
    {
        $this->productCategoryId = $productCategoryId;

        return $this;
    }

    /**
     * Get productCategoryId
     *
     * @return integer 
     */
    public function getProductCategoryId()
    {
        return $this->productCategoryId;
    }

    /**
     * Set subCategoryId
     *
     * @param string $subCategoryId
     * @return GreenbookMaster
     */
    public function setSubCategoryId($subCategoryId)
    {
        $this->subCategoryId = $subCategoryId;

        return $this;
    }

    /**
     * Get subCategoryId
     *
     * @return string 
     */
    public function getSubCategoryId()
    {
        return $this->subCategoryId;
    }

    /**
     * Set startDate
     *
     * @param \DateTime $startDate
     * @return GreenbookMaster
     */
    public function setStartDate($startDate)
    {
        $this->startDate = $startDate;

        return $this;
    }

    /**
     * Get startDate
     *
     * @return \DateTime 
     */
    public function getStartDate()
    {
        return $this->startDate;
    }

    /**
     * Set endDate
     *
     * @param \DateTime $endDate
     * @return GreenbookMaster
     */
    public function setEndDate($endDate)
    {
        $this->endDate = $endDate;

        return $this;
    }

    /**
     * Get endDate
     *
     * @return \DateTime 
     */
    public function getEndDate()
    {
        return $this->endDate;
    }

    /**
     * Set groupIds
     *
     * @param string $groupIds
     * @return GreenbookMaster
     */
    public function setGroupIds($groupIds)
    {
        $this->groupIds = $groupIds;

        return $this;
    }

    /**
     * Get groupIds
     *
     * @return string 
     */
    public function getGroupIds()
    {
        return $this->groupIds;
    }

    /**
     * Set status
     *
     * @param string $status
     * @return GreenbookMaster
     */
    public function setStatus($status)
    {
        $this->status = $status;

        return $this;
    }

    /**
     * Get status
     *
     * @return string 
     */
    public function getStatus()
    {
        return $this->status;
    }

    /**
     * Set rejectReason
     *
     * @param string $rejectReason
     * @return GreenbookMaster
     */
    public function setRejectReason($rejectReason)
    {
        $this->rejectReason = $rejectReason;

        return $this;
    }

    /**
     * Get rejectReason
     *
     * @return string 
     */
    public function getRejectReason()
    {
        return $this->rejectReason;
    }

    /**
     * Add languageMapping
     *
     * @param \OfficeBrain\Bundle\GreenBookBundle\Entity\GreenbookLanguage $languageMapping
     * @return GreenbookMaster
     */
    public function addLanguageMapping(\OfficeBrain\Bundle\GreenBookBundle\Entity\GreenbookLanguage $languageMapping)
    {
        $this->languageMapping[] = $languageMapping;

        return $this;
    }

    /**
     * Remove languageMapping
     *
     * @param \OfficeBrain\Bundle\GreenBookBundle\Entity\GreenbookLanguage $languageMapping
     */
    public function removeLanguageMapping(\OfficeBrain\Bundle\GreenBookBundle\Entity\GreenbookLanguage $languageMapping)
    {
        $this->languageMapping->removeElement($languageMapping);
    }

    /**
     * Get languageMapping
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getLanguageMapping()
    {
        return $this->languageMapping;
    }
}
