Files
kupshop/class/deliveries/class.OsobniOdber.php
2025-08-02 16:30:27 +02:00

88 lines
2.6 KiB
PHP

<?php
use KupShop\KupShopBundle\Util\DateUtil;
class OsobniOdber extends Delivery
{
public static $type = Delivery::TYPE_IN_PERSON;
public static $className = 'Osobní odběr';
protected $adminWindowTemplate = 'delivery/deliveryOpeningHours.tpl';
protected $zbozi_delivery_id = 'VLASTNI_VYDEJNI_MISTA';
public $defaultIcon = '../../common/static/deliveries/osobni-odber.svg';
public function processAdminWindowData($data)
{
if (!empty($data['opening_hours'])) {
$dataPresent = false;
foreach ($data['opening_hours'] as &$time) {
if (!empty($time[0]) && !empty($time[1])) {
$time0 = DateTime::createFromFormat('H:i', $time[0]);
$time1 = DateTime::createFromFormat('H:i', $time[1]);
if (!$time0 || !$time1 || $time0 >= $time1) {
$time[0] = null;
$time[1] = null;
} else {
$dataPresent = true;
}
} else {
$time[0] = null;
$time[1] = null;
}
}
if (!$dataPresent) {
unset($data['opening_hours']);
}
}
return $data;
}
public function isWorkday($date, ?array $countries = null)
{
if (empty($this->custom_data['opening_hours'])) {
return parent::isWorkday($date);
}
static $holidays = null;
if (is_null($holidays)) {
$holidays = Yasumi\Yasumi::create('CzechRepublic', $date->format('Y'));
}
if ($holidays->isHoliday($date)) {
return false;
}
if (!empty($this->custom_data['opening_hours'][$date->format('N')][1])) {
return true;
}
return false;
}
public function isOpen(): bool
{
$is_open = false;
if (!empty($this->custom_data['opening_hours'])) {
$result = DateUtil::isOpen($this->custom_data['opening_hours']);
$this->is_open = $result['is_open_today'];
$is_open = $result['is_open'];
}
return $is_open;
}
public function createFromArray($row)
{
parent::createFromArray($row);
if (!$this->time_hours && !empty($this->custom_data)) {
$dayofweek = (new DateTime())->format('N');
if (isset($this->custom_data['opening_hours'][$dayofweek][1])) {
$this->time_hours = $this->custom_data['opening_hours'][$dayofweek][1];
}
}
}
}