Files
exchange-2.0/app/Http/Resources/QuestionResource.php
T
2024-12-02 23:06:44 +08:00

72 lines
2.4 KiB
PHP

<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use App\Models\QAQuestions;
use App\Models\QAAnswerOptions;
use App\Models\QAUserAnswerSelected;
class QuestionResource extends JsonResource
{
/** @var integer */
private $userId;
/** @var QAQuestions*/
private $question;
/** @var bool */
private $isPrevious;
/** @var integer */
private $isNoGoingBack;
/** @var integer */
private $previousAnswer;
public function __construct($question, $userId, $isPrevious = false, $isNoGoingBack = null, $previousAnswer = null) {
$this->question = $question;
$this->userId = $userId;
$this->isPrevious = $isPrevious;
$this->isNoGoingBack = $isNoGoingBack;
$this->previousAnswer = $previousAnswer;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
if($this->question){
$q = (object)$this->question;
return [
'id' => $q->id,
'question_number' => $q->question_number,
'question_title' => $q->question_title,
'question_description' => $q->question_description,
'question_type' => $q->question_type,
'question_answers' => AnswerOptionsResource::collection(QAAnswerOptions::where('question_number', $q->question_number)->where('questionnaire_set_id', $q->questionnaire_set_id)->orderBy('order', 'ASC')->get()),
'questionnaire_set_id' => $q->questionnaire_set_id,
// 'questionnaire' => new QuestionnaireSetsResource($q->questionnaire),
// 'questionnaire_answers' => $q->is_end ? QuestionnaireAnswersResource::collection(QAUserAnswerSelected::where('user_id', $this->userId)->get()) : null,
'next_nested_question' => $q->next_nested_question,
'next_main_question' => $q->next_main_question,
'is_start' => $q->is_start,
'is_end' => $q->is_end,
'end_text' => $q->end_text,
'order' => $q->order,
'answer' => $this->previousAnswer,
'url' => $q->url,
'is_no_going_back' => $this->isNoGoingBack,
'is_previous' => $this->isPrevious,
];
}
else{
return [];
}
}
}