<?php

namespace App\Entity;

use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;


use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ExecutionContext;
use Doctrine\Common\Collections\ArrayCollection;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;
use JMS\Serializer\Annotation\Groups;
use JMS\Serializer\Annotation\VirtualProperty;





/**
 * @ORM\Table(name="booking")
 * @ORM\Entity(repositoryClass="App\Entity\BookingRepository")
 * @ORM\HasLifecycleCallbacks
 * @ExclusionPolicy("all")
 */
class Booking
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @Expose
     */
    protected $id;

    /**
     * @ORM\ManyToOne(targetEntity="Profile", cascade={"persist"})
     * @ORM\JoinColumn(name="teacher", referencedColumnName="id")
     * @Expose
     **/
    private $teacher;

    /**
     * @ORM\ManyToOne(targetEntity="Profile", cascade={"persist"})
     * @ORM\JoinColumn(name="student", referencedColumnName="id")
     * @Expose
     **/
    private $student;  

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\ProfileCategory")
     * @ORM\JoinColumn(name="profileCategory", referencedColumnName="id")
     * @Expose
     **/
    protected $profileCategory;

   /**
     * @var integer
     *
     * @ORM\Column(name="first_hour", type="integer", nullable=true)
     * @Expose     
     */
    private $firstHour;

    /**
     * @var integer
     *
     * @ORM\Column(name="webcam", type="integer", nullable=true)
     * @Expose     
     */
    private $webcam;


    /**
     * @var integer
     *
     * @ORM\Column(name="out_place", type="integer", nullable=true)
     * @Expose     
     */
    private $outPlace;

    /**
     * @var integer
     *
     * @ORM\Column(name="in_place", type="integer", nullable=true)
     * @Expose     
     */
    private $inPlace;


    /**
     * @var integer
     *
     * @ORM\Column(name="primaire", type="integer", nullable=true)
     * @Expose     
     */
    private $primaire;


    /**
     * @var integer
     *
     * @ORM\Column(name="lycee", type="integer", nullable=true)
     * @Expose     
     */
    private $lycee;


    /**
     * @var integer
     *
     * @ORM\Column(name="college", type="integer", nullable=true)
     * @Expose     
     */
    private $college;


    /**
     * @var integer
     *
     * @ORM\Column(name="superieur", type="integer", nullable=true)
     * @Expose     
     */
    private $superieur;

    /**
     * @var integer
     *
     * @ORM\Column(name="status", type="integer", nullable=true)
     * @Expose     
     */
    private $status;

    /**
     * @var string $content
     *
     * @ORM\Column(name="content", type="text", nullable=true)
     * @Expose
     */
    private $content;  
    
     /**
     * @Gedmo\Timestampable(on="create")
     * @Doctrine\ORM\Mapping\Column(type="datetime", nullable=true)
     */
    private $created;

    /**
     * @var \DateTime $updated
     *
     * @Gedmo\Timestampable(on="update")
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $modified;   
    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set created
     *
     * @param \DateTime $created
     *
     * @return Booking
     */
    public function setCreated($created)
    {
        $this->created = $created;

        return $this;
    }

    /**
     * Get created
     *
     * @return \DateTime
     */
    public function getCreated()
    {
        return $this->created;
    }

    /**
     * Set modified
     *
     * @param \DateTime $modified
     *
     * @return Booking
     */
    public function setModified($modified)
    {
        $this->modified = $modified;

        return $this;
    }

    /**
     * Get modified
     *
     * @return \DateTime
     */
    public function getModified()
    {
        return $this->modified;
    }

    /**
     * Set content
     *
     * @param string $content
     *
     * @return Booking
     */
    public function setContent($content)
    {
        $this->content = $content;

        return $this;
    }

    /**
     * Get content
     *
     * @return string
     */
    public function getContent()
    {
        return $this->content;
    }

    /**
     * Set firstHour
     *
     * @param integer $firstHour
     *
     * @return Booking
     */
    public function setFirstHour($firstHour)
    {
        $this->firstHour = $firstHour;

        return $this;
    }

    /**
     * Get firstHour
     *
     * @return integer
     */
    public function getFirstHour()
    {
        return $this->firstHour;
    }

    /**
     * Set webcam
     *
     * @param integer $webcam
     *
     * @return Booking
     */
    public function setWebcam($webcam)
    {
        $this->webcam = $webcam;

        return $this;
    }

    /**
     * Get webcam
     *
     * @return integer
     */
    public function getWebcam()
    {
        return $this->webcam;
    }

    /**
     * Set outPlace
     *
     * @param integer $outPlace
     *
     * @return Booking
     */
    public function setOutPlace($outPlace)
    {
        $this->outPlace = $outPlace;

        return $this;
    }

    /**
     * Get outPlace
     *
     * @return integer
     */
    public function getOutPlace()
    {
        return $this->outPlace;
    }

    /**
     * Set inPlace
     *
     * @param integer $inPlace
     *
     * @return Booking
     */
    public function setInPlace($inPlace)
    {
        $this->inPlace = $inPlace;

        return $this;
    }

    /**
     * Get inPlace
     *
     * @return integer
     */
    public function getInPlace()
    {
        return $this->inPlace;
    }

    /**
     * Set primaire
     *
     * @param integer $primaire
     *
     * @return Booking
     */
    public function setPrimaire($primaire)
    {
        $this->primaire = $primaire;

        return $this;
    }

    /**
     * Get primaire
     *
     * @return integer
     */
    public function getPrimaire()
    {
        return $this->primaire;
    }

    /**
     * Set lycee
     *
     * @param integer $lycee
     *
     * @return Booking
     */
    public function setLycee($lycee)
    {
        $this->lycee = $lycee;

        return $this;
    }

    /**
     * Get lycee
     *
     * @return integer
     */
    public function getLycee()
    {
        return $this->lycee;
    }

    /**
     * Set college
     *
     * @param integer $college
     *
     * @return Booking
     */
    public function setCollege($college)
    {
        $this->college = $college;

        return $this;
    }

    /**
     * Get college
     *
     * @return integer
     */
    public function getCollege()
    {
        return $this->college;
    }

    /**
     * Set superieur
     *
     * @param integer $superieur
     *
     * @return Booking
     */
    public function setSuperieur($superieur)
    {
        $this->superieur = $superieur;

        return $this;
    }

    /**
     * Get superieur
     *
     * @return integer
     */
    public function getSuperieur()
    {
        return $this->superieur;
    }

    /**
     * Set status
     *
     * @param integer $status
     *
     * @return Booking
     */
    public function setStatus($status)
    {
        $this->status = $status;

        return $this;
    }

    /**
     * Get status
     *
     * @return integer
     */
    public function getStatus()
    {
        return $this->status;
    }

    /**
     * Set teacher
     *
     * @param \App\Entity\Profile $teacher
     *
     * @return Booking
     */
    public function setTeacher(\App\Entity\Profile $teacher = null)
    {
        $this->teacher = $teacher;

        return $this;
    }

    /**
     * Get teacher
     *
     * @return \App\Entity\Profile
     */
    public function getTeacher()
    {
        return $this->teacher;
    }

    /**
     * Set student
     *
     * @param \App\Entity\Profile $student
     *
     * @return Booking
     */
    public function setStudent(\App\Entity\Profile $student = null)
    {
        $this->student = $student;

        return $this;
    }

    /**
     * Get student
     *
     * @return \App\Entity\Profile
     */
    public function getStudent()
    {
        return $this->student;
    }

    /**
     * Set profileCategory
     *
     * @param \App\Entity\ProfileCategory $profileCategory
     *
     * @return Booking
     */
    public function setProfileCategory(\App\Entity\ProfileCategory $profileCategory = null)
    {
        $this->profileCategory = $profileCategory;

        return $this;
    }

    /**
     * Get profileCategory
     *
     * @return \App\Entity\ProfileCategory
     */
    public function getProfileCategory()
    {
        return $this->profileCategory;
    }
}
