Viewing File: /home/ubuntu/vedadeals-backend-base/app/Http/Controllers/Admin/BannerController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use DB, Exception, Setting, Hash, Storage;
use App\Models\{ Banner, Product };
use App\Http\Requests\Admin\Banner\{ BannerPostRequest, BannerGetRequest };
class BannerController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Request $request)
{
$this->middleware('auth:admin');
$this->skip = $request->skip ?: 0;
$this->take = $request->take ?: (Setting::get('admin_take_count') ?: TAKE_COUNT);
}
/**
* @method banners_index()
*
* @uses to list the banners
*
* @created Karthick
*
* @updated
*
* @param
*
* @return to banners index page
*/
public function banners_index(Request $request) {
$base_query = Banner::with(['product'])->orderBy('created_at','DESC');
if($request->filled('search_key')) {
$base_query = $base_query->where(function ($query) use ($request) {
$query->where('title', "LIKE", "%" . $request->search_key . "%");
$query->orWhere('link', "LIKE", "%" . $request->search_key . "%");
});
}
if($request->filled('type')) {
$base_query = $base_query->where('type', $request->type);
}
if($request->filled('status')) {
$base_query = $base_query->where('status', $request->status);
}
$banners = $base_query->paginate($this->take);
return view('admin.banners.index')
->with('page', 'banners')
->with('sub_page', 'banners-view')
->with('banners', $banners);
}
/**
* @method banners_create()
*
* @uses To create a new bannner
*
* @created Karthick
*
* @updated
*
* @param create a new object
*
* @return to create bannner page
*
*/
public function banners_create() {
$banner = new Banner;
$user_products = Product::Available()->get(['id', 'name']);
return view('admin.banners.create')
->with('page', 'banners')
->with('sub_page', 'banners-create')
->with(compact(['banner', 'user_products']));
}
/**
* @method banners_edit()
*
* @uses to edit bannner details based on the banner_id
*
* @created Karthick
*
* @updated
*
* @param object $request - banner_id
*
* @return to edit bannner page
*
*/
public function banners_edit(BannerGetRequest $request) {
try {
$banner = Banner::find($request->banner_id);
$user_products = Product::Available()->get(['id', 'name']);
return view('admin.banners.edit')
->with('page' , 'banners')
->with('sub_page','banners-create')
->with(compact(['banner', 'user_products']));
} catch(Exception $e) {
return redirect()->route('admin.banners.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method banners_save()
*
* @uses to save the bannner details of new/existing object based on banner_id
*
* @created Karthick
*
* @updated
*
* @param object $request - banner_id
*
* @return view bannner page
*
*/
public function banners_save(BannerPostRequest $request) {
try {
DB::begintransaction();
$check = Banner::when(request('banner_id'), function($query){
$query->where('id', '!=', request('banner_id'));
})->where(['type' => BANNER_PRODUCT, 'product_id' => request('product_id')])
->exists();
if($check) {
throw new Exception(tr('banner_already_exists_for_this_product'));
}
if($request->type == BANNER) {
$banner = Banner::updateOrCreate(['id' => $request->banner_id], $request->validated());
if($request->hasFile('picture')) {
$request->banner_id ? Helper::storage_delete_file($banner->picture, BANNER_FILE_PATH) : '';
$banner->picture = Helper::storage_upload_file($request->file('picture'), BANNER_FILE_PATH);
$banner->save();
}
} elseif($request->type == BANNER_PRODUCT) {
$product = Product::find($request->product_id);
$banner = Banner::updateOrCreate(['id' => $request->banner_id],
['type' => $request->type,
'product_id' => $product->id,
'product_unique_id' => $product->unique_id,
'title' => $product->name ? : '',
'description' => $product->description ? : '',
'link' => Setting::get('frontend_url')."product/$product->unique_id",
'picture' => $product->file ? : '',
]);
}
if($banner) {
DB::commit();
$message = $request->banner_id ? tr('banner_updated_success') : tr('banner_created_success');
return redirect(route('admin.banners.view', ['banner_id' => $banner->id ]))->with('flash_success', $message);
}
throw new Exception(tr('banner_save_failed'));
} catch(Exception $e){
DB::rollback();
return back()->withInput()->with('flash_error', $e->getMessage());
}
}
/**
* @method banners_view()
*
* @uses to view the bannner details based on banner_id
*
* @created Karthick
*
* @updated
*
* @param object $request - banner_id
*
* @return View page
*
*/
public function banners_view(BannerGetRequest $request) {
try {
$banner = Banner::find($request->banner_id);
return view('admin.banners.view')
->with('page', 'banners')
->with('sub_page', 'banners-view')
->with('banner',$banner);
} catch (Exception $e) {
return redirect()->route('admin.banners.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method banners_status
*
* @uses to change bannner status as DECLINED/APPROVED based on banner_id
*
* @created Karthick
*
* @updated
*
* @param object $request - banner_id
*
* @return response success/failure message
*
**/
public function banners_status(BannerGetRequest $request) {
try {
DB::beginTransaction();
$banner = Banner::find($request->banner_id);
$result = $banner->update(['status' => $banner->status ? DECLINED : APPROVED]);
if($result) {
DB::commit();
$message = $banner->status ? tr('banner_approve_success') : tr('banner_decline_success');
return back()->with('flash_success', $message);
}
throw new Exception(tr('banner_status_change_failed'));
} catch(Exception $e) {
DB::rollback();
return redirect()->route('admin.banners.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method banners_delete()
*
* @uses to delete the bannner details based on banner_id
*
* @created Karthick
*
* @updated
*
* @param object $request - banner_id
*
* @return response of success/failure details with view page
*
*/
public function banners_delete(BannerGetRequest $request) {
try {
DB::begintransaction();
$banner = Banner::find($request->banner_id);
if($banner->delete()) {
DB::commit();
return redirect()->route('admin.banners.index')->with('flash_success',tr('banner_deleted_success'));
}
throw new Exception(tr('banner_delete_failed'));
} catch(Exception $e){
DB::rollback();
return back()->with('flash_error', $e->getMessage());
}
}
}
Back to Directory
File Manager