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

Image uploading

This commit is contained in:
2022-06-01 00:23:05 +07:00
parent fe2e5d316c
commit 675b692c81
27 changed files with 451 additions and 15 deletions

View File

@@ -7,6 +7,7 @@ use App\Http\Requests\StoreOfferRequest;
use App\Http\Requests\UpdateOfferRequest;
use App\Http\Resources\OfferResource;
use App\Models\Offer;
use App\Models\OfferPhoto;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
class OfferController extends Controller
@@ -14,11 +15,17 @@ class OfferController extends Controller
/**
* Display a listing of the resource.
*
* @param \App\Filters\OfferFilter $filters
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(OfferFilter $filters): AnonymousResourceCollection
{
return OfferResource::collection(Offer::filter($filters)->get());
return OfferResource::collection(
Offer::filter($filters)
->latest()
->with('images')
->get()
);
}
/**
@@ -29,8 +36,7 @@ class OfferController extends Controller
*/
public function show(int $id): OfferResource
{
$offer = Offer::findOrFail($id);
return new OfferResource($offer);
return new OfferResource(Offer::with('images')->findOrFail($id));
}
/**
@@ -41,7 +47,19 @@ class OfferController extends Controller
*/
public function store(StoreOfferRequest $request): OfferResource
{
return new OfferResource(Offer::create($request->validated()));
$data = $request->validated();
$images = $data['images'];
$offer = auth()->user()->offers()->create($data);
foreach ($images as $image)
{
$offer_photo = OfferPhoto::findOrFail($image['id']);
$offer_photo->offer_id = $offer->id;
$offer_photo->save();
}
return new OfferResource($offer);
}
/**
@@ -68,4 +86,16 @@ class OfferController extends Controller
$offer = Offer::findOrFail($id);
$offer->delete();
}
public function allByUser(): AnonymousResourceCollection
{
return OfferResource::collection(
auth()
->user()
->offers()
->latest()
->with('images')
->get()
);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\UploadImageRequest;
use App\Http\Resources\UploadImageResource;
use App\Models\OfferPhoto;
use Illuminate\Support\Facades\Storage;
class UploadImageController extends Controller
{
/**
* @param \App\Http\Requests\UploadImageRequest $request
* @return \App\Http\Resources\UploadImageResource
*/
public function uploadCatalog(UploadImageRequest $request)
{
$image = $request->file('image')->store('public/offers');
$offer_photo = OfferPhoto::create([
'file' => $image,
]);
return new UploadImageResource($offer_photo);
}
public function deleteCatalog(int $id): void
{
$offer_photo = OfferPhoto::findOrFail($id);
if (Storage::exists($offer_photo->file))
Storage::delete($offer_photo->file);
$offer_photo->delete();
}
}