<?php
/**
 * @author Ulrich Hecht <ulrich.hecht@hecht-software.de>
 * @date 12/16/2016
 */

namespace AppBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;
use AppBundle\Validator\Constraints as AppBundleAssert;
use Symfony\Component\Validator\Context\ExecutionContextInterface;

//TODO im folgenden fehlt noch die Validierung
/**
 * Class BookingRequest
 * @package AppBundle\Entity
 * @AppBundleAssert\FewoBookingRequest
 */
class FewoBookingRequest
{
    // Used in SternToursCrmBookingExports, expected to be equivalent to sex (as defined in Traveler)
    const MR = 1;
    const MRS = 2;

    /**
     * @Assert\DateTime()
     */
    private $fromDate;

    /**
     * @Assert\DateTime()
     */
    private $toDate;

    private $numberDays;

    private $totalPrice;

    private $salutation;

    /**
     * @Assert\NotBlank()
     */
    private $firstName;

    /**
     * @Assert\NotBlank()
     */
    private $lastName;

    /**
     * @Assert\NotBlank()
     */
    private $streetAddress;

    /**
     * @Assert\NotBlank()
     */
    private $zipCode;

    /**
     * @Assert\NotBlank()
     */
    private $city;

    private $nation;

    /**
     * @Assert\NotBlank()
     */
    private $phone;

    private $fax;

    /**
     * @Assert\NotBlank()
     */
    private $email;

    private $notes;

    private $travelerCount;

    private $acceptTerms = false;

    private $acceptPrivacy = false;

    private $lodging;

    private $season;

    private $price;

    /**
     * BookingRequest constructor.
     */
    public function __construct()
    {

    }

    /**
     * @return mixed
     */
    public function getFromDate()
    {
        return $this->fromDate;
    }

    /**
     * @param mixed $fromDate
     */
    public function setFromDate($fromDate)
    {
        $this->fromDate = $fromDate;
    }

    /**
     * @return mixed
     */
    public function getToDate()
    {
        return $this->toDate;
    }

    /**
     * @param mixed $toDate
     */
    public function setToDate($toDate)
    {
        $this->toDate = $toDate;
    }

    /**
     * @return mixed
     */
    public function getSalutation()
    {
        return $this->salutation;
    }

    /**
     * @param mixed $salutation
     */
    public function setSalutation($salutation)
    {
        $this->salutation = $salutation;
    }

    /**
     * @return mixed
     */
    public function getFirstName()
    {
        return $this->firstName;
    }

    /**
     * @param mixed $firstName
     */
    public function setFirstName($firstName)
    {
        $this->firstName = $firstName;
    }

    /**
     * @return mixed
     */
    public function getLastName()
    {
        return $this->lastName;
    }

    /**
     * @param mixed $lastName
     */
    public function setLastName($lastName)
    {
        $this->lastName = $lastName;
    }

    /**
     * @return mixed
     */
    public function getStreetAddress()
    {
        return $this->streetAddress;
    }

    /**
     * @param mixed $streetAddress
     */
    public function setStreetAddress($streetAddress)
    {
        $this->streetAddress = $streetAddress;
    }

    /**
     * @return mixed
     */
    public function getZipCode()
    {
        return $this->zipCode;
    }

    /**
     * @param mixed $zipCode
     */
    public function setZipCode($zipCode)
    {
        $this->zipCode = $zipCode;
    }

    /**
     * @return mixed
     */
    public function getCity()
    {
        return $this->city;
    }

    /**
     * @param mixed $city
     */
    public function setCity($city)
    {
        $this->city = $city;
    }

    /**
     * @return mixed
     */
    public function getNation()
    {
        return $this->nation;
    }

    /**
     * @param mixed $nation
     */
    public function setNation($nation)
    {
        $this->nation = $nation;
    }

    /**
     * @return mixed
     */
    public function getPhone()
    {
        return $this->phone;
    }

    /**
     * @param mixed $phone
     */
    public function setPhone($phone)
    {
        $this->phone = $phone;
    }

    /**
     * @return mixed
     */
    public function getFax()
    {
        return $this->fax;
    }

    /**
     * @param mixed $fax
     */
    public function setFax($fax)
    {
        $this->fax = $fax;
    }

    /**
     * @return mixed
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * @param mixed $email
     */
    public function setEmail($email)
    {
        $this->email = $email;
    }

    /**
     * @return mixed
     */
    public function getNotes()
    {
        return $this->notes;
    }

    /**
     * @param mixed $notes
     */
    public function setNotes($notes)
    {
        $this->notes = $notes;
    }

    /**
     * @return mixed
     */
    public function getTravelerCount()
    {
        return $this->travelerCount;
    }

    /**
     * @param mixed $travelerCount
     */
    public function setTravelerCount($travelerCount)
    {
        $this->travelerCount = $travelerCount;
    }

    /**
     * @return mixed
     */
    public function getAcceptTerms()
    {
        return $this->acceptTerms;
    }

    /**
     * @param mixed $acceptTerms
     */
    public function setAcceptTerms($acceptTerms)
    {
        $this->acceptTerms = $acceptTerms;
    }

      /**
     * @return mixed
     */
    public function isAcceptPrivacy()
    {
        return $this->acceptPrivacy;
    }

    /**
     * @param mixed $acceptPrivacy
     */
    public function setAcceptPrivacy($acceptPrivacy)
    {
        $this->acceptPrivacy = $acceptPrivacy;
    }

    /**
     * @return mixed
     */
    public function getNumberDays()
    {
        return $this->numberDays;
    }

    /**
     * @param mixed $numberDays
     */
    public function setNumberDays($numberDays)
    {
        $this->numberDays = $numberDays;
    }

    /**
     * @return mixed
     */
    public function getTotalPrice()
    {
        return $this->totalPrice;
    }

    /**
     * @param mixed $totalPrice
     */
    public function setTotalPrice($totalPrice)
    {
        $this->totalPrice = $totalPrice;
    }

    /**
     * @return FewoLodging
     */
    public function getLodging()
    {
        return $this->lodging;
    }

    /**
     * @param FewoLodging $lodging
     */
    public function setLodging($lodging)
    {
        $this->lodging = $lodging;
    }

    /**
     * @return FewoSeason
     */
    public function getSeason()
    {
        return $this->season;
    }

    /**
     * @param FewoSeason $season
     */
    public function setSeason($season)
    {
        $this->season = $season;
    }

    /**
     * @return FewoPrice
     */
    public function getPrice()
    {
        return $this->price;
    }

    /**
     * @param FewoPrice $price
     */
    public function setPrice($price)
    {
        $this->price = $price;
    }

    /**
     * @Assert\Callback
     */
    public function validate(ExecutionContextInterface $context, $payload)
    {
        //$context->
    }

}