<?php
declare(strict_types=1);
namespace Croisiland\CommonBundle\Entity\Partner;
use Croisiland\CommonBundle\Annotation\Partner\PartnerCompanyDiscountFormValidator;
use Croisiland\CommonBundle\Entity\Cabin\CabinType;
use Croisiland\CommonBundle\Entity\Company\Company;
use Croisiland\CommonBundle\Repository\Partner\PartnerCompanyDiscountRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=PartnerCompanyDiscountRepository::class)
* @PartnerCompanyDiscountFormValidator(groups={"partner_company_discount_form_validator"})
*/
class PartnerCompanyDiscount
{
/**
* @ORM\Id
*
* @ORM\GeneratedValue
*
* @ORM\Column(type="integer")
*/
protected ?int $id = null;
/**
* @ORM\Column(type="float")
*/
protected ?float $rate = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
protected ?float $additionalRate = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
protected ?float $allowancePercentage = null;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected ?string $discountLabel = null;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected ?string $secondDiscountLabel = null;
/**
* @ORM\Column(type="boolean")
*/
protected bool $isArchived = false;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
protected ?\DateTimeInterface $startsAt = null;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
protected ?\DateTimeInterface $endsAt = null;
/**
* @ORM\Column(type="boolean")
*/
protected bool $isDefault = false;
/**
* @ORM\Column(type="integer", nullable=true)
*/
protected ?int $sourceId = null;
/**
* @ORM\ManyToOne(targetEntity=Partner::class, inversedBy="partnerCompanyDiscounts")
*
* @ORM\JoinColumn(nullable=false)
*/
private Partner $partner;
/**
* @ORM\ManyToOne(targetEntity=Company::class, inversedBy="partnerCompanyDiscounts")
*
* @ORM\JoinColumn(nullable=false)
*/
private Company $company;
/**
* @ORM\ManyToOne(targetEntity=CabinType::class, inversedBy="partnerCompanyDiscounts")
*/
private ?CabinType $cabinType = null;
public function getId(): ?int
{
return $this->id;
}
/**
* @return float|null
*/
public function getRate(): ?float
{
return $this->rate;
}
/**
* @param float|null $rate
* @return PartnerCompanyDiscount
*/
public function setRate(?float $rate): PartnerCompanyDiscount
{
$this->rate = $rate;
return $this;
}
/**
* @return float|null
*/
public function getAdditionalRate(): ?float
{
return $this->additionalRate;
}
/**
* @param float|null $additionalRate
* @return PartnerCompanyDiscount
*/
public function setAdditionalRate(?float $additionalRate): PartnerCompanyDiscount
{
$this->additionalRate = $additionalRate;
return $this;
}
/**
* @return float|null
*/
public function getAllowancePercentage(): ?float
{
return $this->allowancePercentage;
}
/**
* @param float|null $allowancePercentage
* @return PartnerCompanyDiscount
*/
public function setAllowancePercentage(?float $allowancePercentage): PartnerCompanyDiscount
{
$this->allowancePercentage = $allowancePercentage;
return $this;
}
/**
* @return string|null
*/
public function getDiscountLabel(): ?string
{
return $this->discountLabel;
}
/**
* @param string|null $discountLabel
* @return PartnerCompanyDiscount
*/
public function setDiscountLabel(?string $discountLabel): PartnerCompanyDiscount
{
$this->discountLabel = $discountLabel;
return $this;
}
/**
* @return string|null
*/
public function getSecondDiscountLabel(): ?string
{
return $this->secondDiscountLabel;
}
/**
* @param string|null $secondDiscountLabel
* @return PartnerCompanyDiscount
*/
public function setSecondDiscountLabel(?string $secondDiscountLabel): PartnerCompanyDiscount
{
$this->secondDiscountLabel = $secondDiscountLabel;
return $this;
}
/**
* @return bool
*/
public function isArchived(): bool
{
return $this->isArchived;
}
/**
* @param bool $isArchived
* @return PartnerCompanyDiscount
*/
public function setIsArchived(bool $isArchived): PartnerCompanyDiscount
{
$this->isArchived = $isArchived;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getStartsAt(): ?\DateTimeInterface
{
return $this->startsAt;
}
/**
* @param \DateTimeInterface|null $startsAt
* @return PartnerCompanyDiscount
*/
public function setStartsAt(?\DateTimeInterface $startsAt): PartnerCompanyDiscount
{
$this->startsAt = $startsAt;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getEndsAt(): ?\DateTimeInterface
{
return $this->endsAt;
}
/**
* @param \DateTimeInterface|null $endsAt
* @return PartnerCompanyDiscount
*/
public function setEndsAt(?\DateTimeInterface $endsAt): PartnerCompanyDiscount
{
$this->endsAt = $endsAt;
return $this;
}
/**
* @return bool
*/
public function isDefault(): bool
{
return $this->isDefault;
}
/**
* @param bool $isDefault
* @return PartnerCompanyDiscount
*/
public function setIsDefault(bool $isDefault): PartnerCompanyDiscount
{
$this->isDefault = $isDefault;
return $this;
}
/**
* @return int|null
*/
public function getSourceId(): ?int
{
return $this->sourceId;
}
/**
* @param int|null $sourceId
* @return PartnerCompanyDiscount
*/
public function setSourceId(?int $sourceId): PartnerCompanyDiscount
{
$this->sourceId = $sourceId;
return $this;
}
public function getPartner(): ?Partner
{
return $this->partner;
}
public function setPartner(?Partner $partner): self
{
$this->partner = $partner;
return $this;
}
public function getCompany(): ?Company
{
return $this->company;
}
public function setCompany(?Company $company): self
{
$this->company = $company;
return $this;
}
public function getCabinType(): ?CabinType
{
return $this->cabinType;
}
public function setCabinType(?CabinType $cabinType): self
{
$this->cabinType = $cabinType;
return $this;
}
}