*/ protected $userAnswers = null; /** * Create a new resource instance. * * @param mixed $resource * @param \Illuminate\Support\Collection<\App\Models\CustomerAnswer> $userAnswers * @return void * @phpcs:disable Squiz.Commenting.FunctionComment.IncorrectTypeHint */ public function __construct(mixed $resource, Collection $userAnswers = null) { //phpcs:enable $this->userAnswers = $userAnswers; 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->userAnswers) { $question['customerAnswers'] = new AnswersResource($answers->filter(function (Answer $answer) { return $this->userAnswers->keyBy('id')->has($answer->id); })); } return $question; }); } }