update api for test
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\models;
|
||||
namespace frontend\modules\api\models\questionnaire;
|
||||
|
||||
|
||||
/**
|
||||
@ -20,7 +20,7 @@ namespace frontend\modules\api\models;
|
||||
* description="Идентификатор вопроса"
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="question_body",
|
||||
* property="answer_body",
|
||||
* type="string",
|
||||
* example="Вопрос №1",
|
||||
* description="Тело вопроса"
|
||||
@ -32,8 +32,8 @@ namespace frontend\modules\api\models;
|
||||
* schema="AnswerExampleArr",
|
||||
* type="array",
|
||||
* example={
|
||||
* {"id": "1", "question_id": 2, "question_body": "Ответ 1",},
|
||||
* {"id": "4", "question_id": 3, "question_body": "Ответ 22",},
|
||||
* {"id": "1", "question_id": 2, "answer_body": "Ответ 1",},
|
||||
* {"id": "4", "question_id": 3, "answer_body": "Ответ 22",},
|
||||
* },
|
||||
* @OA\Items(
|
||||
* type="object",
|
||||
@ -46,7 +46,7 @@ namespace frontend\modules\api\models;
|
||||
* type="integer",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="question_body",
|
||||
* property="answer_body",
|
||||
* type="string",
|
||||
* ),
|
||||
* ),
|
||||
@ -55,5 +55,24 @@ namespace frontend\modules\api\models;
|
||||
*/
|
||||
class Answer extends \common\models\Answer
|
||||
{
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function fields(): array
|
||||
{
|
||||
return [
|
||||
'id',
|
||||
'question_id',
|
||||
'answer_body',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function extraFields(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\models;
|
||||
namespace frontend\modules\api\models\questionnaire;
|
||||
|
||||
use yii\db\ActiveQuery;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -43,16 +44,16 @@ namespace frontend\modules\api\models;
|
||||
* example="00:22:00",
|
||||
* description="Лимит времени на ответ"
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="result_profiles",
|
||||
* ref="#/components/schemas/AnswerExampleArr",
|
||||
* ),
|
||||
*)
|
||||
*
|
||||
*
|
||||
* @OA\Schema(
|
||||
* schema="QuestionExampleArr",
|
||||
* type="array",
|
||||
* example={
|
||||
* {"id": "1", "question_type_id": 2, "question_body": "Вопрос 1", "question_priority": 1, "next_question": 2, "time_limit": "00:10:00",},
|
||||
* {"id": "4", "question_type_id": 3, "question_body": "Вопрос 22", "question_priority": 4, "next_question": 5, "time_limit": "00:10:00",},
|
||||
* },
|
||||
* @OA\Items(
|
||||
* type="object",
|
||||
* @OA\Property(
|
||||
@ -79,11 +80,48 @@ namespace frontend\modules\api\models;
|
||||
* property="time_limit",
|
||||
* type="string",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="result_profiles",
|
||||
* ref="#/components/schemas/AnswerExampleArr",
|
||||
* ),
|
||||
* ),
|
||||
*)
|
||||
*
|
||||
* @property Answer[] $answers
|
||||
*/
|
||||
class Question extends \common\models\Question
|
||||
{
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function fields(): array
|
||||
{
|
||||
return [
|
||||
'id',
|
||||
'question_type_id',
|
||||
'question_body',
|
||||
'question_priority',
|
||||
'next_question',
|
||||
'time_limit',
|
||||
'answers' => function () {
|
||||
return $this->answers;
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function extraFields(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getAnswers(): ActiveQuery
|
||||
{
|
||||
return $this->hasMany(Answer::class, ['question_id' => 'id']);
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\models;
|
||||
namespace frontend\modules\api\models\questionnaire;
|
||||
|
||||
|
||||
/**
|
||||
@ -49,6 +49,30 @@ namespace frontend\modules\api\models;
|
||||
* example="Анкета 1",
|
||||
* description="Название анкеты"
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="description",
|
||||
* type="string",
|
||||
* example="Анкета 1",
|
||||
* description="Описание теста"
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="points_number",
|
||||
* type="int",
|
||||
* example="80",
|
||||
* description="Количество балов"
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="number_questions",
|
||||
* type="int",
|
||||
* example="21",
|
||||
* description="Количество вопросов"
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="time_limit",
|
||||
* type="string",
|
||||
* example="00:50:00",
|
||||
* description="Лимит времени на выполнение"
|
||||
* ),
|
||||
*)
|
||||
*
|
||||
* @OA\Schema(
|
||||
@ -64,8 +88,8 @@ namespace frontend\modules\api\models;
|
||||
* schema="UserQuestionnaireArrExample",
|
||||
* type="array",
|
||||
* example={
|
||||
* {"uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5", "score": 11, "status": 2, "percent_correct_answers": 0.25, "testing_date": "2022-04-03 09:23:45", "questionnaire_title": "Тест 2"},
|
||||
* {"uuid": "gcjs77d9-vtyd-02jh-9467-dc8fbb6s6jdb", "score": 20, "status": 2, "percent_correct_answers": 0.85, "testing_date": "2022-03-17 11:14:22", "questionnaire_title": "Тест 1"},
|
||||
* {"uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5", "score": 11, "status": 2, "percent_correct_answers": 0.25, "testing_date": "2022-04-03 09:23:45", "questionnaire_title": "Тест 2", "description": "Описание", "points_number": "22", "number_questions": "15", "time_limit": "00:50:00"},
|
||||
* {"uuid": "gcjs77d9-vtyd-02jh-9467-dc8fbb6s6jdb", "score": 20, "status": 2, "percent_correct_answers": 0.85, "testing_date": "2022-03-17 11:14:22", "questionnaire_title": "Тест 1", "description": "Описание", "points_number": "80", "number_questions": "35", "time_limit": "01:10:00"},
|
||||
* },
|
||||
* @OA\Items(
|
||||
* type="object",
|
||||
@ -93,6 +117,22 @@ namespace frontend\modules\api\models;
|
||||
* property="questionnaire_title",
|
||||
* type="string",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="description",
|
||||
* type="string",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="points_number",
|
||||
* type="int",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="number_questions",
|
||||
* type="int",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="time_limit",
|
||||
* type="string",
|
||||
* ),
|
||||
* ),
|
||||
*)
|
||||
*
|
||||
@ -108,12 +148,27 @@ class UserQuestionnaire extends \common\models\UserQuestionnaire
|
||||
'status',
|
||||
'percent_correct_answers',
|
||||
'testing_date',
|
||||
'questionnaire_title' => function() {
|
||||
'questionnaire_title' => function () {
|
||||
return $this->questionnaire->title;
|
||||
},
|
||||
'description' => function() {
|
||||
'description' => function () {
|
||||
return $this->questionnaire->description;
|
||||
},
|
||||
'points_number' => function () {
|
||||
return Question::find()
|
||||
->where(['questionnaire_id' => $this->questionnaire_id])
|
||||
->andWhere(['status' => 1])
|
||||
->sum('score');
|
||||
},
|
||||
'number_questions' => function () {
|
||||
return Question::find()
|
||||
->where(['questionnaire_id' => $this->questionnaire_id])
|
||||
->andWhere(['status' => 1])
|
||||
->count();
|
||||
},
|
||||
'time_limit' => function () {
|
||||
return $this->questionnaire->time_limit;
|
||||
}
|
||||
];
|
||||
}
|
||||
|
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\models\questionnaire\forms;
|
||||
|
||||
use frontend\modules\api\models\questionnaire\UserQuestionnaire;
|
||||
use yii\base\Model;
|
||||
|
||||
class QuestionnaireUuidForm extends Model
|
||||
{
|
||||
|
||||
public $uuid;
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['uuid'], 'string'],
|
||||
[['uuid'], 'required'],
|
||||
[['uuid'], 'exist', 'skipOnError' => false, 'targetClass' => UserQuestionnaire::class, 'targetAttribute' => ['uuid' => 'uuid']],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function formName(): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user