brand->questions); } /** * Returns all service questions with user answers for all of them. * * @param \App\Models\Service $service * @param \App\Models\Customer $customer * @return \Illuminate\Http\Resources\Json\ResourceCollection */ public function indexWithResponse(Service $service, Customer $customer): ResourceCollection { // * Make sure we are accessing a customer that belongs to our service. $this->authorize('customerBelongsToService', $customer); $customerAnswers = $customer->getAnswers($service); return new QuestionsResource($service->brand->questions, $customerAnswers); } /** * Returns all service questions that was not answered by a user. * * @param \App\Models\Service $service * @param \App\Models\Customer $customer * @return \Illuminate\Http\Resources\Json\JsonResource */ public function unAnsweredBy(Service $service, Customer $customer): JsonResource { // * Make sure we are accessing a customer that belongs to our service. $this->authorize('customerBelongsToService', $customer); $questions = Question::query()->whereHas('brand', function ($q) use ($service) { $q->where('id', $service->brand->id); })->whereDoesntHave('answers', function ($q) use ($customer) { $q->whereIn('id', Answer::query()->whereHas('customers', function ($q) use ($customer) { $q->where('id', $customer->id); })->pluck('id')); })->with('answers')->get(); return new QuestionsResource($questions); } }