<?php
namespace App\Entity;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use function PHPUnit\Framework\isEmpty;
/**
* Partner
*
* @ORM\Table(name="partner", indexes={@ORM\Index(name="partner_tuesday_slot_fk", columns={"tuesday"}), @ORM\Index(name="partner_saturay_slot_fk", columns={"saturday"}), @ORM\Index(name="partner_friday_slot_fk", columns={"friday"}), @ORM\Index(name="partner_wednesday_slot_fk", columns={"wednesday"}), @ORM\Index(name="partner_sunday_slot_fk", columns={"sunday"}), @ORM\Index(name="partner_monday_slot_fk", columns={"monday"}), @ORM\Index(name="partner_thursday_slot_fk", columns={"thursday"}), @ORM\Index(name="partner_partner_page_id_fk", columns={"partner_page_id"})})
* @ORM\Entity(repositoryClass="App\Repository\PartnerRepository")
*/
class Partner
{
/**
* @var int|null
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="last_name", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $lastName;
/**
* @var string|null
*
* @ORM\Column(name="first_name", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $firstName;
/**
* @var string|null
*
* @ORM\Column(name="public_email", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $publicEmail;
/**
* @var string|null
*
* @ORM\Column(name="phone", type="string", length=100, nullable=true, options={"default"="NULL"})
*/
private $phone;
/**
* @var string|null
*
* @ORM\Column(name="avatar", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $avatar;
/**
* @var string|null
*
* @ORM\Column(name="slogan", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $slogan;
/**
* @var string|null
*
* @ORM\Column(name="address_name", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $addressName;
/**
* @var string|null
*
* @ORM\Column(name="address", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $address;
/**
* @var string|null
*
* @ORM\Column(name="address2", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $address2;
/**
* @var string|null
*
* @ORM\Column(name="zip_code", type="string", length=10, nullable=true, options={"default"="NULL"})
*/
private $zipCode;
/**
* @var string|null
*
* @ORM\Column(name="city", type="string", length=100, nullable=true, options={"default"="NULL"})
*/
private $city;
/**
* @var string|null
*
* @ORM\Column(name="country", type="string", length=100, nullable=true, options={"default"="NULL"})
*/
private $country;
/**
* @var string|null
*
* @ORM\Column(name="address_coord_y", type="string", length=30, nullable=true, options={"default"="NULL"})
*/
private $addressCoordY;
/**
* @var string|null
*
* @ORM\Column(name="address_coord_x", type="string", length=30, nullable=true, options={"default"="NULL"})
*/
private $addressCoordX;
/**
* @var string|null
*
* @ORM\Column(name="siret", type="string", length=30, nullable=true, options={"default"="NULL"})
*/
private $siret;
/**
* @var string|null
*
* @ORM\Column(name="legal_form", type="string", length=100, nullable=true, options={"default"="NULL"})
*/
private $legalForm;
/**
* @var string|null
*
* @ORM\Column(name="assurance_name", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $assuranceName;
/**
* @var bool|null
*
* @ORM\Column(name="isCoach", type="boolean", nullable=true, options={"default"="NULL"})
*/
private $iscoach;
/**
* @var bool|null
*
* @ORM\Column(name="isPractitioner", type="boolean", nullable=true, options={"default"="NULL"})
*/
private $ispractitioner;
/**
* @var bool|null
*
* @ORM\Column(name="allow_teleconsultation", type="boolean", nullable=true, options={"default"="1"})
*/
private $allowTeleconsultation = true;
/**
* @var bool|null
*
* @ORM\Column(name="allow_office", type="boolean", nullable=true, options={"default"="1"})
*/
private $allowOffice = true;
/**
* @var bool|null
*
* @ORM\Column(name="allow_home_visit", type="boolean", nullable=true)
*/
private $allowHomeVisit = false;
/**
* @var int|null
*
* @ORM\Column(name="nb_days_before_reservation", type="integer", nullable=true, options={"default"="1"})
*/
private $nbDaysBeforeReservation = 1;
/**
* @var int|null
*
* @ORM\Column(name="nb_days_available", type="integer", nullable=true, options={"default"="60"})
*/
private $nbDaysAvailable = 60;
/**
* @var DaySlot|null
*
* @ORM\ManyToOne(targetEntity="DaySlot",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="monday", referencedColumnName="id")
* })
*/
private $monday;
/**
* @var DaySlot|null
*
* @ORM\ManyToOne(targetEntity="DaySlot",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="sunday", referencedColumnName="id")
* })
*/
private $sunday;
/**
* @var DaySlot|null
*
* @ORM\ManyToOne(targetEntity="DaySlot",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="wednesday", referencedColumnName="id")
* })
*/
private $wednesday;
/**
* @var PartnerPage|null
*
* @ORM\ManyToOne(targetEntity="PartnerPage")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="partner_page_id", referencedColumnName="id")
* })
*/
private $partnerPage;
/**
* @var DaySlot|null
*
* @ORM\ManyToOne(targetEntity="DaySlot",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="thursday", referencedColumnName="id")
* })
*/
private $thursday;
/**
* @var DaySlot|null
*
* @ORM\ManyToOne(targetEntity="DaySlot",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="friday", referencedColumnName="id")
* })
*/
private $friday;
/**
* @var DaySlot|null
*
* @ORM\ManyToOne(targetEntity="DaySlot",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="saturday", referencedColumnName="id")
* })
*/
private $saturday;
/**
* @var DaySlot|null
*
* @ORM\ManyToOne(targetEntity="DaySlot",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="tuesday", referencedColumnName="id")
* })
*/
private $tuesday;
/**
* @var Collection
*
* @ORM\ManyToMany(targetEntity="Speciality", inversedBy="partner")
* @ORM\JoinTable(name="partner_has_speciality",
* joinColumns={
* @ORM\JoinColumn(name="partner_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="speciality_id", referencedColumnName="id")
* }
* )
*/
private $speciality = array();
/**
* @var Collection
*
* @ORM\ManyToMany(targetEntity="Need", inversedBy="partner")
* @ORM\JoinTable(name="partner_has_need",
* joinColumns={
* @ORM\JoinColumn(name="partner_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="need_id", referencedColumnName="id")
* }
* )
*/
private $need = array();
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="PartnerHasUser", mappedBy="partner")
*/
private $partnerHasUsers = array();
/**
* @var Account|null
*
* @ORM\OneToOne(targetEntity="Account", mappedBy="partner")
*/
private $account;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="ServiceDelivery", mappedBy="partner")
*/
private $servicesDeliveries = array();
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="PartnerSubscription", mappedBy="partner")
*/
private $subscriptions = array();
/**
* @var string|null
*
* @ORM\Column(name="stripe_account_id", type="string", length=100, nullable=true)
*/
private $stripeAccountId;
/**
* @var bool
*
* @ORM\Column(name="stripe_account_verified", type="boolean", nullable=false)
*/
private $stripeAccountVerified = false;
/**
* @var bool
*
* @ORM\Column(name="stripe_charges_enabled", type="boolean", nullable=false)
*/
private $stripeChargesEnabled = false;
/**
* @var bool
*
* @ORM\Column(name="stripe_payouts_enabled", type="boolean", nullable=false)
*/
private $stripePayoutsEnabled = false;
/**
* @var float|null
*
* @ORM\Column(name="subscription_discount", type="float", nullable=true)
*/
private $subscriptionDiscount;
/**
* @var string|null
*
* @ORM\Column(name="subscription_discount_type", type="string", length=20, nullable=true)
*/
private $subscriptionDiscountType;
/**
* @var int|null
*
* @ORM\Column(name="subscription_discount_duration", type="integer", nullable=true)
*/
private $subscriptionDiscountDuration;
/**
* @var bool
*
* @ORM\Column(name="validated_practitioner", type="boolean", nullable=false)
*/
private $validatedPractitioner = false;
/**
* @var bool
*
* @ORM\Column(name="validated_coach", type="boolean", nullable=false)
*/
private $validatedCoach = false;
/**
* @var string|null
* @Gedmo\Slug(fields={"lastName","firstName"}, updatable=true)
* @ORM\Column(name="slug", type="string", length=255, nullable=true)
*/
private $slug;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="PartnerNote", mappedBy="partner")
*/
private $notes;
/**
* @var string|null
*
* @ORM\Column(name="google_calendar_status", type="string", length=30, nullable=true)
*/
private $googleCalendarStatus;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="PartnerIcal", mappedBy="partner")
*/
private $icals = array();
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="PartnerSecondaryLocation", mappedBy="partner", cascade={"persist"})
*/
private $secondaryLocations = array();
/**
* @var string|null
*
* @ORM\Column(name="partnership_code", type="string", length=255, nullable=true, options={"default"="NULL"})
*/
private $partnershipCode;
/**
* Constructor
*/
public function __construct()
{
$this->speciality = new \Doctrine\Common\Collections\ArrayCollection();
$this->need = new \Doctrine\Common\Collections\ArrayCollection();
$this->partnerHasUsers = new \Doctrine\Common\Collections\ArrayCollection();
$this->subscriptions = new \Doctrine\Common\Collections\ArrayCollection();
$this->icals = new \Doctrine\Common\Collections\ArrayCollection();
$this->secondaryLocations = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return string|null
*/
public function getLastName(): ?string
{
return $this->lastName;
}
/**
* @param string|null $lastName
*/
public function setLastName(?string $lastName): void
{
$this->lastName = $lastName;
}
/**
* @return string|null
*/
public function getFirstName(): ?string
{
return $this->firstName;
}
/**
* @param string|null $firstName
*/
public function setFirstName(?string $firstName): void
{
$this->firstName = $firstName;
}
/**
* @return string|null
*/
public function getPublicEmail(): ?string
{
return $this->publicEmail;
}
/**
* @param string|null $publicEmail
*/
public function setPublicEmail(?string $publicEmail): void
{
$this->publicEmail = $publicEmail;
}
/**
* @return string|null
*/
public function getPhone(): ?string
{
return $this->phone;
}
/**
* @param string|null $phone
*/
public function setPhone(?string $phone): void
{
$this->phone = $phone;
}
/**
* @return string|null
*/
public function getAvatar(): ?string
{
return $this->avatar;
}
/**
* @param string|null $avatar
*/
public function setAvatar(?string $avatar): void
{
$this->avatar = $avatar;
}
/**
* @return string|null
*/
public function getSlogan(): ?string
{
return $this->slogan;
}
/**
* @param string|null $slogan
*/
public function setSlogan(?string $slogan): void
{
$this->slogan = $slogan;
}
/**
* @return string|null
*/
public function getAddressName(): ?string
{
return $this->addressName;
}
/**
* @param string|null $addressName
*/
public function setAddressName(?string $addressName): void
{
$this->addressName = $addressName;
}
/**
* @return string|null
*/
public function getAddress(): ?string
{
return $this->address;
}
/**
* @param string|null $address
*/
public function setAddress(?string $address): void
{
$this->address = $address;
}
/**
* @return string|null
*/
public function getAddress2(): ?string
{
return $this->address2;
}
/**
* @param string|null $address2
*/
public function setAddress2(?string $address2): void
{
$this->address2 = $address2;
}
/**
* @return string|null
*/
public function getZipCode(): ?string
{
return $this->zipCode;
}
/**
* @param string|null $zipCode
*/
public function setZipCode(?string $zipCode): void
{
$this->zipCode = $zipCode;
}
/**
* @return string|null
*/
public function getCity(): ?string
{
return $this->city;
}
/**
* @param string|null $city
*/
public function setCity(?string $city): void
{
$this->city = $city;
}
/**
* @return string|null
*/
public function getCountry(): ?string
{
return $this->country;
}
/**
* @param string|null $country
*/
public function setCountry(?string $country): void
{
$this->country = $country;
}
/**
* @return string|null
*/
public function getAddressCoordY(): ?string
{
return $this->addressCoordY;
}
/**
* @param string|null $addressCoordY
*/
public function setAddressCoordY(?string $addressCoordY): void
{
$this->addressCoordY = $addressCoordY;
}
/**
* @return string|null
*/
public function getAddressCoordX(): ?string
{
return $this->addressCoordX;
}
/**
* @param string|null $addressCoordX
*/
public function setAddressCoordX(?string $addressCoordX): void
{
$this->addressCoordX = $addressCoordX;
}
/**
* @return string|null
*/
public function getSiret(): ?string
{
return $this->siret;
}
/**
* @param string|null $siret
*/
public function setSiret(?string $siret): void
{
$this->siret = $siret;
}
/**
* @return string|null
*/
public function getLegalForm(): ?string
{
return $this->legalForm;
}
/**
* @param string|null $legalForm
*/
public function setLegalForm(?string $legalForm): void
{
$this->legalForm = $legalForm;
}
/**
* @return string|null
*/
public function getAssuranceName(): ?string
{
return $this->assuranceName;
}
/**
* @param string|null $assuranceName
*/
public function setAssuranceName(?string $assuranceName): void
{
$this->assuranceName = $assuranceName;
}
/**
* @return bool|null
*/
public function getIscoach(): ?bool
{
return $this->iscoach;
}
/**
* @param bool|null $iscoach
*/
public function setIscoach(?bool $iscoach): void
{
$this->iscoach = $iscoach;
}
/**
* @return bool|null
*/
public function getIspractitioner(): ?bool
{
return $this->ispractitioner;
}
/**
* @param bool|null $ispractitioner
*/
public function setIspractitioner(?bool $ispractitioner): void
{
$this->ispractitioner = $ispractitioner;
}
/**
* @return bool|null
*/
public function getAllowTeleconsultation(): ?bool
{
return $this->allowTeleconsultation;
}
/**
* @param bool|null $allowTeleconsultation
*/
public function setAllowTeleconsultation(?bool $allowTeleconsultation): void
{
$this->allowTeleconsultation = $allowTeleconsultation;
}
/**
* @return bool|null
*/
public function getAllowOffice(): ?bool
{
return $this->allowOffice;
}
/**
* @param bool|null $allowOffice
*/
public function setAllowOffice(?bool $allowOffice): void
{
$this->allowOffice = $allowOffice;
}
/**
* @return bool|null
*/
public function getAllowHomeVisit(): ?bool
{
return $this->allowHomeVisit;
}
/**
* @param bool|null $allowHomeVisit
*/
public function setAllowHomeVisit(?bool $allowHomeVisit): void
{
$this->allowHomeVisit = $allowHomeVisit;
}
/**
* @return int|null
*/
public function getNbDaysBeforeReservation(): ?int
{
return $this->nbDaysBeforeReservation;
}
/**
* @param int|null $nbDaysBeforeReservation
*/
public function setNbDaysBeforeReservation(?int $nbDaysBeforeReservation): void
{
$this->nbDaysBeforeReservation = $nbDaysBeforeReservation;
}
/**
* @return int|null
*/
public function getNbDaysAvailable(): ?int
{
return $this->nbDaysAvailable;
}
/**
* @param int|null $nbDaysAvailable
*/
public function setNbDaysAvailable(?int $nbDaysAvailable): void
{
$this->nbDaysAvailable = $nbDaysAvailable;
}
/**
* @return DaySlot|null
*/
public function getMonday(): ?DaySlot
{
return $this->monday;
}
/**
* @param DaySlot|null $monday
*/
public function setMonday(?DaySlot $monday): void
{
$this->monday = $monday;
}
/**
* @return DaySlot|null
*/
public function getSunday(): ?DaySlot
{
return $this->sunday;
}
/**
* @param DaySlot|null $sunday
*/
public function setSunday(?DaySlot $sunday): void
{
$this->sunday = $sunday;
}
/**
* @return DaySlot|null
*/
public function getWednesday(): ?DaySlot
{
return $this->wednesday;
}
/**
* @param DaySlot|null $wednesday
*/
public function setWednesday(?DaySlot $wednesday): void
{
$this->wednesday = $wednesday;
}
/**
* @return PartnerPage|null
*/
public function getPartnerPage(): ?PartnerPage
{
return $this->partnerPage;
}
/**
* @param PartnerPage|null $partnerPage
*/
public function setPartnerPage(?PartnerPage $partnerPage): void
{
$this->partnerPage = $partnerPage;
}
/**
* @return DaySlot|null
*/
public function getThursday(): ?DaySlot
{
return $this->thursday;
}
/**
* @param DaySlot|null $thursday
*/
public function setThursday(?DaySlot $thursday): void
{
$this->thursday = $thursday;
}
/**
* @return DaySlot|null
*/
public function getFriday(): ?DaySlot
{
return $this->friday;
}
/**
* @param DaySlot|null $friday
*/
public function setFriday(?DaySlot $friday): void
{
$this->friday = $friday;
}
/**
* @return DaySlot|null
*/
public function getSaturday(): ?DaySlot
{
return $this->saturday;
}
/**
* @param DaySlot|null $saturday
*/
public function setSaturday(?DaySlot $saturday): void
{
$this->saturday = $saturday;
}
/**
* @return DaySlot|null
*/
public function getTuesday(): ?DaySlot
{
return $this->tuesday;
}
/**
* @param DaySlot|null $tuesday
*/
public function setTuesday(?DaySlot $tuesday): void
{
$this->tuesday = $tuesday;
}
/**
* @return Collection
*/
public function getSpeciality()
{
return $this->speciality;
}
/**
* @param Collection $speciality
*/
public function setSpeciality($speciality): void
{
$this->speciality = $speciality;
}
/**
* @return Collection
*/
public function getNeed()
{
return $this->need;
}
/**
* @param Collection $need
*/
public function setNeed($need): void
{
$this->need = $need;
}
/**
* @return Collection
*/
public function getPartnerHasUsers()
{
return $this->partnerHasUsers;
}
/**
* @param Collection $partnerHasUsers
*/
public function setPartnerHasUsers($partnerHasUsers): void
{
$this->partnerHasUsers = $partnerHasUsers;
}
/**
* @return Account|null
*/
public function getAccount(): ?Account
{
return $this->account;
}
/**
* @param Account|null $account
*/
public function setAccount(?Account $account): void
{
$this->account = $account;
}
/**
* @return Collection
*/
public function getServicesDeliveries(): Collection
{
return $this->servicesDeliveries;
}
/**
* @param Collection $servicesDeliveries
*/
public function setServicesDeliveries(Collection $servicesDeliveries): void
{
$this->servicesDeliveries = $servicesDeliveries;
}
/**
* @return Collection
*/
public function getSubscriptions()
{
return $this->subscriptions;
}
/**
* @param Collection $subscriptions
*/
public function setSubscriptions($subscriptions): void
{
$this->subscriptions = $subscriptions;
}
/**
* @return string|null
*/
public function getStripeAccountId(): ?string
{
return $this->stripeAccountId;
}
/**
* @param string|null $stripeAccountId
*/
public function setStripeAccountId(?string $stripeAccountId): void
{
$this->stripeAccountId = $stripeAccountId;
}
/**
* @return bool
*/
public function isStripeAccountVerified(): bool
{
return $this->stripeAccountVerified;
}
/**
* @param bool $stripeAccountVerified
*/
public function setStripeAccountVerified(bool $stripeAccountVerified): void
{
$this->stripeAccountVerified = $stripeAccountVerified;
}
/**
* @return bool
*/
public function isStripeChargesEnabled(): bool
{
return $this->stripeChargesEnabled;
}
/**
* @param bool $stripeChargesEnabled
*/
public function setStripeChargesEnabled(bool $stripeChargesEnabled): void
{
$this->stripeChargesEnabled = $stripeChargesEnabled;
}
/**
* @return bool
*/
public function isStripePayoutsEnabled(): bool
{
return $this->stripePayoutsEnabled;
}
/**
* @param bool $stripePayoutsEnabled
*/
public function setStripePayoutsEnabled(bool $stripePayoutsEnabled): void
{
$this->stripePayoutsEnabled = $stripePayoutsEnabled;
}
/**
* @return float|null
*/
public function getSubscriptionDiscount()
{
return $this->subscriptionDiscount;
}
/**
* @param float|null $subscriptionDiscount
*/
public function setSubscriptionDiscount($subscriptionDiscount): void
{
$this->subscriptionDiscount = $subscriptionDiscount;
}
/**
* @return string|null
*/
public function getSubscriptionDiscountType(): ?string
{
return $this->subscriptionDiscountType;
}
/**
* @param string|null $subscriptionDiscountType
*/
public function setSubscriptionDiscountType(?string $subscriptionDiscountType): void
{
$this->subscriptionDiscountType = $subscriptionDiscountType;
}
/**
* @return int|null
*/
public function getSubscriptionDiscountDuration(): ?int
{
return $this->subscriptionDiscountDuration;
}
/**
* @param int|null $subscriptionDiscountDuration
*/
public function setSubscriptionDiscountDuration(?int $subscriptionDiscountDuration): void
{
$this->subscriptionDiscountDuration = $subscriptionDiscountDuration;
}
/**
* @return bool
*/
public function isValidatedPractitioner(): bool
{
return $this->validatedPractitioner;
}
/**
* @param bool $validatedPractitioner
*/
public function setValidatedPractitioner(bool $validatedPractitioner): void
{
$this->validatedPractitioner = $validatedPractitioner;
}
/**
* @return bool
*/
public function isValidatedCoach(): bool
{
return $this->validatedCoach;
}
/**
* @param bool $validatedCoach
*/
public function setValidatedCoach(bool $validatedCoach): void
{
$this->validatedCoach = $validatedCoach;
}
/**
* @return string|null
*/
public function getSlug(): ?string
{
return $this->slug;
}
/**
* @param string|null $slug
*/
public function setSlug(?string $slug): void
{
$this->slug = $slug;
}
/**
* @return Collection
*/
public function getNotes(): Collection
{
return $this->notes;
}
/**
* @param Collection $notes
*/
public function setNotes(Collection $notes): void
{
$this->notes = $notes;
}
/**
* @return string|null
*/
public function getGoogleCalendarStatus(): ?string
{
return $this->googleCalendarStatus;
}
/**
* @param string|null $googleCalendarStatus
*/
public function setGoogleCalendarStatus(?string $googleCalendarStatus): void
{
$this->googleCalendarStatus = $googleCalendarStatus;
}
/**
* @return Collection
*/
public function getIcals()
{
return $this->icals;
}
/**
* @param Collection $icals
*/
public function setIcals($icals): void
{
$this->icals = $icals;
}
/**
* @return Collection
*/
public function getSecondaryLocations()
{
return $this->secondaryLocations;
}
/**
* @param Collection $secondaryLocations
*/
public function setSecondaryLocations($secondaryLocations): void
{
$this->secondaryLocations = $secondaryLocations;
}
/**
* @return string|null
*/
public function getPartnershipCode(): ?string
{
return $this->partnershipCode;
}
/**
* @param string|null $partnershipCode
*/
public function setPartnershipCode(?string $partnershipCode): void
{
$this->partnershipCode = $partnershipCode;
}
public function getSpecialitiesString(): string
{
$specialities = [];
foreach ($this->getSpeciality() as $speciality) {
$specialities[] = $speciality->getLabel();
}
return implode(', ', $specialities);
}
public function getSpecialitiesJobString(): string
{
$specialities = [];
foreach ($this->getSpeciality() as $speciality) {
$specialities[] = $speciality->getJob();
}
return implode(', ', $specialities);
}
public function getLowestServiceDelivery(): ?ServiceDelivery
{
$serviceDelivery = null;
foreach ($this->getServicesDeliveries() as $sd) {
if ((!$serviceDelivery || $sd->getPrice() < $serviceDelivery->getPrice()) && $sd->getEnabled() && !$sd->getHistoryService() && !$sd->getIsCoaching()) {
$serviceDelivery = $sd;
}
}
return $serviceDelivery;
}
public function getAvailablesServicesDeliveries($onlyCoaching=false, $removeCoachings=false, $removeOnlyFirst=false, $removeOnlySecond=false): array
{
$servicesAvailables = [];
foreach ($this->getServicesDeliveries() as $servicesDelivery) {
if ($servicesDelivery->getEnabled() && !$servicesDelivery->getHistoryService()) {
$goAdd = true;
if ($onlyCoaching && !$servicesDelivery->getIsCoaching()) {
$goAdd = false;
}
if ($removeCoachings && $servicesDelivery->getIsCoaching()) {
$goAdd = false;
}
if ($removeOnlyFirst && $servicesDelivery->getFirstReservationOnly()) {
$goAdd = false;
}
if ($removeOnlySecond && $servicesDelivery->getSecondReservationOnly()) {
$goAdd = false;
}
if ($goAdd) {
$servicesAvailables[] = $servicesDelivery;
}
}
}
usort($servicesAvailables, function($a, $b) {return strcasecmp($a->getLabel(), $b->getLabel());});
return $servicesAvailables;
}
public function getCurrentSubscription(): ?PartnerSubscription
{
$now = new \DateTime('now');
foreach ($this::getSubscriptions() as $sub) {
if (!$sub->getEndDate() || $now < $sub->getEndDate()) {
return $sub;
}
}
return null;
}
public function getLatestSubscription()
{
return $this::getSubscriptions()->last();
}
/**
* @return bool
*/
public function isSubscriptionActive(): bool
{
if ($this->getIspractitioner()) {
return (bool) $this::getCurrentSubscription();
}
return true;
}
public function getIsActiveCoach (): bool
{
if ($this->getAccount() && $this->getAccount()->getEnabled() == false) {
return false;
}
return $this->isValidatedCoach();
}
public function getIsActivePractitioner(): bool
{
if ($this->getAccount() && $this->getAccount()->getEnabled() == false) {
return false;
}
return (bool) $this::getCurrentSubscription() && $this->isStripeAccountVerified() && $this->isValidatedPractitioner();
}
public function getIsActive(): bool
{
if ($this->getIscoach() && !$this->getIsActiveCoach()) {
return false;
}
if ($this->getIspractitioner() && !$this->getIsActivePractitioner()) {
return false;
}
return true;
}
public function getNoteValue()
{
if ($this->getNotes()->isEmpty()) {
return 0.0;
}
$sum = 0.0;
foreach ($this->getNotes() as $note) {
$sum+=$note->getNote();
}
return $sum/$this->getNotes()->count();
}
public function getReviews(): array
{
$reviews = [];
foreach ($this->getNotes() as $note) {
if ($note->getOpinion() && !empty($note->getOpinion())) {
$reviews[] = $note;
}
}
return $reviews;
}
public function countReviews(): int
{
return count($this->getReviews());
}
public function addSecondaryLocation(PartnerSecondaryLocation $secondaryLocation)
{
if ($secondaryLocation->getAddress()) {
if (!$secondaryLocation->getName()) {
$secondaryLocation->setName($secondaryLocation->getAddress());
}
$this->secondaryLocations[] = $secondaryLocation;
$secondaryLocation->setPartner($this);
}
}
public function removeSecondaryLocation(PartnerSecondaryLocation $secondaryLocation)
{
$this->secondaryLocations->removeElement($secondaryLocation);
}
}