git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3424 f459cee4-fb09-11de-96c3-f9c5f16c3c76
667 lines
No EOL
13 KiB
PHP
667 lines
No EOL
13 KiB
PHP
<?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;
|
|
|
|
/**
|
|
* Class BookingRequest
|
|
* @package AppBundle\Entity
|
|
* @AppBundleAssert\BookingRequest
|
|
*/
|
|
class BookingRequest
|
|
{
|
|
// Used in SternToursCrmBookingExports, expected to be equivalent to sex (as defined in Traveler)
|
|
const MR = 1;
|
|
const MRS = 2;
|
|
|
|
/**
|
|
* @var TravelDeparturePoint $departure
|
|
*/
|
|
private $departure;
|
|
|
|
private $singleRoomCount;
|
|
|
|
private $doubleRoomCount;
|
|
|
|
private $tripleRoomCount;
|
|
|
|
private $roomCount;
|
|
|
|
/**
|
|
* @var TravelInsurance $insurance
|
|
*/
|
|
private $insurance;
|
|
|
|
private $comfort = false;
|
|
|
|
private $travelOptions = [];
|
|
|
|
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 $travelers = [];
|
|
|
|
private $singleRooms = [];
|
|
private $doubleRooms = [];
|
|
private $tripleRooms = [];
|
|
|
|
private $notes;
|
|
|
|
/**
|
|
* @Assert\IsTrue()
|
|
*/
|
|
private $acceptTerms = false;
|
|
|
|
private $acceptLegalRights = false;
|
|
|
|
private $acceptPrivacy = false;
|
|
|
|
/**
|
|
* BookingRequest constructor.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
for($i = 0; $i < 5; ++$i)
|
|
{
|
|
$this->singleRooms[] = new Room(1);
|
|
$this->doubleRooms[] = new Room(2);
|
|
$this->tripleRooms[] = new Room(3);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return TravelDeparturePoint
|
|
*/
|
|
public function getDeparture()
|
|
{
|
|
return $this->departure;
|
|
}
|
|
|
|
/**
|
|
* @param TravelDeparturePoint $departure
|
|
*/
|
|
public function setDeparture(TravelDeparturePoint $departure)
|
|
{
|
|
$this->departure = $departure;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getTravelerCount()
|
|
{
|
|
$allUsedTravelersCount = 0;
|
|
for($i = 0; $i < $this->singleRoomCount; ++$i)
|
|
{
|
|
$allUsedTravelersCount += $this->singleRooms[$i]->getTravelerCount();
|
|
}
|
|
|
|
for($i = 0; $i < $this->doubleRoomCount; ++$i)
|
|
{
|
|
$allUsedTravelersCount += $this->doubleRooms[$i]->getTravelerCount();
|
|
}
|
|
|
|
for($i = 0; $i < $this->tripleRoomCount; ++$i)
|
|
{
|
|
$allUsedTravelersCount += $this->tripleRooms[$i]->getTravelerCount();
|
|
}
|
|
|
|
return $allUsedTravelersCount;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $travelerCount
|
|
*/
|
|
public function setTravelerCount($travelerCount)
|
|
{
|
|
$this->travelerCount = $travelerCount;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getRoomCount()
|
|
{
|
|
return $this->roomCount;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $travelers
|
|
*/
|
|
public function setRoomCount($travelers)
|
|
{
|
|
// nicht so kompliziert
|
|
// übliche Anzahl der Reisenden war 2 -> Standardraum: 1 Doppelzimmer
|
|
$this->travelerCount = $travelers;
|
|
if($travelers % 2 != 0)
|
|
{
|
|
$times = ($travelers - 1) / 2;
|
|
$this->singleRoomCount = 1;
|
|
$this->doubleRoomCount = $times;
|
|
$this->tripleRoomCount = 0;
|
|
$this->roomCount = $times + 1;
|
|
}
|
|
else
|
|
{
|
|
$times = $travelers / 2;
|
|
$this->singleRoomCount = 0;
|
|
$this->doubleRoomCount = $times;
|
|
$this->tripleRoomCount = 0;
|
|
$this->roomCount = $times;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getSingleRoomCount()
|
|
{
|
|
return $this->singleRoomCount;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $singleRoomCount
|
|
*/
|
|
public function setSingleRoomCount($singleRoomCount)
|
|
{
|
|
$this->singleRoomCount = $singleRoomCount;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getDoubleRoomCount()
|
|
{
|
|
return $this->doubleRoomCount;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $doubleRoomCount
|
|
*/
|
|
public function setDoubleRoomCount($doubleRoomCount)
|
|
{
|
|
$this->doubleRoomCount = $doubleRoomCount;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getTripleRoomCount()
|
|
{
|
|
return $this->tripleRoomCount;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $tripleRoomCount
|
|
*/
|
|
public function setTripleRoomCount($tripleRoomCount)
|
|
{
|
|
$this->tripleRoomCount = $tripleRoomCount;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return TravelInsurance
|
|
*/
|
|
public function getInsurance()
|
|
{
|
|
return $this->insurance;
|
|
}
|
|
|
|
/**
|
|
* @param TravelInsurance $insurance
|
|
*/
|
|
public function setInsurance(TravelInsurance $insurance)
|
|
{
|
|
$this->insurance = $insurance;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getComfort()
|
|
{
|
|
return $this->comfort;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $comfort
|
|
*/
|
|
public function setComfort($comfort)
|
|
{
|
|
$this->comfort = $comfort;
|
|
}
|
|
|
|
/**
|
|
* @return TravelOption[]
|
|
*/
|
|
public function getTravelOptions()
|
|
{
|
|
return $this->travelOptions;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $travelOptions
|
|
*/
|
|
public function setTravelOptions($travelOptions)
|
|
{
|
|
$this->travelOptions = $travelOptions;
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function getSalutation()
|
|
{
|
|
return $this->salutation;
|
|
}
|
|
|
|
/**
|
|
* @param int $salutation
|
|
*/
|
|
public function setSalutation($salutation)
|
|
{
|
|
$this->salutation = $salutation;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getFirstName()
|
|
{
|
|
return $this->firstName;
|
|
}
|
|
|
|
/**
|
|
* @param string $firstName
|
|
*/
|
|
public function setFirstName($firstName)
|
|
{
|
|
$this->firstName = $firstName;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getLastName()
|
|
{
|
|
return $this->lastName;
|
|
}
|
|
|
|
/**
|
|
* @param string $lastName
|
|
*/
|
|
public function setLastName($lastName)
|
|
{
|
|
$this->lastName = $lastName;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getStreetAddress()
|
|
{
|
|
return $this->streetAddress;
|
|
}
|
|
|
|
/**
|
|
* @param string $streetAddress
|
|
*/
|
|
public function setStreetAddress($streetAddress)
|
|
{
|
|
$this->streetAddress = $streetAddress;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getZipCode()
|
|
{
|
|
return $this->zipCode;
|
|
}
|
|
|
|
/**
|
|
* @param string $zipCode
|
|
*/
|
|
public function setZipCode($zipCode)
|
|
{
|
|
$this->zipCode = $zipCode;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getCity()
|
|
{
|
|
return $this->city;
|
|
}
|
|
|
|
/**
|
|
* @param string $city
|
|
*/
|
|
public function setCity($city)
|
|
{
|
|
$this->city = $city;
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function getNation()
|
|
{
|
|
return $this->nation;
|
|
}
|
|
|
|
/**
|
|
* @param int $nation
|
|
*/
|
|
public function setNation($nation)
|
|
{
|
|
$this->nation = $nation;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getPhone()
|
|
{
|
|
return $this->phone;
|
|
}
|
|
|
|
/**
|
|
* @param string $phone
|
|
*/
|
|
public function setPhone($phone)
|
|
{
|
|
$this->phone = $phone;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getFax()
|
|
{
|
|
return $this->fax;
|
|
}
|
|
|
|
/**
|
|
* @param string $fax
|
|
*/
|
|
public function setFax($fax)
|
|
{
|
|
$this->fax = $fax;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getEmail()
|
|
{
|
|
return $this->email;
|
|
}
|
|
|
|
/**
|
|
* @param string $email
|
|
*/
|
|
public function setEmail($email)
|
|
{
|
|
$this->email = $email;
|
|
}
|
|
|
|
// get und set der Travelers liegt jetzt in Room; sollte so nicht mehr verwendet werden!
|
|
/**
|
|
* @return Traveler[]
|
|
*/
|
|
public function getTravelers()
|
|
{
|
|
$allUsedTravelers = [];
|
|
|
|
// könnte man eventuell in eine for-Schleife packen, wenn man garantiert, dass es immer gleich viele Räume von jedem Typ gibt
|
|
for ($i = 0; $i < $this->singleRoomCount; ++$i)
|
|
{
|
|
$allUsedTravelers = array_merge($allUsedTravelers, $this->singleRooms[$i]->getTravelers());
|
|
}
|
|
|
|
for ($i = 0; $i < $this->doubleRoomCount; ++$i)
|
|
{
|
|
$allUsedTravelers = array_merge($allUsedTravelers, $this->doubleRooms[$i]->getTravelers());
|
|
}
|
|
|
|
for ($i = 0; $i < $this->tripleRoomCount; ++$i)
|
|
{
|
|
$allUsedTravelers = array_merge($allUsedTravelers, $this->tripleRooms[$i]->getTravelers());
|
|
}
|
|
|
|
// $this->travelers = $allUsedTravelers; // schlecht, getter sollte kein setter sein
|
|
// return $this->travelers; // aber wenn man es so verwenden würde, dann sollte man auch das verwenden
|
|
return $allUsedTravelers;
|
|
}
|
|
|
|
/**
|
|
* @param Traveler[] $travelers
|
|
*/
|
|
public function setTravelers($travelers)
|
|
{
|
|
$this->travelers = $travelers;
|
|
}
|
|
|
|
/**
|
|
* @return Room[]
|
|
*/
|
|
public function getSingleRooms()
|
|
{
|
|
return $this->singleRooms;
|
|
}
|
|
|
|
/**
|
|
* @param Room[] $singleRooms
|
|
*/
|
|
public function setSingleRooms($singleRooms)
|
|
{
|
|
$this->singleRooms = $singleRooms;
|
|
}
|
|
|
|
/**
|
|
* @return Room[]
|
|
*/
|
|
public function getDoubleRooms()
|
|
{
|
|
return $this->doubleRooms;
|
|
}
|
|
|
|
/**
|
|
* @param Room[] $doubleRooms
|
|
*/
|
|
public function setDoubleRooms($doubleRooms)
|
|
{
|
|
$this->doubleRooms = $doubleRooms;
|
|
}
|
|
|
|
/**
|
|
* @return Room[]
|
|
*/
|
|
public function getTripleRooms()
|
|
{
|
|
return $this->tripleRooms;
|
|
}
|
|
|
|
/**
|
|
* @param Room[] $tripleRooms
|
|
*/
|
|
public function setTripleRooms($tripleRooms)
|
|
{
|
|
$this->tripleRooms = $tripleRooms;
|
|
}
|
|
|
|
/**
|
|
* @return Room[]
|
|
*/
|
|
public function getRooms()
|
|
{
|
|
$allRooms = [];
|
|
$allRooms = array_merge($allRooms, $this->singleRooms);
|
|
$allRooms = array_merge($allRooms, $this->doubleRooms);
|
|
$allRooms = array_merge($allRooms, $this->tripleRooms);
|
|
|
|
return $allRooms;
|
|
}
|
|
|
|
/**
|
|
* @param Room[] $tripleRooms
|
|
*/
|
|
public function setRooms($rooms)
|
|
{
|
|
// falls man es braucht, nachziehen und oder umstrukturieren (booking.html.twig)
|
|
}
|
|
|
|
public function getOccupiedRooms()
|
|
{
|
|
$allRooms = [];
|
|
for($i = 0; $i < $this->singleRoomCount; $i++)
|
|
{
|
|
$allRooms[] = $this->singleRooms[$i];
|
|
//$allRooms = array_push($allRooms, $this->singleRooms[$i]);
|
|
}
|
|
for($i = 0; $i < $this->doubleRoomCount; $i++)
|
|
{
|
|
$allRooms[] = $this->doubleRooms[$i];
|
|
//$allRooms = array_push($allRooms, $this->doubleRooms[$i]);
|
|
}
|
|
for($i = 0; $i < $this->tripleRoomCount; $i++)
|
|
{
|
|
$allRooms[] = $this->tripleRooms[$i];
|
|
//$allRooms = array_push($allRooms, $this->tripleRooms[$i]);
|
|
}
|
|
return $allRooms;
|
|
}
|
|
|
|
|
|
/*
|
|
public function addTraveler(Traveler $traveler)
|
|
{
|
|
$this->travelers[] = $traveler;
|
|
}
|
|
*/
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getNotes()
|
|
{
|
|
return $this->notes;
|
|
}
|
|
|
|
/**
|
|
* @param string $notes
|
|
*/
|
|
public function setNotes($notes)
|
|
{
|
|
$this->notes = $notes;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isAcceptTerms()
|
|
{
|
|
return $this->acceptTerms;
|
|
}
|
|
|
|
/**
|
|
* @param bool $acceptTerms
|
|
*/
|
|
public function setAcceptTerms($acceptTerms)
|
|
{
|
|
$this->acceptTerms = $acceptTerms;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
|
|
public function isAcceptLegalRights()
|
|
{
|
|
return $this->acceptLegalRights;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $acceptLegalRights
|
|
*/
|
|
|
|
public function setAcceptLegalRights($acceptLegalRights)
|
|
{
|
|
$this->acceptLegalRights = $acceptLegalRights;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function isAcceptPrivacy()
|
|
{
|
|
return $this->acceptPrivacy;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $acceptPrivacy
|
|
*/
|
|
public function setAcceptPrivacy($acceptPrivacy)
|
|
{
|
|
$this->acceptPrivacy = $acceptPrivacy;
|
|
}
|
|
|
|
|
|
/**
|
|
* @Assert\Callback
|
|
*/
|
|
public function validate(ExecutionContextInterface $context, $payload)
|
|
{
|
|
//$context->
|
|
}
|
|
} |