add answer, time, status helpers

This commit is contained in:
iIronside
2021-10-29 17:06:09 +03:00
parent 34c2998844
commit 7b8847e1e1
42 changed files with 2505 additions and 570 deletions

View File

@ -0,0 +1,42 @@
<?php
namespace common\helpers;
use yii\helpers\ArrayHelper;
use Exception;
use yii\helpers\Html;
class AnswerHelper
{
const FLAG_TRUE = 1;
const FLAG_FALSE = 0;
public static function answerFlagsList(): array
{
return [
self::FLAG_TRUE => 'Верен',
self::FLAG_FALSE => 'Ошибочный',
];
}
/**
* @throws Exception
*/
public static function statusLabel($status): string
{
switch ($status) {
case self::FLAG_FALSE:
$class = 'label label-danger';
break;
case self::FLAG_TRUE:
$class = 'label label-success';
break;
default:
$class = 'label label-default';
}
return Html::tag('span', ArrayHelper::getValue(self::answerFlagsList(), $status), [
'class' => $class,
]);
}
}

View File

@ -0,0 +1,50 @@
<?php
namespace common\helpers;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use Exception;
class StatusHelper
{
const STATUS_PASSIVE = 0;
const STATUS_ACTIVE = 1;
public static function statusList() :array
{
return [
self::STATUS_PASSIVE => 'Не используется',
self::STATUS_ACTIVE => 'Активен'
];
}
/**
* @throws Exception
*/
public static function statusName($status): string
{
return ArrayHelper::getValue(self::statusList(), $status);
}
/**
* @throws Exception
*/
public static function statusLabel($status): string
{
switch ($status) {
case self::STATUS_PASSIVE:
$class = 'label label-danger';
break;
case self::STATUS_ACTIVE:
$class = 'label label-success';
break;
default:
$class = 'label label-default';
}
return Html::tag('span', ArrayHelper::getValue(self::statusList(), $status), [
'class' => $class,
]);
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace common\helpers;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
class TimeHelper
{
public static function limitTime($time_limit)
{
if ($time_limit === null)
{
return 'Не ограниченоTEST';
}
return date("H:i:s", mktime(null, null, $time_limit)) . ' (HH:mm:ss)';
// $date
// return Html::tag('span', $date, ['class' => 'label label-primary']);
}
}

View File

@ -2,8 +2,8 @@
namespace common\models;
use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\ActiveQuery;
use yii\db\Expression;
/**
@ -78,9 +78,9 @@ class Answer extends \yii\db\ActiveRecord
}
/**
* @return \yii\db\ActiveQuery
* @return ActiveQuery
*/
public function getQuestion()
public function getQuestion(): ActiveQuery
{
return $this->hasOne(Question::className(), ['id' => 'question_id']);
}
@ -91,32 +91,6 @@ class Answer extends \yii\db\ActiveRecord
return $this->getQuestion()->one()->question_body;
}
public function getStatuses()
{
return [
self::STATUS_ACTIVE => 'Активен',
self::STATUS_PASSIVE => 'Не используется'
];
}
public function getStatusText()
{
return $this->statuses[$this->status];
}
public function getFlags()
{
return [
self::FLAG_TRUE => 'Правильный',
self::FLAG_FALSE => 'Ошибочный',
];
}
public function getFlagText()
{
return $this->flags[$this->status];
}
static function getCorrectAnswersNum($question_id)
{
return Answer::find()
@ -126,7 +100,7 @@ class Answer extends \yii\db\ActiveRecord
->count();
}
public static function getActiveAnswers($question_id)
public static function getActiveAnswers($question_id): array
{
return self::find()->where(['question_id' => $question_id])
->andWhere(['status' => '1'])

View File

@ -2,8 +2,6 @@
namespace common\models;
use phpDocumentor\Reflection\Types\This;
use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;
use yii\helpers\ArrayHelper;
@ -112,38 +110,15 @@ class Questionnaire extends \yii\db\ActiveRecord
return $this->hasMany(UserQuestionnaire::className(), ['questionnaire_id' => 'id']);
}
public function getStatuses()
{
return [
self::STATUS_ACTIVE => 'Активна',
self::STATUS_PASSIVE => 'Не используется'
];
}
public function getStatusText()
{
return $this->statuses[$this->status];
}
public function getCategoryTitle()
{
return $this->getCategory()->one()->title;
}
public function getLimitTime()
{
if ($this->time_limit === null)
{
return 'Не ограничено';
}
return date("H:i:s", mktime(null, null, $this->time_limit));
}
public static function getQuestionnaireByCategory($category_id)
{
$categories = self::find()->where(['category_id' => $category_id, 'status' => '1'])->all();
$catArr = \yii\helpers\ArrayHelper::map($categories, 'id', 'title');
$catArr = ArrayHelper::map($categories, 'id', 'title');
$formattedCatArr = array();
foreach ($catArr as $key => $value){

View File

@ -2,7 +2,6 @@
namespace common\models;
use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;
use yii\helpers\ArrayHelper;
@ -79,22 +78,6 @@ class QuestionnaireCategory extends \yii\db\ActiveRecord
return $this->hasMany(Questionnaire::className(), ['category_id' => 'id']);
}
public function getStatuses()
{
return [
self::STATUS_PASSIVE => 'Не используется',
self::STATUS_ACTIVE => 'Активна'
];
}
/**
* @return string status text label
*/
public function getStatusText()
{
return $this->statuses[$this->status];
}
public function getIdTitlesArr()
{
$categories = self::find()->select(['id', 'title'])->where(['status' => '1'])->all();