<?php

namespace OfficeBrain\Bundle\EmailBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints as DoctrineAssert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 *
 * @author OfficeBrain 4795 <info@officebrain.com>
 *
 * Decsription: All events will be saved in Event Master table.
 *
 */
/**
 * EmailEventMaster
 *
 * @ORM\Table(name="tbl_email_event_master")
 * @ORM\Entity(repositoryClass="OfficeBrain\Bundle\EmailBundle\Entity\EmailEventMasterRepository")
 */
class EmailEventMaster
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="bigint", options={"unsigned":true})
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    
    /**
     * @var string
     * @ORM\Column(name="instance_type", type="string", length=255)
     */
    private $instanceType;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="instance_id", type="integer")
     */
    private $instanceId;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="country_id", type="integer", nullable=true)
     */
    public $countryId;
    
    /**
     * @var string
     * @Assert\NotBlank(message="This field is required.")
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;
    
    /**
     * @var string
     * @ORM\Column(name="description", type="string", length=255, nullable=true)
     */
    private $description;
    
    /**
     * @var string
     * @Assert\NotBlank(message="This field is required.")
     * @ORM\Column(name="event_key", unique = true,  type="string", length=255)
     */
    private $eventKey;
    
    /**
     * @ORM\ManyToOne(targetEntity="EmailEventMaster")
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
     */
    private $parentId;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="priority", type="integer")
     */
    private $priority;
    
    /**
     * @var string
     * @ORM\Column(name="subject", type="string", length=255, nullable=true)
     */
    private $subject;
    
    /**
     * @ORM\ManyToOne(targetEntity="EmailTemplateMaster")
     * @ORM\JoinColumn(name="template", referencedColumnName="id", nullable=true)
     */
    private $template;
    
    /**
     *
     * @ORM\Column(name="is_optional", type="boolean", nullable=true)
     * @Assert\Type(type="boolean")
     */
    private $isOptional;
    
    /**
     *
     * @ORM\Column(name="sendto_user", type="boolean", nullable=true)
     * @Assert\Type(type="boolean")
     */
    private $sendtoUser;
    
    /**
     *
     * @ORM\Column(name="sendto_admin", type="boolean", nullable=true)
     * @Assert\Type(type="boolean")
     */
    private $sendtoAdmin;
    
    /**
     * @var string
     * @ORM\Column(name="to_email", type="string", length=255, nullable=true)
     */
    private $toEmail;
    
    /**
     * @var string
     * @ORM\Column(name="replaty_to_email", type="string", length=255, nullable=true)
     * @Assert\Email(
     *     message = "email.form.email.valid",
     *     checkMX = true
     * )
     */
    private $replyToEmail;
    
    /**
     * @var string
     * @ORM\Column(name="from_name", type="string", length=255, nullable=true)
     */
    private $fromName;
    
    /**
     * @var string
     * @ORM\Column(name="from_email", type="string", length=255, nullable=true)
     * @Assert\Email(
     *     message = "email.form.email.valid",
     *     checkMX = true
     * )
     */
    private $fromEmail;
    
    /**
     * @var string
     * @ORM\Column(name="cc_email", type="string", length=255, nullable=true)
     */
    private $ccEmail;
    
    /**
     * @var string
     * @ORM\Column(name="bcc_email", type="string", length=255, nullable=true)
     */
    private $bccEmail;
    
    /**
     * @ORM\Column(type="string", name="status", length=100, options={"default" = "0"})
     * @Assert\NotBlank(message="email.form.not_blank")
     */
    private $status;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="created_uid", type="integer")
     */
    private $createdUid;
    
    /**
     * @ORM\Column(type="datetime", name="created_at")
     */
    private $createdAt;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="updated_uid", type="integer", nullable=true)
     */
    private $updatedUid;
    
    /**
     * @ORM\Column(type="datetime", name="updated_at", nullable=true)
     */
    private $updatedAt;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="deleted_uid", type="integer", nullable=true)
     */
    private $deletedUid;
    
    /**
     * @ORM\Column(type="datetime", name="deleted_at", nullable=true)
     */
    private $deletedAt;
    
    /**
     * Get id
     *
     * @return bigint
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set instanceType
     *
     * @param string $instanceType
     * @return EmailEventMaster
     */
    public function setInstanceType($instanceType)
    {
        $this->instanceType = $instanceType;

        return $this;
    }

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

    /**
     * Set instanceId
     *
     * @param integer $instanceId
     * @return EmailEventMaster
     */
    public function setInstanceId($instanceId)
    {
        $this->instanceId = $instanceId;

        return $this;
    }

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

    /**
     * Set name
     *
     * @param string $name
     * @return EmailEventMaster
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

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

    /**
     * Set eventKey
     *
     * @param string $eventKey
     * @return EmailEventMaster
     */
    public function setEventKey($eventKey)
    {
        $this->eventKey = $eventKey;

        return $this;
    }

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

    /**
     * Set priority
     *
     * @param integer $priority
     * @return EmailEventMaster
     */
    public function setPriority($priority)
    {
        $this->priority = $priority;

        return $this;
    }

    /**
     * Get priority
     *
     * @return integer
     */
    public function getPriority()
    {
        return $this->priority;
    }
    
    /**
     * Set fromName
     *
     * @param string $fromName
     * @return EmailEventMaster
     */
    public function setFromName($fromName)
    {
    	$this->fromName = $fromName;
    	
    	return $this;
    }
    
    /**
     * Get fromName
     *
     * @return string
     */
    public function getFromName()
    {
    	return $this->fromName;
    }

    /**
     * Set fromEmail
     *
     * @param string $fromEmail
     * @return EmailEventMaster
     */
    public function setFromEmail($fromEmail)
    {
        $this->fromEmail = $fromEmail;

        return $this;
    }

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

    /**
     * Set ccEmail
     *
     * @param string $ccEmail
     * @return EmailEventMaster
     */
    public function setCcEmail($ccEmail)
    {
        $this->ccEmail = $ccEmail;

        return $this;
    }

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

    /**
     * Set createdUid
     *
     * @param integer $createdUid
     * @return EmailEventMaster
     */
    public function setCreatedUid($createdUid)
    {
        $this->createdUid = $createdUid;

        return $this;
    }

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

    /**
     * Set createdAt
     *
     * @param \DateTime $createdAt
     * @return EmailEventMaster
     */
    public function setCreatedAt($createdAt)
    {
        $this->createdAt = $createdAt;

        return $this;
    }

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

    /**
     * Set updatedUid
     *
     * @param integer $updatedUid
     * @return EmailEventMaster
     */
    public function setUpdatedUid($updatedUid)
    {
        $this->updatedUid = $updatedUid;

        return $this;
    }

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

    /**
     * Set updatedAt
     *
     * @param \DateTime $updatedAt
     * @return EmailEventMaster
     */
    public function setUpdatedAt($updatedAt)
    {
        $this->updatedAt = $updatedAt;

        return $this;
    }

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

    /**
     * Set deletedUid
     *
     * @param integer $deletedUid
     * @return EmailEventMaster
     */
    public function setDeletedUid($deletedUid)
    {
        $this->deletedUid = $deletedUid;

        return $this;
    }

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

    /**
     * Set deletedAt
     *
     * @param \DateTime $deletedAt
     * @return EmailEventMaster
     */
    public function setDeletedAt($deletedAt)
    {
        $this->deletedAt = $deletedAt;

        return $this;
    }

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

    /**
     * Set template
     *
     * @param \OfficeBrain\Bundle\EmailBundle\Entity\EmailTemplateMaster $template
     * @return EmailEventMaster
     */
    public function setTemplate(\OfficeBrain\Bundle\EmailBundle\Entity\EmailTemplateMaster $template = null)
    {
        $this->template = $template;

        return $this;
    }

    /**
     * Get template
     *
     * @return \OfficeBrain\Bundle\EmailBundle\Entity\EmailTemplateMaster
     */
    public function getTemplate()
    {
        return $this->template;
    }

    /**
     * Set sendtoUser
     *
     * @param boolean $sendtoUser
     * @return EmailEventMaster
     */
    public function setSendtoUser($sendtoUser)
    {
        $this->sendtoUser = $sendtoUser;

        return $this;
    }

    /**
     * Get sendtoUser
     *
     * @return boolean
     */
    public function getSendtoUser()
    {
        return $this->sendtoUser;
    }

    /**
     * Set sendtoAdmin
     *
     * @param boolean $sendtoAdmin
     * @return EmailEventMaster
     */
    public function setSendtoAdmin($sendtoAdmin)
    {
        $this->sendtoAdmin = $sendtoAdmin;

        return $this;
    }

    /**
     * Get sendtoAdmin
     *
     * @return boolean
     */
    public function getSendtoAdmin()
    {
        return $this->sendtoAdmin;
    }

    /**
     * Set toEmail
     *
     * @param string $toEmail
     * @return EmailEventMaster
     */
    public function setToEmail($toEmail)
    {
        $this->toEmail = $toEmail;

        return $this;
    }

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

    /**
     * Set bccEmail
     *
     * @param string $bccEmail
     * @return EmailEventMaster
     */
    public function setBccEmail($bccEmail)
    {
        $this->bccEmail = $bccEmail;

        return $this;
    }

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

    /**
     * Set isOptional
     *
     * @param boolean $isOptional
     * @return EmailEventMaster
     */
    public function setIsOptional($isOptional)
    {
        $this->isOptional = $isOptional;

        return $this;
    }

    /**
     * Get isOptional
     *
     * @return boolean
     */
    public function getIsOptional()
    {
        return $this->isOptional;
    }

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

        return $this;
    }

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

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

    /**
     * Set description
     *
     * @param string $description
     * @return EmailEventMaster
     */
    public function setDescription($description)
    {
        $this->description = $description;

        return $this;
    }

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

    /**
     * Set parentId
     *
     * @param \OfficeBrain\Bundle\EmailBundle\Entity\EmailEventMaster $parentId
     * @return EmailEventMaster
     */
    public function setParentId(\OfficeBrain\Bundle\EmailBundle\Entity\EmailEventMaster $parentId = null)
    {
        $this->parentId = $parentId;

        return $this;
    }

    /**
     * Get parentId
     *
     * @return \OfficeBrain\Bundle\EmailBundle\Entity\EmailEventMaster
     */
    public function getParentId()
    {
        return $this->parentId;
    }

    /**
     * Set subject
     *
     * @param string $subject
     * @return EmailEventMaster
     */
    public function setSubject($subject)
    {
        $this->subject = $subject;

        return $this;
    }

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

    /**
     * Set countryId
     *
     * @param integer $countryId
     * @return EmailEventMaster
     */
    public function setCountryId($countryId)
    {
        $this->countryId = $countryId;

        return $this;
    }

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

    /**
     * Set replyToEmail
     *
     * @param string $replyToEmail
     * @return EmailEventMaster
     */
    public function setReplyToEmail($replyToEmail)
    {
        $this->replyToEmail = $replyToEmail;

        return $this;
    }

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