File: /home/bdedition/public_html/core/app/Http/Controllers/Admin/AdvertiseController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Constants\Status;
use App\Http\Controllers\Controller;
use App\Models\Advertise;
use Illuminate\Http\Request;
use App\Rules\FileTypeValidate;
class AdvertiseController extends Controller
{
public function index(Request $request)
{
$pageTitle = 'All Advertisement';
$advertisements = Advertise::searchable(['type', 'size'])->orderByDesc('id')->paginate(getPaginate());
return view('admin.advertise.index', compact('pageTitle', 'advertisements'));
}
public function store(Request $request, $id = 0)
{
$request->validate([
'type' => 'required|in:' . Status::BANNER_ADVERTISE . ',' . Status::SCRIPT_ADVERTISE,
'size' => 'required|in:728x90,980x90,980x120,300x250,300x600',
'redirect_url' => 'required_if:type,' . Status::BANNER_ADVERTISE,
'script' => 'required_if:type,' . Status::SCRIPT_ADVERTISE,
]);
if ($request->type == 'image' && $request->hasFile('image')) {
$request->validate([
'image' => [$id ? 'nullable' : 'required', new FileTypeValidate(['jpeg', 'jpg', 'png', 'gif'])],
]);
}
if ($id) {
$advertisement = Advertise::findOrFail($id);
$notification = 'Advertisement updated successfully';
} else {
$advertisement = new Advertise();
$notification = 'Advertisement created successfully';
}
if ($request->hasFile('image')) {
try {
$oldImage = $advertisement->type == Status::BANNER_ADVERTISE ? @$advertisement->content : null;
$content = fileUploader($request->image, getFilePath('advertisement'), $request->size, $oldImage);
} catch (\Exception $exp) {
$notify[] = ['error', 'Couldn\'t uploaded advertisement image'];
return back()->withNotify($notify);
}
}
if ($request->type == Status::SCRIPT_ADVERTISE) {
$content = $request->script;
}
$advertisement->type = $request->type;
$advertisement->size = $request->size;
$advertisement->content = @$content;
$advertisement->redirect_url = $request->type == Status::BANNER_ADVERTISE ? $request->redirect_url : 'N/A';
$advertisement->save();
$notify[] = ['success', $notification];
return back()->withNotify($notify);
}
public function status($id)
{
return Advertise::changeStatus($id);
}
}