- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/lib/service/schedule/scheduleassignmentsservice.php
- Класс: BitrixTimemanServiceSchedulefor
- Вызов: for::findSchedulesForDepartments
public function findSchedulesForDepartments($departmentIds, $exceptScheduleId)
{
if (empty($departmentIds))
{
return [];
}
$departmentsRelationsData = $this->fetchDepartmentRelationsData($departmentIds);
$allDepIds = $this->getAllDepartmentsIds($departmentsRelationsData);
if (empty($allDepIds))
{
return new Result();
}
$schedulesForAllUsers = $this->scheduleProvider
->findSchedulesForAllUsers($exceptScheduleId);
$results = $this->fillCommonSchedulesAssignments($departmentIds, $schedulesForAllUsers);
$scheduleDepartmentsResult = $this->scheduleProvider
->findDepartmentAssignmentsByIds($allDepIds, $exceptScheduleId);
$departmentAssignmentsResult = [];
foreach ($scheduleDepartmentsResult as $item)
{
$departmentAssignmentsResult[$item['DEPARTMENT_ID']][] = $item;
}
$commonSchedulesIds = array_map('intval', array_column($schedulesForAllUsers, 'ID'));
foreach ($departmentsRelationsData as $depId => $departmentsChainData)
{
$results = $this->fillDepartmentsAssignments($departmentsChainData, $departmentAssignmentsResult, $results, $depId, $commonSchedulesIds);
if (!empty($results[$depId]))
{
$results[$depId] = array_values(array_filter(array_unique($results[$depId])));
}
}
return $results;
}