<?php

namespace OfficeBrain\Bundle\QuickQuoteBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * QuickQuote
 * @ORM\Table(name="tbl_quick_quote", options={"type"="InnoDB","charset"="utf8","collate"="utf8_unicode_ci"})
 * @ORM\Entity(repositoryClass="OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteRepository")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
 */
class QuickQuote
{
   /**
     * @var integer
     *
     * @ORM\Column(name="id",type="bigint", length=20 , options={"unsigned"=true})
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="to_email", type="string", length=255, nullable=true)
     */
    private $toEmail;

    /**
     * @var string
     *
     * @ORM\Column(name="from_name", type="string", length=255, nullable=true)
     */
    private $fromName;
    
    /**
     * @var string
     *
     * @ORM\Column(name="to_name", type="string", length=255, nullable=true)
     */
    private $toName;

    /**
     * @var string
     *
     * @ORM\Column(name="from_email", type="string", length=255, nullable=true)
     */
    private $fromEmail;

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

    /**
     * @var integer
     *
     * @ORM\Column(name="created_uid", type="bigint", length=20, options={"unsigned"=true}, nullable=true)
     */
    private $createdUid;

    /**
     * @var integer
     *
     * @ORM\Column(name="updated_uid", type="bigint", length=20, nullable=true,options={"unsigned"=true}, nullable=true)
     */
    private $upatedUid;

    /**
     * @var integer
     *
     * @ORM\Column(name="deleted_uid", type="bigint", length=20, nullable=true, options={"unsigned"=true}, nullable=true)
     */
    private $deletedUid;

    /**
     * @var integer
     *
     * @ORM\Column(name="instance_id", type="bigint", length=20, options={"unsigned"=true}, nullable=true)
     */
    private $instanceId;

    /**
     * @var string
     *
     * @ORM\Column(name="instance_type", type="string", length=255, nullable=true)
     */
    private $instanceType;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="create")
     * @ORM\Column(name="created_at", type="datetime")
     */
    private $createdAt;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="update")
     * @ORM\Column(name="updated_at", type="datetime", nullable=true)
     */
    private $updatedAt;

    /**
     * @var \DateTime
     * @ORM\Column(name="deleted_at", type="datetime", nullable=true)
     */
    private $deletedAt;
    
     /**
     * @ORM\OneToMany(targetEntity="\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteGuestUser", mappedBy="quickQuote", cascade={"all"})
     */
    private $guestUser;

    /**
     * @ORM\OneToMany(targetEntity="\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteUser", mappedBy="quickQuote", cascade={"all"})    
     */
    private $registerUser;
    
    /**
     * @ORM\OneToMany(targetEntity="\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteProduct", mappedBy="quickQuote", cascade={"all"})         
     */
    private $product;
   
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->guestUser = new \Doctrine\Common\Collections\ArrayCollection();
        $this->registerUser = new \Doctrine\Common\Collections\ArrayCollection();
        $this->product = new \Doctrine\Common\Collections\ArrayCollection();
    }

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

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

        return $this;
    }

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

    /**
     * Set fromName
     *
     * @param string $fromName
     * @return QuickQuote
     */
    public function setFromName($fromName)
    {
        $this->fromName = $fromName;

        return $this;
    }

    /**
     * Get fromName
     *
     * @return string 
     */
    public function getFromName()
    {
        return $this->fromName;
    }
    
    /**
     * Set toName
     *
     * @param string $toName
     * @return QuickQuote
     */
    public function settoName($toName)
    {
    	$this->toName = $toName;
    
    	return $this;
    }
    
    /**
     * Get toName
     *
     * @return string
     */
    public function gettoName()
    {
    	return $this->toName;
    }

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

        return $this;
    }

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

    /**
     * Set message
     *
     * @param string $message
     * @return QuickQuote
     */
    public function setMessage($message)
    {
        $this->message = $message;

        return $this;
    }

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

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

        return $this;
    }

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

    /**
     * Set upatedUid
     *
     * @param integer $upatedUid
     * @return QuickQuote
     */
    public function setUpatedUid($upatedUid)
    {
        $this->upatedUid = $upatedUid;

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

    /**
     * Add guestUser
     *
     * @param \OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteGuestUser $guestUser
     * @return QuickQuote
     */
    public function addGuestUser(\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteGuestUser $guestUser)
    {
        $this->guestUser[] = $guestUser;

        return $this;
    }

    /**
     * Remove guestUser
     *
     * @param \OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteGuestUser $guestUser
     */
    public function removeGuestUser(\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteGuestUser $guestUser)
    {
        $this->guestUser->removeElement($guestUser);
    }

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

    /**
     * Add registerUser
     *
     * @param \OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteUser $registerUser
     * @return QuickQuote
     */
    public function addRegisterUser(\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteUser $registerUser)
    {
        $this->registerUser[] = $registerUser;

        return $this;
    }

    /**
     * Remove registerUser
     *
     * @param \OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteUser $registerUser
     */
    public function removeRegisterUser(\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteUser $registerUser)
    {
        $this->registerUser->removeElement($registerUser);
    }

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

    /**
     * Add product
     *
     * @param \OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteProduct $product
     * @return QuickQuote
     */
    public function addProduct(\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteProduct $product)
    {
        $this->product[] = $product;

        return $this;
    }

    /**
     * Remove product
     *
     * @param \OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteProduct $product
     */
    public function removeProduct(\OfficeBrain\Bundle\QuickQuoteBundle\Entity\QuickQuoteProduct $product)
    {
        $this->product->removeElement($product);
    }

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