/
3vweb
/
testTask
Обзор
Документация
Войти
/
3vweb
/
testTask
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
local/classes/CarsFree.php
59 строк
2 KB
ubuntu
Решение к задаче (финальная)
15 янв 2026, 12:36
15 янв 2026, 12:36
38ff337
Код
Авторство
О чём код?
<?php namespace Local\Classes; use Bitrix\Main\Type\DateTime; use Local\Classes\Entity\Hl\CarHistoryTable; use Local\Classes\Entity\Hl\CarsTable; use Local\Classes\Entity\Hl\StaffTable; use \Bitrix\Main\ORM\Query; use Bitrix\Main\Entity; class CarsFree { private ?int $staffId; private ?DateTime $dateStart; private ?DateTime $dateFinish; public function __construct(int $staffId, DateTime $dateStart, DateTime $dateFinish) { $this->staffId = $staffId; $this->dateStart = $dateStart; $this->dateFinish = $dateFinish; //$this->dateStart = new DateTime('2026-01-14 22:20:00', 'Y-m-d H:i:s'); //$this->dateFinish = new DateTime('2026-01-14 23:10:00', 'Y-m-d H:i:s'); } public function getList(): array { $list = StaffTable::getList([ 'select' => [ 'CAR_CLASS_ID' => 'USER_POST.USER_POST_CAR_CLASS.UF_USER_CAR_CLASS_ID' ], 'filter' => ['=ID' => $this->staffId], ])->fetchAll(); if ($list) { $carClass = array_column($list, 'CAR_CLASS_ID'); $cars = CarsTable::getList([ 'select' => ['model' => 'UF_NAME', 'driver' => 'UF_DRIVER_NAME', 'comfort' => 'CAR_CLASS.UF_NAME'], 'filter' => Query\Query::filter() ->whereIn('UF_CAR_CLASS_ID', $carClass) ->whereNull('history.ID'), 'runtime' => [ new Entity\ReferenceField( 'history', CarHistoryTable::class, Query\Join::on('this.ID', 'ref.UF_CARS_ID') ->where( Query\Query::filter() ->logic('or') ->whereBetween('ref.UF_DATE_START', $this->dateStart, $this->dateFinish) ->whereBetween('ref.UF_DATE_FINISH', $this->dateStart, $this->dateFinish) ) ) ] ]); $list = $cars->fetchAll(); } return $list; } }