• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/service/schedule/scheduleassignmentsservice.php
  • Класс: BitrixTimemanServiceScheduleScheduleAssignmentsService
  • Вызов: ScheduleAssignmentsService::insertUsersAssignment
private function insertUsersAssignment($scheduleId, $userIds, $excluded = false)
{
	$schedule = $scheduleId;
	if (!($schedule instanceof Schedule))
	{
		$schedule = $this->findScheduleWithUsers($scheduleId);
	}
	if (!$schedule)
	{
		return (new ScheduleServiceResult())->addScheduleNotFoundError();
	}

	$insertData = [];
	$updated = [];
	foreach ($userIds as $userId)
	{
		$user = $schedule->obtainUserAssignmentsById($userId);
		if (!$user)
		{
			$newUser = ScheduleUser::create(
				$scheduleId,
				$userId,
				$excluded
			);
			$insertData[] = $newUser;
			$schedule->addToUserAssignments($newUser);
		}
		else
		{
			if ($excluded && $user->isIncluded())
			{
				$updated[] = $userId;
				$user->setIsExcluded();
			}
			elseif (!$excluded && $user->isExcluded())
			{
				$updated[] = $userId;
				$user->setIsIncluded();
			}
		}
	}

	$this->safeRun($this->scheduleProvider->addBatchUsers($insertData));

	$this->safeRun($this->scheduleProvider->updateBatchUsers($scheduleId, $updated, $excluded ? ScheduleUserTable::EXCLUDED : ScheduleUserTable::INCLUDED));

	return $this->buildResultWithSchedule($schedule);
}