saveAssessment(); $id = Factory::getApplication()->getInput()->post->getInt('id'); $this->setRedirect( Route::_('index.php?option=com_testquestions&view=result&id=' . $id, false), Text::_('COM_TESTQUESTIONS_RESULT_SAVED') ); } public function save2close(): void { $this->saveAssessment(); $this->setRedirect( Route::_('index.php?option=com_testquestions&view=results', false), Text::_('COM_TESTQUESTIONS_RESULT_SAVED') ); } public function ai(): void { if (!Session::checkToken()) { throw new \RuntimeException(Text::_('JINVALID_TOKEN'), 403); } $input = Factory::getApplication()->getInput(); $id = $input->post->getInt('id'); $questionId = $input->post->getInt('ai_question_id'); $message = Text::_('COM_TESTQUESTIONS_AI_RESULT'); $type = 'message'; try { $this->getModel('Result')->evaluateWithAi($id, $questionId); } catch (\Throwable $error) { $errorMessage = $error->getMessage(); $message = str_starts_with($errorMessage, 'AI_KEY_EMPTY|') ? 'Diagnostyka konfiguracji AI (1.42.8): ' . substr($errorMessage, strlen('AI_KEY_EMPTY|')) : ($errorMessage === 'AI_NOT_CONFIGURED' ? Text::_('COM_TESTQUESTIONS_AI_NOT_CONFIGURED') : Text::sprintf('COM_TESTQUESTIONS_AI_ERROR', $errorMessage)); $type = 'error'; } $this->setRedirect( Route::_('index.php?option=com_testquestions&view=result&id=' . $id, false), $message, $type ); } public function aiAll(): void { if (!Session::checkToken()) { throw new \RuntimeException(Text::_('JINVALID_TOKEN'), 403); } $input = Factory::getApplication()->getInput(); $id = $input->post->getInt('id'); $message = ''; $type = 'message'; try { $summary = $this->getModel('Result')->evaluateAllWithAi($id); if ($summary['failed'] > 0) { $message = Text::sprintf( 'COM_TESTQUESTIONS_AI_BULK_PARTIAL', $summary['evaluated'], $summary['failed'], $summary['first_error'] ); $type = 'warning'; } else { $message = Text::sprintf('COM_TESTQUESTIONS_AI_BULK_DONE', $summary['evaluated']); } } catch (\Throwable $error) { $errorMessage = $error->getMessage(); $message = $errorMessage === 'AI_NO_OPEN_QUESTIONS' ? Text::_('COM_TESTQUESTIONS_AI_NO_OPEN_QUESTIONS') : ($errorMessage === 'AI_NOT_CONFIGURED' ? Text::_('COM_TESTQUESTIONS_AI_NOT_CONFIGURED') : Text::sprintf('COM_TESTQUESTIONS_AI_ERROR', $errorMessage)); $type = 'error'; } $this->setRedirect( Route::_('index.php?option=com_testquestions&view=result&id=' . $id, false), $message, $type ); } private function saveAssessment(): void { if (!Session::checkToken()) { throw new \RuntimeException(Text::_('JINVALID_TOKEN'), 403); } $input = Factory::getApplication()->getInput(); $id = $input->post->getInt('id'); $points = (array) $input->post->get('awarded_points', [], 'array'); $comments = (array) $input->post->get('comments', [], 'array'); $model = $this->getModel('Result'); if (!$model->saveAssessment($id, $points, $comments)) { throw new \RuntimeException(Text::_('COM_TESTQUESTIONS_RESULT_NOT_FOUND')); } } }