• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/integration/timeman/worktime.php
  • Класс: BitrixIntranetIntegrationTimemanWorktime
  • Вызов: Worktime::getTMDayDataFromDB
static function getTMDayDataFromDB()
{
	if (!Loader::includeModule("timeman"))
	{
		return;
	}

	$openedDayCount = 0;
	$closedDayCount = 0;
	$currentDate = new Date;
	$currentDate = $currentDate->getTimestamp();
	$newValue = [
		"date" => $currentDate,
		"tm_days" => []
	];

	$worktimeRepository = DependencyManager::getInstance()->getWorktimeRepository();

	$currentDate = new Date;
	$filter = Query::filter()->where('RECORDED_START_TIMESTAMP', '>=', $currentDate->getTimestamp());

	$records = $worktimeRepository->findAll(['*'], $filter);

	foreach ($records as $record)
	{
		$recordManager = DependencyManager::getInstance()->buildWorktimeRecordManager($record, $record->obtainSchedule(), $record->obtainShift());
		if ($record->getCurrentStatus() === 'OPENED' && !$recordManager->isRecordExpired())
		{
			$openedDayCount++;
			$newValue["tm_days"][$record->getUserId()] = "O";
		}
		elseif ($record->getCurrentStatus() === 'CLOSED')
		{
			$closedDayCount++;
			if (!array_key_exists($record->getUserId(), $newValue["tm_days"]))
			{
				$newValue["tm_days"][$record->getUserId()] = "C";
			}
		}
	}

	Option::set("intranet", "ustat_online_timeman", serialize($newValue));

	$res = [
		"OPENED" => $openedDayCount,
		"CLOSED" => $closedDayCount
	];

	return $res;
}