• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/controller/worktime.php
  • Класс: BitrixTimemanControllerWorktime
  • Вызов: Worktime::changeRecordAction
public function changeRecordAction()
{
	$worktimeForm = WorktimeRecordForm::createWithEventForm(WorktimeEventTable::EVENT_TYPE_EDIT_WORKTIME);
	$worktimeForm->load($this->getRequest());

	if ($worktimeForm->validate())
	{
		$workTimeRepository = new WorktimeRepository();

		$record = $workTimeRepository->findById($worktimeForm->id);

		if ($record)
		{
			$worktimeForm->editedBy = $this->getCurrentUser()->getId();

			$record->updateByForm($worktimeForm);

			$result = $workTimeRepository->save($record);
			if (!$result->isSuccess())
			{
				$this->addErrors($result->getErrors());

				return [];
			}

			$workTimeRepository->save(
				WorktimeEvent::create(
					WorktimeEventTable::EVENT_TYPE_STOP_WITH_ANOTHER_TIME,
					$record->getUserId(),
					$record->getId(),
					null,
					Loc::getMessage('TIMEMAN_EXPIRED_REPORT_MESSAGE'),
					$worktimeForm->device
				)
			);
		}

		$actualRecord = WorktimeRecordTable::query()
			->addSelect('*')
			->where('ID', $record->getId())
			->exec()
			->fetchObject()
		;

		$result = new WorktimeServiceResult();
		$result->setWorktimeRecord($actualRecord);
		if (WorktimeServiceResult::isSuccessResult($result))
		{
			return $this->makeAjaxResult($result, $worktimeForm, $record);
		}

		$this->addErrors($result->getErrors());

		return [];
	}

	$this->addError($worktimeForm->getFirstError());

	return [];
}