store-manage/app/Admin/Services/Train/ExaminationService.php

55 lines
1.8 KiB
PHP

<?php
namespace App\Admin\Services\Train;
use App\Admin\Filters\TrainExaminationFilter;
use App\Models\Train\{Examination, Question};
use App\Admin\Services\BaseService;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\{Validator, Storage};
use App\Enums\ExamStatus;
class ExaminationService extends BaseService
{
protected array $withRelationships = [];
protected string $modelName = Examination::class;
protected string $modelFilterName = TrainExaminationFilter::class;
public function resloveData($data, $model = null)
{
if (isset($data['questions']) && $data['questions']) {
$totalQuestions = 0;
$totalScore = 0;
$questions = [];
$ids = array_column($data['questions'], 'question_id');
$questionList = Question::whereIn('id', $ids)->get();
foreach ($data['questions'] as $question) {
$model = $questionList->firstWhere('id', $question['question_id']);
if ($model) {
// title: 题目, cate: 类型, options: 选项, score: 分值
$question['title'] = $model->title;
$question['cate'] = $model->cate;
$question['options'] = $model->options;
array_push($questions, $question);
$totalQuestions++;
$totalScore+=$question['score'];
}
}
$data['questions'] = $questions;
$data['total_questions'] = $totalQuestions;
$data['total_score'] = $totalScore;
}
return $data;
}
public function publish(Examination $examination)
{
if ($examination->exam_status == ExamStatus::Published) {
return $this->setError('已经发布了');
}
}
}