• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/rest.php
  • Класс: BitrixTimemanRest
  • Вызов: Rest::closeDay
static function closeDay($query, $n, CRestServer $server)
{
	$query = static::prepareQuery($query);
	$tmUser = static::getUserInstance($query);

	if(isset($query['TIME']))
	{
		$currentInfo = $tmUser->getCurrentInfo();
		$userOffset = $tmUser->getDayStartOffset($currentInfo) + date('Z');

		static::setCurrentTimezoneOffset($userOffset);

		$timeInfo = static::convertTimeFromISO($query['TIME']);

		static::correctTimeOffset($userOffset, $timeInfo);

		if(!static::checkDate($timeInfo, ConvertTimeStamp(MakeTimeStamp($currentInfo['DATE_START'], FORMAT_DATETIME))))
		{
			throw new DateTimeException('Day close date should correspond to the day open date', DateTimeException::ERROR_WRONG_DATETIME);
		}

		$result = $tmUser->CloseDay($timeInfo['TIME'], trim($query['REPORT']));
	}
	else
	{
		$result = $tmUser->CloseDay();
	}

	if(!$result)
	{
		global $APPLICATION;
		$ex = $APPLICATION->GetException();
		if($ex)
		{
			throw new RestException($ex->GetString(), $ex->GetID());
		}
	}
	else
	{
		static::setDayGeoPosition($result['ID'], $query, 'close');

		$currentInfo = $tmUser->GetCurrentInfo();

		$reportData = $tmUser->SetReport('', 0, $currentInfo['ID']);

		$dailyReportFields = array(
			'ENTRY_ID' => $currentInfo['ID'],
			'REPORT_DATE' => $currentInfo['DATE_START'],
			'ACTIVE' => $currentInfo['ACTIVE'],
			'REPORT' => $reportData['REPORT'],
		);

		CTimeManReportDaily::Add($dailyReportFields);
	}

	return static::getStatus($query, $n, $server);
}