1
0
mirror of https://github.com/robonen/metr.git synced 2026-03-20 10:54:41 +00:00

Offer filters and user feedback

This commit is contained in:
2022-05-29 04:21:56 +07:00
parent ff7fe27698
commit fe2e5d316c
13 changed files with 272 additions and 10 deletions

View File

@@ -0,0 +1,69 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\StoreFeedbackRequest;
use App\Http\Requests\UpdateFeedbackRequest;
use App\Http\Resources\FeedbackResource;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
class FeedbackController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(): AnonymousResourceCollection
{
return FeedbackResource::collection(auth()->user()->feedback()->get());
}
/**
* Display the specified resource.
*
* @param int $id
* @return \App\Http\Resources\FeedbackResource
*/
public function show(int $id): FeedbackResource
{
$feedback = auth()->user()->feedback()->findOrFail($id);
return new FeedbackResource($feedback);
}
/**
* Store a newly created resource in storage.
*
* @param \App\Http\Requests\StoreFeedbackRequest $request
* @return \App\Http\Resources\FeedbackResource
*/
public function store(StoreFeedbackRequest $request): FeedbackResource
{
$feedback = auth()->user()->feedback()->create($request->validated());
return new FeedbackResource($feedback);
}
/**
* Update the specified resource in storage.
*
* @param \App\Http\Requests\UpdateFeedbackRequest $request
* @param int $id
* @return void
*/
public function update(UpdateFeedbackRequest $request, int $id): void
{
$feedback = auth()->user()->feedback()->findOrFail($id);
$feedback->update($request->validated());
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return void
*/
public function destroy(int $id): void
{
auth()->user()->feedback()->findOrFail($id)->delete();
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Filters\OfferFilter;
use App\Http\Requests\StoreOfferRequest;
use App\Http\Requests\UpdateOfferRequest;
use App\Http\Resources\OfferResource;
@@ -15,9 +16,9 @@ class OfferController extends Controller
*
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(): AnonymousResourceCollection
public function index(OfferFilter $filters): AnonymousResourceCollection
{
return OfferResource::collection(Offer::all());
return OfferResource::collection(Offer::filter($filters)->get());
}
/**

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Requests;
class StoreFeedbackRequest extends BaseRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
'comment' => ['required', 'string', 'max:2000'],
'rating' => ['required', 'numeric', 'min:1', 'max:5'],
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Requests;
class UpdateFeedbackRequest extends BaseRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
'comment' => ['string', 'max:2000'],
'rating' => ['numeric', 'min:1', 'max:5'],
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class FeedbackResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return parent::toArray($request);
}
}