<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* ServiceDelivery
*
* @ORM\Table(name="service_delivery")
* @ORM\Entity
*/
class ServiceDelivery
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="label", type="string", length=255, nullable=true, options={"default"="NULL"})
* @Groups({"agenda-api"})
*/
private $label;
/**
* @var float|null
*
* @ORM\Column(name="price", type="float", precision=10, scale=0, nullable=true, options={"default"="NULL"})
*/
private $price;
/**
* @var float|null
*
* @ORM\Column(name="discount", type="float", precision=10, scale=0, nullable=true, options={"default"="NULL"})
*/
private $discount;
/**
* @var int|null
*
* @ORM\Column(name="duration", type="integer", nullable=true, options={"default"=60})
*/
private $duration = 60;
/**
* @var bool|null
*
* @ORM\Column(name="enabled", type="boolean", nullable=true, options={"default"="1"})
*/
private $enabled = true;
/**
* @var bool|null
*
* @ORM\Column(name="is_coaching", type="boolean", nullable=true, options={"default"="0"})
* @Groups({"agenda-api"})
*/
private $isCoaching = false;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="ServiceDeliveryPlace", inversedBy="serviceDelivery")
* @ORM\JoinTable(name="service_delivery_has_place",
* joinColumns={
* @ORM\JoinColumn(name="service_delivery_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="service_delivery_place_id", referencedColumnName="id")
* }
* )
*/
private $serviceDeliveryPlace = array();
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="ServiceDeliveryHasPlace", mappedBy="serviceDelivery")
*/
private $serviceDeliveryHasPlace;
/**
* @var Partner|null
*
* @ORM\ManyToOne(targetEntity="Partner", inversedBy="servicesDeliveries")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="partner_id", referencedColumnName="id")
* })
*/
private $partner;
/**
* @var ServiceDelivery|null
*
* @ORM\ManyToOne(targetEntity="ServiceDelivery")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="history_service_id", referencedColumnName="id")
* })
*/
private $historyService;
/**
* @var bool|null
*
* @ORM\Column(name="first_reservation_only", type="boolean", nullable=true, options={"default"="0"})
*/
private $firstReservationOnly = false;
/**
* @var bool|null
*
* @ORM\Column(name="second_reservation_only", type="boolean", nullable=true, options={"default"="0"})
*/
private $secondReservationOnly = false;
/**
* Constructor
*/
public function __construct()
{
$this->serviceDeliveryPlace = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return string|null
*/
public function getLabel(): ?string
{
return $this->label;
}
/**
* @param string|null $label
*/
public function setLabel(?string $label): void
{
$this->label = $label;
}
/**
* @return float|null
*/
public function getPrice(): ?float
{
return $this->price;
}
/**
* @param float|null $price
*/
public function setPrice(?float $price): void
{
$this->price = $price;
}
/**
* @return float|null
*/
public function getDiscount(): ?float
{
return $this->discount;
}
/**
* @param float|null $discount
*/
public function setDiscount(?float $discount): void
{
$this->discount = $discount;
}
/**
* @return int|null
*/
public function getDuration(): ?int
{
return $this->duration;
}
/**
* @param int|null $duration
*/
public function setDuration(?int $duration): void
{
$this->duration = $duration;
}
/**
* @return bool|null
*/
public function getEnabled(): ?bool
{
return $this->enabled;
}
/**
* @param bool|null $enabled
*/
public function setEnabled(?bool $enabled): void
{
$this->enabled = $enabled;
}
/**
* @return bool|null
*/
public function getIsCoaching(): ?bool
{
return $this->isCoaching;
}
/**
* @param bool|null $isCoaching
*/
public function setIsCoaching(?bool $isCoaching): void
{
$this->isCoaching = $isCoaching;
}
/**
* @return \Doctrine\Common\Collections\Collection
*/
public function getServiceDeliveryPlace()
{
return $this->serviceDeliveryPlace;
}
/**
* @param \Doctrine\Common\Collections\Collection $serviceDeliveryPlace
*/
public function setServiceDeliveryPlace($serviceDeliveryPlace): void
{
$this->serviceDeliveryPlace = $serviceDeliveryPlace;
}
/**
* @return \Doctrine\Common\Collections\Collection
*/
public function getServiceDeliveryHasPlace()
{
return $this->serviceDeliveryHasPlace;
}
/**
* @param \Doctrine\Common\Collections\Collection $serviceDeliveryHasPlace
*/
public function setServiceDeliveryHasPlace($serviceDeliveryHasPlace): void
{
$this->serviceDeliveryHasPlace = $serviceDeliveryHasPlace;
}
/**
* @return Partner|null
*/
public function getPartner(): ?Partner
{
return $this->partner;
}
/**
* @param Partner|null $partner
*/
public function setPartner(?Partner $partner): void
{
$this->partner = $partner;
}
/**
* @return ServiceDelivery|null
*/
public function getHistoryService(): ?ServiceDelivery
{
return $this->historyService;
}
/**
* @param ServiceDelivery|null $historyService
*/
public function setHistoryService(?ServiceDelivery $historyService): void
{
$this->historyService = $historyService;
}
/**
* @return bool|null
*/
public function getFirstReservationOnly(): ?bool
{
return $this->firstReservationOnly;
}
/**
* @param bool|null $firstReservationOnly
*/
public function setFirstReservationOnly(?bool $firstReservationOnly): void
{
$this->firstReservationOnly = $firstReservationOnly;
}
/**
* @return bool|null
*/
public function getSecondReservationOnly(): ?bool
{
return $this->secondReservationOnly;
}
/**
* @param bool|null $secondReservationOnly
*/
public function setSecondReservationOnly(?bool $secondReservationOnly): void
{
$this->secondReservationOnly = $secondReservationOnly;
}
public function getRealPrice(): ?float
{
if (!$this->getDiscount()) {
return $this->getPrice();
}
return $this->getPrice()*(1-($this->getDiscount()/100));
}
}