154 lines
4.2 KiB
PHP
Executable File
154 lines
4.2 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\Admin\app\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Banner;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Support\Str;
|
|
use Modules\Admin\app\Http\Requests\BannerRequest;
|
|
|
|
class BannerController extends Controller
|
|
{
|
|
public function all(Request $request)
|
|
{
|
|
$package = new Banner;
|
|
|
|
return response()->json([
|
|
'data' => $package->get(),
|
|
'status' => true,
|
|
]);
|
|
}
|
|
|
|
public function create(BannerRequest $request)
|
|
{
|
|
|
|
$banner = new Banner;
|
|
|
|
if ($request->has('title')) {
|
|
$banner->title = $request->get('title');
|
|
}
|
|
if ($request->has('link')) {
|
|
$banner->link = $request->get('link');
|
|
}
|
|
if ($request->has('is_active')) {
|
|
$banner->is_active = in_array(
|
|
needle: $request->get('is_active'),
|
|
haystack: ['false', '0']
|
|
) ? 0 : 1;
|
|
}
|
|
$banner->save();
|
|
|
|
if ($request->hasFile('image')) {
|
|
$file = $request->file('image');
|
|
$filename = $banner->id . '/' . Str::random(20) . '.' . $file->getClientOriginalExtension();
|
|
$path = Banner::STORAGE . "/$filename";
|
|
|
|
Storage::disk('public')->put(
|
|
path: $path,
|
|
contents: $file->get()
|
|
);
|
|
|
|
$banner->image = $path;
|
|
$banner->save();
|
|
}
|
|
|
|
return response()->json([
|
|
'data' => $banner,
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
public function update(BannerRequest $request)
|
|
{
|
|
$id = $request->get('id');
|
|
|
|
$banner = Banner::find($id);
|
|
|
|
if ($request->has('title')) {
|
|
$banner->title = $request->get('title');
|
|
}
|
|
if ($request->has('link')) {
|
|
$banner->link = $request->get('link');
|
|
}
|
|
if ($request->has('is_active')) {
|
|
$banner->is_active = in_array(
|
|
needle: $request->get('is_active'),
|
|
haystack: ['false', '0']
|
|
) ? 0 : 1;
|
|
}
|
|
$banner->save();
|
|
|
|
if ($request->hasFile('image')) {
|
|
$file = $request->file('image');
|
|
$filename = $banner->id . '/' . Str::random(20) . '.' . $file->getClientOriginalExtension();
|
|
$path = Banner::STORAGE . "/$filename";
|
|
|
|
// delete old file
|
|
if (Storage::disk('public')->exists($banner->getRawOriginal('image'))) {
|
|
Storage::disk('public')->delete($banner->getRawOriginal('image'));
|
|
}
|
|
// put a new file
|
|
Storage::disk('public')->put(
|
|
path: $path,
|
|
contents: $file->get()
|
|
);
|
|
$banner->image = $path;
|
|
$banner->save();
|
|
}
|
|
|
|
return response()->json([
|
|
'data' => $banner,
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
public function delete(BannerRequest $request)
|
|
{
|
|
$id = $request->get('id');
|
|
|
|
Banner::destroy($id);
|
|
return response()->json([
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
// Delete multiple packages
|
|
public function deletes(BannerRequest $request)
|
|
{
|
|
$banners = $request->get('banners');
|
|
$ids = collect($banners)->pluck('id');
|
|
Banner::whereIn('id', $ids)->delete();
|
|
|
|
return response()->json([
|
|
'data' => $ids,
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
// Update multiple banners
|
|
public function updates(BannerRequest $request)
|
|
{
|
|
$banners = $request->get('banners');
|
|
$ids = collect($banners)->pluck('id');
|
|
|
|
foreach ($banners as $bannersRequest) {
|
|
// convert to object|array to array
|
|
$bannersRequest = collect($bannersRequest)->toArray();
|
|
// handle array
|
|
$package = Package::find($bannersRequest['id']);
|
|
if ($package) {
|
|
// exclude id field
|
|
unset($package['id']);
|
|
$package->update($bannersRequest);
|
|
}
|
|
}
|
|
|
|
return response()->json([
|
|
'data' => Package::whereIn('id', $ids)->get(),
|
|
'status' => true
|
|
]);
|
|
}
|
|
}
|