<?phpnamespace Slivki\Entity;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\PersistentCollection;class GeoLocation extends AbstractGeoLocationBase implements \JsonSerializable{ public const SRID = 4326; public const DEFAULT_LOCATION = [53.911724, 27.557008]; public const TYPE = 0; protected $offers; protected $pickupPointPartnerID; protected $pickupPointBelTransSatDepotID; protected $pickupPointSchedule; protected $giftCertificate; protected $active; protected int $offerId; protected ?string $bepaidCredentials; private ?string $callbackChatId = null; private ?PersistentCollection $additionalDiscounts; protected Collection $beautyMasters; public function __construct() { parent::__construct(); $this->active = true; $this->bepaidCredentials = null; $this->beautyMasters = new ArrayCollection(); } public function getOffers() { return $this->offers; } public function firstOffer(): Offer { return $this->offers->first(); } public function setOffer($offers) { $this->offer = $offers; } public function getPickupPointPartnerID() { return $this->pickupPointPartnerID; } public function setPickupPointPartnerID($pickupPointPartnerID) { $this->pickupPointPartnerID = $pickupPointPartnerID; } public function getPickupPointBelTransSatDepotID() { return $this->pickupPointBelTransSatDepotID; } public function setPickupPointBelTransSatDepotID($pickupPointBelTransSatDepotID) { $this->pickupPointBelTransSatDepotID = $pickupPointBelTransSatDepotID; } public function getPickupPointSchedule() { return $this->pickupPointSchedule; } public function setPickupPointSchedule($pickupPointSchedule) { $this->pickupPointSchedule = $pickupPointSchedule; } public function getPickupPointScheduleParsed() { if (!$this->pickupPointSchedule || !(json_decode($this->pickupPointSchedule))) { return null; } $schedule = []; foreach (json_decode($this->pickupPointSchedule) as $item) { if ($item == '') { $schedule[] = []; } else { $daySchedule = []; foreach (explode(',', $item) as $schedulePeriod) { $schedulePeriodExploded = explode('-', $schedulePeriod); $timeFrom = \DateTime::createFromFormat("H:i", $schedulePeriodExploded[0]); $timeTo = \DateTime::createFromFormat("H:i", $schedulePeriodExploded[1]); while ($timeFrom <= $timeTo) { $daySchedule[] = $timeFrom->format('H:i'); $timeFrom->modify('+30 minutes'); } } $schedule[] = $daySchedule; } } return $schedule; } public function jsonSerialize(): array { $serialized = parent::jsonSerialize(); $serialized['pickupPointPartnerID'] = $this->pickupPointPartnerID; $serialized['pickupPointSchedule'] = $this->pickupPointSchedule; $serialized['pickupPointBelTransSatDepotID'] = $this->pickupPointBelTransSatDepotID; $serialized['bepaidCredentials'] = $this->bepaidCredentials; $serialized['callbackChatId'] = $this->callbackChatId; return $serialized; } public static function fromJSON($data): self { $location = parent::fromJSON($data); if (isset($data->callbackChatId)) { $location->setCallbackChatId($data->callbackChatId); } if (isset($data->pickupPointPartnerID)) { $location->setPickupPointPartnerID($data->pickupPointPartnerID); $location->setPickupPointSchedule($data->pickupPointSchedule); } if (isset($data->pickupPointBelTransSatDepotID)) { $location->setPickupPointBelTransSatDepotID($data->pickupPointBelTransSatDepotID); } if (isset($data->bepaidCredentials)) { $location->setBepaidCredentials($data->bepaidCredentials); } return $location; } public function getGiftCertificate() { return $this->giftCertificate; } public function setGiftCertificate($giftCertificate) { $this->giftCertificate = $giftCertificate; } public function isActive() { return $this->active; } public function setActive($active) { $this->active = $active; } public function getOfferId(): int { return $this->offerId; } public function setOfferId(int $offerId): void { $this->offerId = $offerId; } public function getBepaidCredentials(): ?string { return $this->bepaidCredentials; } public function setBepaidCredentials(?string $bepaidCredentials): void { $this->bepaidCredentials = $bepaidCredentials; } public function getBeautyMasters(): Collection { return $this->beautyMasters; } public function getCallbackChatId(): ?string { return $this->callbackChatId; } public function setCallbackChatId(?string $callbackChatId): void { $this->callbackChatId = $callbackChatId; }}