<?php

namespace OfficeBrain\Bundle\BannerBundle\Entity;

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

/**
 *
 * @author OfficeBrain 4571 <info@officebrain.com>
 *
 * Decsription: All Banner will be saved in Banner table (tbl_banner).
 *
 */
/**
 * Banner
 *
 * @ORM\Table(name="tbl_banner")
 * @ORM\Entity(repositoryClass="OfficeBrain\Bundle\BannerBundle\Entity\BannerRepository")
 */
class Banner
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="bigint", options={"unsigned":true})
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="country_id", type="integer")
     * @Assert\NotBlank(message="bannertype.form.not_blank")
     */
    private $countryId;

    /**
     * Bidirectional (OWNING SIDE - FK)
     *
     * @ORM\ManyToOne(targetEntity="BannerMaster", inversedBy="banner")
     * @ORM\JoinColumn(nullable=false, onDelete="CASCADE", name="banner_type_id",referencedColumnName="id")
     * @Assert\NotBlank(message="bannertype.form.not_blank")
     */
    private $bannerTypeId;

    /**
     * Image file
     *
     * @var File
     *
     * @ORM\Column(name="uploaded_banner", type="string", length=255, nullable=false)
     * @Assert\NotBlank(message="bannertype.form.upload_banner.not_blank")
     *
     */
    private $uploadedBanner;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="schedule_start_date", type="datetime", nullable=true)
     */
    private $scheduleStartDate;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="schedule_end_date", type="datetime", nullable=true)
     */
    private $scheduleEndDate;

    /**
     * @var string
     *
     * @ORM\Column(name="effect", type="string", length=50)
     * @Assert\NotBlank(message="bannertype.form.not_blank")
     */
    private $effect;

    /**
     * @var integer
     *
     * @ORM\Column(name="visibility", type="integer", options={"default":1})
     */
    private $visibility;

    /**
     * @var integer
     *
     * @ORM\Column(name="status", type="integer", options={"default":1})
     * @Assert\NotBlank(message="bannertype.form.not_blank")
     */
    private $status;

    /**
     * @var integer
     *
     * @ORM\Column(name="created_uid", type="integer", nullable=true)
     */
    private $createdUid;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="url_status", type="integer", options={"default":1})
     * @Assert\NotBlank(message="bannertype.form.not_blank")
     */
    private $urlStatus;
    
    /**
     * @var \DateTime
     *
     * @ORM\Column(name="created_at", type="datetime", nullable=true)
     */
    private $createdAt;

    /**
     * @var integer
     *
     * @ORM\Column(name="updated_uid", type="integer", nullable=true)
     */
    private $updatedUid;

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

    /**
     * @var integer
     *
     * @ORM\Column(name="deleted_uid", type="integer", nullable=true)
     */
    private $deletedUid;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="deleted_at", type="datetime", nullable=true)
     */
    private $deletedAt;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="instance_id", type="integer")
     */
    private $instanceId;
    
    /**
     * @var string
     *
     * @ORM\Column(name="instance_type", type="string", length=255)
     */
    private $instanceType;
    
    /**
     * @ORM\Column(type="bigint", name="sort_position", nullable=true, options={"default"=0})
     */
    protected $sortPosition;

    /**
     * @ORM\Column(name="banner_description", type="text", nullable=true)
     */
    protected $bannerDescription;
    

    /**
     * @ORM\OneToMany(targetEntity="BannerLanguage", mappedBy="bannerId", cascade={"all"})
     */
    protected $bannerLanguage;
    
    /**
     * @var string
     *
     * @ORM\Column(name="banner_name", type="string", length=255)
     * @Assert\NotBlank(message="bannertype.form.banner_name.not_blank")
     */
    private $bannerName;
    
    /**
     * @var string
     *
     * @ORM\Column(name="banner_url", type="string", length=255, nullable=true)
     */
    private $bannerUrl;

    /**
     * @var string
     *
     * @ORM\Column(name="html_id", type="string", length=255, nullable=true)
     */
    private $htmlId;
    
    /**
     * @var string
     *
     * @ORM\Column(name="banner_html", type="text", nullable=true)
     */
    private $bannerHtml;
    
    
    /**
     * @var string
     *
     * @ORM\Column(name="html1_effect", type="string", length=255)

     */
    private $html1effect;
    
    /**
     * @var string
     *
     * @ORM\Column(name="html2_effect", type="string", length=255)
     */
    private $html2effect;
    
    /**
     * @var string
     *
     * @ORM\Column(name="html3_effect", type="string", length=255)
     */
    private $html3effect;
    
    /**
     * @var string
     *
     * @ORM\Column(name="html4_effect", type="string", length=255)
     */
    private $html4effect;
    
    /**
     * @var string
     *
     * @ORM\Column(name="html5_effect", type="string", length=255)
     */
    private $html5effect;
    
    /**
     * @var string
     *
     * @ORM\Column(name="mobile_app_setting", type="string", length=255, nullable=true)
     */
    private $mobileAppSetting;
    
    public function __construct()
    {
        $this->bannerLanguage = new ArrayCollection();
        //$this->bannerCountry = new ArrayCollection();
    }
    

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }
    
    /**
     * Set id
     *
     * @param integer $id
     * @return BannerId
     */
    public function setId($id)
    {
        $this->id = $id;
    
        return $this;
    }
    
    /**
     * Set countryId
     *
     * @param integer $countryId
     * @return BannerCountryId
     */
    public function setCountryId($countryId)
    {
        $this->countryId = $countryId;
    
        return $this;
    }
    
    /**
     * Get countryId
     *
     * @return integer
     */
    public function getCountryId()
    {
        return $this->countryId;
    }
    
    /**
     * Set bannerTypeId
     *
     * @param \OfficeBrain\Bundle\BannerBundle\Entity\BannerMaster $bannerTypeId
     * @return Banner
     */
    public function setBannerTypeId($bannerTypeId)
    {
        $this->bannerTypeId = $bannerTypeId;

        return $this;
    }

     /**
     * Set bannerDescription.
     *
     * @param string $bannerDescription
     *
     * @return Banner
     */
    public function setBannerDescription($bannerDescription)
    {
        $this->bannerDescription = $bannerDescription;

        return $this;
    }

    /**
     * Get bannerDescription.
     *
     * @return string
     */
    public function getBannerDescription()
    {
        return $this->bannerDescription;
    }

    /**
     * Get bannerTypeId
     *
     * @return \OfficeBrain\Bundle\BannerBundle\Entity\BannerMaster
     */
    public function getBannerTypeId()
    {
        return $this->bannerTypeId;
    }

    /**
     * Set uploadedBanner
     *
     * @param string $uploadedBanner
     * @return Banner
     */
    public function setUploadedBanner($uploadedBanner)
    {
        $this->uploadedBanner = $uploadedBanner;
        return $this;
    }

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

    /**
     * Set scheduleStartDate
     *
     * @param \DateTime $scheduleStartDate
     * @return Banner
     */
    public function setScheduleStartDate($scheduleStartDate)
    {
        $this->scheduleStartDate = $scheduleStartDate;

        return $this;
    }

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

    /**
     * Set scheduleEndDate
     *
     * @param \DateTime $scheduleEndDate
     * @return Banner
     */
    public function setScheduleEndDate($scheduleEndDate)
    {
        $this->scheduleEndDate = $scheduleEndDate;
        return $this;
    }

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

    /**
     * Set effect
     *
     * @param string $effect
     * @return Banner
     */
    public function setEffect($effect)
    {
        $this->effect = $effect;

        return $this;
    }

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

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

        return $this;
    }

    /**
     * Get status
     *
     * @return integer
     */
    public function getStatus()
    {
        return $this->status;
    }
    
    
    /**
     * Get urlStatus
     *
     * @return integer
     */
    public function getUrlStatus()
    {
        return $this->urlStatus;
    }
    
    /**
     * Set urlStatus
     *
     * @param integer $urlStatus
     * @return Banner
     */
    public function setUrlStatus($urlStatus)
    {
        $this->urlStatus = $urlStatus;
        
        return $this;
    }
    

    /**
     * Set createdUid
     *
     * @param integer $createdUid
     * @return Banner
     */
    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 Banner
     */
    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 Banner
     */
    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 Banner
     */
    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 Banner
     */
    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 Banner
     */
    public function setDeletedAt($deletedAt)
    {
        $this->deletedAt = $deletedAt;

        return $this;
    }

    /**
     * Get deletedAt
     *
     * @return \DateTime
     */
    public function getDeletedAt()
    {
        return $this->deletedAt;
    }
    
    /**
     * Set instanceId
     *
     * @param integer $instanceId
     * @return BannerMaster
     */
    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 BannerMaster
     */
    public function setInstanceType($instanceType)
    {
        $this->instanceType = $instanceType;
    
        return $this;
    }
    
    /**
     * Get instanceType
     *
     * @return string
     */
    public function getInstanceType()
    {
        return $this->instanceType;
    }

    /**
     * Set sortPosition
     *
     * @param integer $sortPosition
     * @return SortPosition
     */
    public function setSortPosition($sortPosition)
    {
        $this->sortPosition = $sortPosition;
    
        return $this;
    }
    
    /**
     * Get sortPosition
     *
     * @return integer
     */
    public function getSortPosition()
    {
        return $this->sortPosition;
    }
    
    /**
     * Set bannerName
     *
     * @param string $bannerName
     * @return Banner
     */
    public function setBannerName($bannerName)
    {
        $this->bannerName = $bannerName;
        return $this;
    }
    
    /**
     * Get bannerName
     *
     * @return string
     */
    public function getBannerName()
    {
        return $this->bannerName;
    }
    
    /**
     * Set bannerUrl
     *
     * @param string $bannerUrl
     * @return Banner
     */
    public function setBannerUrl($bannerUrl)
    {
        $this->bannerUrl = $bannerUrl;
        return $this;
    }
    
    /**
     * Get bannerUrl
     *
     * @return string
     */
    public function getBannerUrl()
    {
        return $this->bannerUrl;
    }
    
    /**
     * Set bannerHtml
     *
     * @param string $bannerHtml
     * @return BannerLanguage
     */
    public function setBannerHtml($bannerHtml)
    {
        $this->bannerHtml = $bannerHtml;

        return $this;
    }

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

    
    /**
     * Set status
     *
     * @param integer $html1effect
     * @return Banner
     */
    public function setHtml1effect($html1effect)
    {
        $this->html1effect = $html1effect;

        return $this;
    }

    /**
     * Get status
     *
     * @return integer
     */
    public function getHtml1effect()
    {
        return $this->html1effect;
    }
    
    /**
     * Set status
     *
     * @param integer $html2effect
     * @return Banner
     */
    public function setHtml2effect($html2effect)
    {
        $this->html2effect = $html2effect;

        return $this;
    }

    /**
     * Get status
     *
     * @return integer
     */
    public function getHtml2effect()
    {
        return $this->html2effect;
    }
    
    /**
     * Set status
     *
     * @param integer $html3effect
     * @return Banner
     */
    public function setHtml3effect($html3effect)
    {
        $this->html3effect = $html3effect;

        return $this;
    }

    /**
     * Get status
     *
     * @return integer
     */
    public function getHtml3effect()
    {
        return $this->html3effect;
    }
    
    /**
     * Set status
     *
     * @param integer $html4effect
     * @return Banner
     */
    public function setHtml4effect($html4effect)
    {
        $this->html4effect = $html4effect;

        return $this;
    }

    /**
     * Get status
     *
     * @return integer
     */
    public function getHtml4effect()
    {
        return $this->html4effect;
    }
    
    /**
     * Set status
     *
     * @param integer $html5effect
     * @return Banner
     */
    public function setHtml5effect($html5effect)
    {
        $this->html5effect = $html5effect;

        return $this;
    }

    /**
     * Get status
     *
     * @return integer
     */
    public function getHtml5effect()
    {
        return $this->html5effect;
    }
    
    /**
     * Add bannerLanguage
     *
     * @param \OfficeBrain\Bundle\BannerBundle\Entity\BannerLanguage $bannerLanguage
     * @return Banner
     */
    public function addBannerLanguage(\OfficeBrain\Bundle\BannerBundle\Entity\BannerLanguage $bannerLanguage)
    {
        $this->bannerLanguage[] = $bannerLanguage;

        return $this;
    }

    /**
     * Remove bannerLanguage
     *
     * @param \OfficeBrain\Bundle\BannerBundle\Entity\BannerLanguage $bannerLanguage
     */
    public function removeBannerLanguage(\OfficeBrain\Bundle\BannerBundle\Entity\BannerLanguage $bannerLanguage)
    {
        $this->bannerLanguage->removeElement($bannerLanguage);
    }

    /**
     * Get bannerLanguage
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getBannerLanguage()
    {
        return $this->bannerLanguage;
    }
    
    public function setBannerLanguage($bannerLanguage)
    {
        foreach ($bannerLanguage as $bannerlangVal) {
            $bannerlangVal->setBannerId($this);
        }
        $this->bannerLanguage = $bannerLanguage;
    }

    /**
     * Set htmlId
     *
     * @param string $htmlId
     * @return Banner
     */
    public function setHtmlId($htmlId)
    {
        $this->htmlId = $htmlId;

        return $this;
    }

    /**
     * Get htmlId
     *
     * @return string 
     */
    public function getHtmlId()
    {
        return $this->htmlId;
    }
    /**
     * Set mobileAppSetting
     *
     * @param string $mobileAppSetting
     * @return Banner
     */
    public function setMobileAppSetting($mobileAppSetting)
    {
        $this->mobileAppSetting = $mobileAppSetting;

        return $this;
    }

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

    /**
     * Set visibility
     *
     * @param integer $visibility
     *
     * @return Banner
     */
    public function setVisibility($visibility)
    {
        $this->visibility = $visibility;

        return $this;
    }

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