• Модуль: 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;
}