ldc-crm/app/Http/Resources/Api/V2/QuestionsResource.php
Alexis Gousseau 303834bbca
Crm V4
- Make all tests pass Client (V4),CRMV2,CRMV4
- Simplify client submodule path
- Move App_url to .env.testing
2023-10-06 16:37:29 +02:00

58 lines
2 KiB
PHP

<?php
namespace App\Http\Resources\Api\V2;
use App\Models\Answer;
use App\Models\Question;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection as JsonResourceCollection;
use Illuminate\Support\Collection;
class QuestionsResource extends JsonResourceCollection
{
/** @var \Illuminate\Support\Collection<\App\Models\CustomerAnswer> */
protected $userAnwsers = null;
/**
* Create a new resource instance.
*
* @param mixed $resource
* @param \Illuminate\Support\Collection<\App\Models\CustomerAnswer> $userAnwsers
* @return void
* @phpcs:disable Squiz.Commenting.FunctionComment.IncorrectTypeHint
*/
public function __construct(mixed $resource, Collection $userAnwsers = null)
{
//phpcs:enable
$this->userAnwsers = $userAnwsers;
parent::__construct($resource);
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Support\Collection
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass
*/
public function toArray(Request $request): \Illuminate\Support\Collection
{
//phpcs:enable
return $this->collection->map(function (Question $question) {
/** @var \Illuminate\Support\Collection */
$answers = $question->answers;
$question = [
'id' => $question->id,
'type' => $question->type->value(),
'question' => $question->question,
'answers' => new AnswersResource($answers)
];
if ($this->userAnwsers) {
$question['customerAnswers'] = new AnswersResource($answers->filter(function (Answer $answer) {
return $this->userAnwsers->keyBy('id')->has($answer->id);
}));
}
return $question;
});
}
}