- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/lib/service/worktime/violation/fixedscheduleviolationbuilder.php
- Класс: BitrixTimemanServiceWorktimeViolationFixedScheduleViolationBuilder
- Вызов: FixedScheduleViolationBuilder::findActiveUsers
protected function findActiveUsers(Schedule $schedule, $checkingEntityCode)
{
/** @var UserCollection $userCollection */
$userCollection = new UserCollection();
if (EntityCodesHelper::getAllUsersCode() === $checkingEntityCode)
{
return $this->scheduleProvider->findActiveUsers($schedule);
}
$users = $this->scheduleProvider->findActiveScheduleUserIds($schedule);
if (EntityCodesHelper::isUser($checkingEntityCode))
{
if (in_array(EntityCodesHelper::getUserId($checkingEntityCode), $users, true))
{
$user = $this->scheduleProvider->getUsersBaseQuery()
->where('ID', EntityCodesHelper::getUserId($checkingEntityCode))
->exec()
->fetchObject();
if ($user)
{
$userCollection->add($user);
}
}
}
elseif (EntityCodesHelper::isDepartment($checkingEntityCode))
{
$includedUsers = [];
$depId = EntityCodesHelper::getDepartmentId($checkingEntityCode);
$departmentsIds = $this->departmentRepository->getAllChildDepartmentsIds($depId);
$departmentsIds[] = [$depId];
foreach ($departmentsIds as $departmentId)
{
$depUserIds = $this->departmentRepository->getUsersOfDepartment($departmentId);
foreach ($userCollection->getAll() as $user)
{
if (in_array($user->getId(), $depUserIds, true))
{
$includedUsers[$user->getId()] = true;
}
}
}
$includedUsers = array_keys($includedUsers);
foreach ($userCollection->getAll() as $user)
{
if (!in_array($user->getId(), $includedUsers, true))
{
$userCollection->removeByPrimary($user->getId());
}
}
}
return $userCollection;
}