<?php

namespace AppBundle\Entity\Awin;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Gedmo\Mapping\Annotation as Gedmo;
use AppBundle\Entity\Traits\TimestampableEntity;

/**
 * Produit/Evènement pour le portail fourni par le partenaire Awin
 */
#[ORM\Table(name: 'AwinProduct')]
#[ORM\Entity]
class Product
{
    use TimestampableEntity;
    /**
     * @var string 
     *
     *
     */
    #[ORM\Column(name: 'id', type: 'string')]
    #[ORM\Id]
    protected $id;
    /**
     * @var string
     * @Gedmo\Slug(fields={"name"}, style="camel", separator="_")
     *
     */
    #[ORM\Column(name: 'slug', type: 'string', length: 100)]
    protected $slug;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'name', type: 'string', length: 255)]
    protected $name;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'description', type: 'text', length: 65535, nullable: true)]
    protected $description;
    /**
     * @var array
     *
     *
     */
    #[ORM\Column(type: 'json_array', nullable: true)]
    protected $categories;
    /**
     * @var \DateTime
     *
     *
     */
    #[ORM\Column(name: 'datetimeStart', type: 'date', nullable: true)]
    protected $datetimeStart;
    /**
     * @var \DateTime
     *
     *
     */
    #[ORM\Column(name: 'datetimeEnd', type: 'date', nullable: true)]
    protected $datetimeEnd;
    /**
     * @var array
     *
     *
     */
    #[ORM\Column(name: 'meeting_schedule', type: 'json_array', nullable: true)]
    protected $meetingSchedule;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'place_code', type: 'string', length: 50, nullable: true)]
    protected $placeCode;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'place', type: 'string', length: 50, nullable: true)]
    protected $place;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'streetAddress', type: 'string', length: 100, nullable: true)]
    protected $streetAddress;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'postalCode', type: 'string', length: 9, nullable: true)]
    protected $postalCode;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'city', type: 'string', length: 50, nullable: true)]
    protected $city;
    /**
     * @var string
     */
    #[ORM\Column(name: 'country', type: 'string', length: 50, nullable: true)]
    protected $country;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'latitude', type: 'decimal', precision: 18, scale: 15, nullable: true)]
    protected $latitude;
    /**
     * @var string
     *
     *
     *
     */
    #[ORM\Column(name: 'longitude', type: 'decimal', precision: 18, scale: 15, nullable: true)]
    protected $longitude;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'mediumimage', type: 'string', length: 2000, nullable: true)]
    protected $mediumimage;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'largeimage', type: 'string', length: 2000, nullable: true)]
    protected $largeimage;
    /**
     * @var string
     *
     *
     */
    #[ORM\Column(name: 'deepLink', type: 'text', nullable: true)]
    protected $deepLink;
    /**
     * @var float
     *
     *
     */
    #[ORM\Column(name: 'price_mini', type: 'float', nullable: true)]
    protected $priceMini;
    /**
     * @var float
     *
     *
     */
    #[ORM\Column(name: 'price_maxi', type: 'float', nullable: true)]
    protected $priceMaxi;
    /**
     * @var string
     */
    #[ORM\Column(name: 'artists', type: 'text', length: 65535, nullable: true)]
    protected $artists;
    /**
     * Set id
     *
     * @param string $id
     * 
     * @return Product
     */
    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }
    /**
     * Get id
     *
     * @return string
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Set slug
     *
     * @param string $slug
     *
     * @return Product
     */
    public function setSlug($slug)
    {
        $this->slug = $slug;

        return $this;
    }
    /**
     * Get slug
     *
     * @return string
     */
    public function getSlug()
    {
        return $this->slug;
    }
    /**
     * Set name
     *
     * @param string $name
     *
     * @return Product
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }
    /**
     * Get name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * Set description
     *
     * @param string $description
     *
     * @return Product
     */
    public function setDescription($description)
    {
        $this->description = $description;

        return $this;
    }
    /**
     * Get description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }
    /**
     * Set categories
     *
     * @param array $categories
     *
     * @return Product
     */
    public function setCategories(array $categories)
    {
        $this->categories = $categories;

        return $this;
    }
    /**
     * Get categories
     *
     * @return array
     */
    public function getCategories()
    {
        return $this->categories;
    }
    /**
     * Set datetimeStart
     *
     * @param \DateTime $datetimeStart
     *
     * @return Product
     */
    public function setDatetimeStart($datetimeStart)
    {
        $this->datetimeStart = $datetimeStart;

        return $this;
    }
    /**
     * Get datetimeStart
     *
     * @return \DateTime
     */
    public function getDatetimeStart()
    {
        return $this->datetimeStart;
    }
    /**
     * Set datetimeEnd
     *
     * @param \DateTime $datetimeEnd
     *
     * @return Product
     */
    public function setDatetimeEnd($datetimeEnd)
    {
        $this->datetimeEnd = $datetimeEnd;

        return $this;
    }
    /**
     * Get datetimeEnd
     *
     * @return \DateTime
     */
    public function getDatetimeEnd()
    {
        return $this->datetimeEnd;
    }
    /**
     * Set meetingSchedule
     *
     * @param array $meetingSchedule
     *
     * @return Product
     */
    public function setMeetingSchedule(array $meetingSchedule)
    {
        $this->meetingSchedule = $meetingSchedule;

        return $this;
    }
    /**
     * Get meetingSchedule
     *
     * @return array
     */
    public function getMeetingSchedule()
    {
        return $this->meetingSchedule;
    }
    /**
     * Set placeCode
     *
     * @param string $placeCode
     *
     * @return Product
     */
    public function setPlaceCode($placeCode)
    {
        $this->placeCode = $placeCode;

        return $this;
    }
    /**
     * Get placeCode
     *
     * @return string
     */
    public function getPlaceCode()
    {
        return $this->placeCode;
    }
    /**
     * Set place
     *
     * @param string $place
     *
     * @return Product
     */
    public function setPlace($place)
    {
        $this->place = $place;

        return $this;
    }
    /**
     * Get place
     *
     * @return string
     */
    public function getPlace()
    {
        return $this->place;
    }
    /**
     * Set streetAddress
     *
     * @param string $streetAddress
     *
     * @return Product
     */
    public function setStreetAddress($streetAddress)
    {
        $this->streetAddress = $streetAddress;

        return $this;
    }
    /**
     * Get streetAddress
     *
     * @return string
     */
    public function getStreetAddress()
    {
        return $this->streetAddress;
    }
    /**
     * Set postalCode
     *
     * @param string $postalCode
     *
     * @return Product
     */
    public function setPostalCode($postalCode)
    {
        $this->postalCode = $postalCode;

        return $this;
    }
    /**
     * Get postalCode
     *
     * @return string
     */
    public function getPostalCode()
    {
        return $this->postalCode;
    }
    /**
     * Set city
     *
     * @param string $city
     *
     * @return Product
     */
    public function setCity($city)
    {
        $this->city = $city;

        return $this;
    }
    /**
     * Get city
     *
     * @return string
     */
    public function getCity()
    {
        return $this->city;
    }
    /**
     * Set country
     *
     * @param string $country
     *
     * @return Product
     */
    public function setCountry($country)
    {
        $this->country = $country;

        return $this;
    }
    /**
     * Get country
     *
     * @return string
     */
    public function getCountry()
    {
        return $this->country;
    }
    /**
     * Set latitude
     *
     * @param string $latitude
     *
     * @return Product
     */
    public function setLatitude($latitude)
    {
        $this->latitude = $latitude;

        return $this;
    }
    /**
     * Get latitude
     *
     * @return string
     */
    public function getLatitude()
    {
        return $this->latitude;
    }
    /**
     * Set longitude
     *
     * @param string $longitude
     *
     * @return Product
     */
    public function setLongitude($longitude)
    {
        $this->longitude = $longitude;

        return $this;
    }
    /**
     * Get longitude
     *
     * @return string
     */
    public function getLongitude()
    {
        return $this->longitude;
    }
    /**
     * Set mediumimage
     *
     * @param string $mediumimage
     *
     * @return Product
     */
    public function setMediumimage($mediumimage)
    {
        $this->mediumimage = $mediumimage;

        return $this;
    }
    /**
     * Get mediumimage
     *
     * @return string
     */
    public function getMediumimage()
    {
        return $this->mediumimage;
    }
    /**
     * Set largeimage
     *
     * @param string $largeimage
     *
     * @return Product
     */
    public function setLargeimage($largeimage)
    {
        $this->largeimage = $largeimage;

        return $this;
    }
    /**
     * Get largeimage
     *
     * @return string
     */
    public function getLargeimage()
    {
        return $this->largeimage;
    }
    /**
     * Set deepLink
     *
     * @param string $deepLink
     *
     * @return Product
     */
    public function setDeepLink($deepLink)
    {
        $this->deepLink = $deepLink;

        return $this;
    }
    /**
     * Get deepLink
     *
     * @return string
     */
    public function getDeepLink()
    {
        return $this->deepLink;
    }
    /**
     * Set priceMini
     *
     * @param float $priceMini
     *
     * @return Product
     */
    public function setPriceMini($priceMini)
    {
        $this->priceMini = $priceMini;

        return $this;
    }
    /**
     * Get priceMini
     *
     * @return float
     */
    public function getPriceMini()
    {
        return $this->priceMini;
    }
    /**
     * Set priceMaxi
     *
     * @param float $priceMaxi
     *
     * @return Product
     */
    public function setPriceMaxi($priceMaxi)
    {
        $this->priceMaxi = $priceMaxi;

        return $this;
    }
    /**
     * Get priceMaxi
     *
     * @return float
     */
    public function getPriceMaxi()
    {
        return $this->priceMaxi;
    }
    /**
     * Set artists
     *
     * @param string $artists
     *
     * @return Product
     */
    public function setArtists($artists)
    {
        $this->artists = $artists;

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