<?php

namespace Webkul\DamBundle\Entity;

/**
 * Asset
 */
class Asset
{
    /**
     * @var integer
     */
    private $id;

    /**
     * @var string
     */
    private $code;


    /**
     * @var string
     */
    private $description;

    /**
     * @var boolean
     */
    private $starred = false;

    /**
     * @var \DateTime
     */
    private $createdAt;

    /**
     * @var \DateTime
     */
    private $updatedAt;

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

    /**
     * Set code
     *
     * @param string $code
     *
     * @return Asset
     */
    public function setCode($code)
    {
        $this->code = $code;

        return $this;
    }

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

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

        return $this;
    }

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

    /**
     * Set starred
     *
     * @param boolean $starred
     *
     * @return Asset
     */
    public function setStarred($starred)
    {
        $this->starred = $starred;

        return $this;
    }

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

    /**
     * Set createdAt
     *
     * @param \DateTime $createdAt
     *
     * @return Asset
     */
    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 Asset
     */
    public function setUpdatedAt($updatedAt)
    {
        $this->updatedAt = $updatedAt;

        return $this;
    }

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

    public function setCreatedAtValue()
    {
        $this->createdAt = new \DateTime();
    }

    public function setUpdatedAtValue()
    {
        $this->updatedAt = new \DateTime();
    }
    /**
     * @var string
     */
    private $title;

    /**
     * @var string
     */
    private $alt;


    /**
     * Set title
     *
     * @param string $title
     *
     * @return Asset
     */
    public function setTitle($title)
    {
        $this->title = $title;

        return $this;
    }

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

    /**
     * Set alt
     *
     * @param string $alt
     *
     * @return Asset
     */
    public function setAlt($alt)
    {
        $this->alt = $alt;

        return $this;
    }

    /**
     * Get alt
     *
     * @return string
     */
    public function getAlt()
    {
        return $this->alt;
    }
    /**
     * @var \Doctrine\Common\Collections\Collection
     */
    private $medias;

    /**
     * @var \Doctrine\Common\Collections\Collection
     */
    private $tags;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->medias = new \Doctrine\Common\Collections\ArrayCollection();
        $this->tags = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * Add media
     *
     * @param \Webkul\DamBundle\Entity\AssetMedia $media
     *
     * @return Asset
     */
    public function addMedia(\Webkul\DamBundle\Entity\AssetMedia $media)
    {
        $this->medias[] = $media;

        return $this;
    }

    /**
     * Remove media
     *
     * @param \Webkul\DamBundle\Entity\AssetMedia $media
     */
    public function removeMedia(\Webkul\DamBundle\Entity\AssetMedia $media)
    {
        $this->medias->removeElement($media);
    }

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

    /**
     * Add tag
     *
     * @param \Webkul\DamBundle\Entity\AssetTag $tag
     *
     * @return Asset
     */
    public function addTag(\Webkul\DamBundle\Entity\AssetTag $tag)
    {
        $this->tags[] = $tag;

        return $this;
    }

    /**
     * Remove tag
     *
     * @param \Webkul\DamBundle\Entity\AssetTag $tag
     */
    public function removeTag(\Webkul\DamBundle\Entity\AssetTag $tag)
    {
        $this->tags->removeElement($tag);
    }

    /**
     * Get tags
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getTags()
    {
        return $this->tags;
    }
  
    /**
     * @var \Doctrine\Common\Collections\Collection
     */
    public $category;


    /**
     * Add category
     *
     * @param \Webkul\DamBundle\Entity\AssetCategory $category
     *
     * @return Asset
     */
    public function addCategory(\Webkul\DamBundle\Entity\AssetCategory $category)
    {
        $this->category[] = $category;

        return $this;
    }

    /**
     * Remove category
     *
     * @param \Webkul\DamBundle\Entity\AssetCategory $category
     */
    public function removeCategory(\Webkul\DamBundle\Entity\AssetCategory $category)
    {
        $this->category->removeElement($category);
    }

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

    
    /**
     * @var \DateTime|null
     */
    private $date;


    /**
     * Set date.
     *
     * @param \DateTime|null $date
     *
     * @return Asset
     */
    public function setDate($date = null)
    {
        $this->date = $date;

        return $this;
    }

    /**
     * Get date.
     *
     * @return \DateTime|null
     */
    public function getDate()
    {
        return $this->date;
    }
    /**
     * @var \DateTime|null
     */
    private $expiration_date;


    /**
     * Set expirationDate.
     *
     * @param \DateTime|null $expirationDate
     *
     * @return Asset
     */
    public function setExpirationDate($expirationDate = null)
    {
        $this->expiration_date = $expirationDate;

        return $this;
    }

    /**
     * Get expirationDate.
     *
     * @return \DateTime|null
     */
    public function getExpirationDate()
    {
        return $this->expiration_date;
    }
    /**
     * @var string
     */
    private $default_timezone;


    /**
     * Set defaultTimezone.
     *
     * @param string $defaultTimezone
     *
     * @return Asset
     */
    public function setDefaultTimezone($defaultTimezone)
    {
        $this->default_timezone = $defaultTimezone;

        return $this;
    }

    /**
     * Get defaultTimezone.
     *
     * @return string
     */
    public function getDefaultTimezone()
    {
        return $this->default_timezone;
    }
    /**
     * @var string|null
     */
    private $thumbImage;


    /**
     * Set thumbImage.
     *
     * @param string|null $thumbImage
     *
     * @return Asset
     */
    public function setThumbImage($thumbImage = null)
    {
        $this->thumbImage = $thumbImage;

        return $this;
    }

    /**
     * Get thumbImage.
     *
     * @return string|null
     */
    public function getThumbImage()
    {
        return $this->thumbImage;
    }
}
