Viewing file: BannerController.php (16.68 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Models\Banner; use App\Models\BannerImage; use App\Models\Setting; use App\Traits\CustomFileTrait; use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Support\Facades\File; use Illuminate\Support\Str;
class BannerController extends Controller { use CustomFileTrait; protected $path = '';
public function __construct() { $this->path = public_path(config('constant.file_path.banner')); }
public function index(Request $request) { $name = $request->get('name', '');
$records = Banner::select('id','name','status')
->when($name != '', function($q) use($name) { $q->where('name','like',"%$name%"); })->paginate($this->defaultPaginate); return view('admin.banner.index',['records' => $records]); }
public function add() { return view('admin.banner.add',[]); }
public function store(Request $request) {
$this->validate($request, [ 'name' => ['required', 'string', 'max:255'], // 'image' => ['required','mimes:jpeg,jpg,png'], ]);
$this->createDirectory($this->path); $banner = new Banner($request->only('name','status')); $banner->save(); $bannerArray = []; foreach ($request->title as $key => $value ) { $image = null; if($request->image[$key]) { $image = $request->image[$key]; }
$imageName = $this->saveCustomFileAndGetImageName($image,$this->path); $bannerArray[] = [ 'banner_id' => $banner->id, 'title' => $request->title[$key], 'link' => $request->link[$key], 'sort_order' => $request->sort_order[$key], 'image' => $imageName, ]; } BannerImage::insert($bannerArray);
$getHomepageSlider = Banner::with('images:image,link,sort_order,banner_id,title,description,text_color_code') ->select('id', 'name', 'status') ->whereHas('images', function ($q) { $q->orderBy('sort_order', 'ASC'); })->where('status', '1')->whereIn('name',['WebSlider','web-homepage-sub-banners']) ->get();
$val = json_encode($getHomepageSlider); $filename = base_path().'/storage/app/webhomepagesliderarr.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
$threecolumnbanners = Banner::with('images:image,sort_order,banner_id,link,title,description,text_color_code')->select('id','name','status') ->whereHas('images',function($q){ $q->orderBy('sort_order','ASC'); })->where('status','1') ->where('name','web-three-column-banner') ->first();
$twocolumnbanners = Banner::with('images:image,sort_order,banner_id,link,title,description,text_color_code') ->select('id','name','status') ->whereHas('images',function($q){ $q->orderBy('sort_order','ASC'); })->where('status','1') ->where('name','web-two-column-banner') ->first();
$val = json_encode($threecolumnbanners); $filename = base_path().'/storage/app/homepagethreecolumnbannersArray.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
$val = json_encode($twocolumnbanners); $filename = base_path().'/storage/app/homepagetwocolumnbannersArray.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
//app homepage slider $getAppHomepageSlider = Banner::with('images:image,link,sort_order,banner_id')->select('id','name','status') ->whereHas('images',function($q){ $q->orderBy('sort_order','ASC'); })->where('status','1')->where('name','Application Home Page Slider')->first();
$val = json_encode($getAppHomepageSlider); $filename = base_path().'/storage/app/apphomepageSlider.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
//app homepage banenr $getAppHomepageBanner = Banner::with('images:image,link,sort_order,banner_id')->select('id','name','status') ->whereHas('images',function($q){ $q->orderBy('sort_order','ASC'); })->where('status','1')->where('name','Application Banners')->first();
$val = json_encode($getAppHomepageBanner); $filename = base_path().'/storage/app/appbanner.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
return redirect(route('banner'))->with('success','Banner Created Successfully'); }
public function edit($id) {
return view('admin.banner.edit',[ 'data' => Banner::with('images')->findOrFail($id), ]); }
public function update(Request $request,$id) {
$this->validate($request, [ 'name' => ['required', 'string', 'max:255'], ]); $banner = Banner::findOrFail($id); $banner->fill($request->only('name','status'))->save(); $bannerImageIds = []; $bannerArray = []; foreach ($request->title as $key => $value ) { $image = null;
if (isset($request->ids[$key])) { $bannerImage = BannerImage::whereId($request->ids[$key])->first(); $bannerImageIds[] = $request->ids[$key]; if(isset($request->image[$key])) { $image = $request->image[$key]; $this->removeOldImage($bannerImage->image,$this->path); $bannerImage->image = $this->saveCustomFileAndGetImageName($image,$this->path);
} $bannerImage->title = $request->title[$key]; $bannerImage->link = $request->link[$key]; $bannerImage->sort_order = $request->sort_order[$key]; $bannerImage->save(); } else { $image = $request->image[$key]; $imageName = $this->saveCustomFileAndGetImageName($image,$this->path); $bannerArray[] = [ 'banner_id' => $banner->id, 'title' => $request->title[$key], 'link' => $request->link[$key], 'sort_order' => $request->sort_order[$key], 'image' => $imageName, ]; } }
$oldBannerImagesData = BannerImage::where('banner_id',$id)->get(); $oldBannerIds = $oldBannerImagesData->pluck('id')->toArray(); $deletedBannerIds = array_diff($oldBannerIds,$bannerImageIds); $oldBannerImages = $oldBannerImagesData->pluck('image','id')->toArray();
// Remove deleted Images foreach($deletedBannerIds as $key => $value) { $this->removeOldImage($oldBannerImages[$value],$this->path); }
BannerImage::insert($bannerArray); BannerImage::whereIn('id',$deletedBannerIds)->delete();
$getHomepageSlider = Banner::with('images:image,link,sort_order,banner_id,title,description,text_color_code') ->select('id', 'name', 'status') ->whereHas('images', function ($q) { $q->orderBy('sort_order', 'ASC'); })->where('status', '1')->whereIn('name',['WebSlider','web-homepage-sub-banners']) ->get();
$val = json_encode($getHomepageSlider); $filename = base_path().'/storage/app/webhomepagesliderarr.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
$threecolumnbanners = Banner::with('images:image,sort_order,banner_id,link,title,description,text_color_code')->select('id','name','status') ->whereHas('images',function($q){ $q->orderBy('sort_order','ASC'); })->where('status','1') ->where('name','web-three-column-banner') ->first();
$twocolumnbanners = Banner::with('images:image,sort_order,banner_id,link,title,description,text_color_code') ->select('id','name','status') ->whereHas('images',function($q){ $q->orderBy('sort_order','ASC'); })->where('status','1') ->where('name','web-two-column-banner') ->first();
$val = json_encode($threecolumnbanners); $filename = base_path().'/storage/app/homepagethreecolumnbannersArray.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
$val = json_encode($twocolumnbanners); $filename = base_path().'/storage/app/homepagetwocolumnbannersArray.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
//app homepage slider $getAppHomepageSlider = Banner::with('images:image,link,sort_order,banner_id')->select('id','name','status') ->whereHas('images',function($q){ $q->orderBy('sort_order','ASC'); })->where('status','1')->where('name','Application Home Page Slider')->first();
$val = json_encode($getAppHomepageSlider); $filename = base_path().'/storage/app/apphomepageSlider.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
//app homepage banenr $getAppHomepageBanner = Banner::with('images:image,link,sort_order,banner_id')->select('id','name','status') ->whereHas('images',function($q){ $q->orderBy('sort_order','ASC'); })->where('status','1')->where('name','Application Banners')->first();
$val = json_encode($getAppHomepageBanner); $filename = base_path().'/storage/app/appbanner.json'; $fp=fopen($filename,"w"); fwrite($fp,$val); fclose($fp);
return redirect(route('banner'))->with('success','Banner Updated Successfully'); }
public function delete($id) { if(! $data = Banner::whereId($id)->first()) { return redirect()->back()->with('error', 'Something went wrong'); }
$images = $data->images()->pluck('image'); foreach($images as $key => $value) { $this->removeOldImage($value,$this->path); } Banner::where('id',$id)->delete(); BannerImage::where('banner_id',$id)->delete();
return redirect(route('banner'))->with('success', 'Banner Deleted Successfully'); }
public function promotionalBanner(){ $popular_banner=Setting::where('key','popular_banner')->first(); $category_banner=Setting::where('key', 'category_banner')->first(); $new_product_banner=Setting::where('key', 'new_product_banner')->first();
$data['popular_banner']=isset($popular_banner->value)?json_decode($popular_banner->value):''; $data['category_banner']=isset($category_banner->value)?json_decode($category_banner->value):''; $data['new_product_banner']=isset($new_product_banner->value)?json_decode($new_product_banner->value):'';
return view('admin.banner.promotional_banner',$data); }
public function promotionalBannerUpdate(Request $request){
try{ if($request->type=='popular_banner'){ $pre_popular_banner=Setting::where('key', 'popular_banner')->first();
if($pre_popular_banner && isset(json_decode($pre_popular_banner->value)->picture_one)){ $image_one_name=json_decode($pre_popular_banner->value)->picture_one; } if($pre_popular_banner && isset(json_decode($pre_popular_banner->value)->picture_two)){ $image_two_name=json_decode($pre_popular_banner->value)->picture_two; }
$str_rand=Str::random(4);
if ($request->hasFile('picture_one')) { $file = $request->file('picture_one'); $picture_one = time() . 'img-one.' . $file->getClientOriginalExtension(); $file->move(public_path('/uploads'), $picture_one); $image_one_name=$picture_one; } if ($request->hasFile('picture_two')) { $file = $request->file('picture_two'); $picture_two = time() .$str_rand. '.' . $file->getClientOriginalExtension(); $file->move(public_path('/uploads'), $picture_two); $image_two_name=$picture_two; }
$data=[ 'title_one'=>$request->title_one, 'link_one'=>$request->link_one, 'title_two'=>$request->title_two, 'link_two'=>$request->link_two, 'picture_one'=>$image_one_name, 'picture_two'=>$image_two_name, ];
$popular_banner=['key'=>'popular_banner'];
$settings= Setting::firstOrNew($popular_banner); $settings->store_id='1'; $settings->value=json_encode($data); $settings->save(); }
if($request->type=='category_banner'){ $pre_category_banner=Setting::where('key', 'category_banner')->first();
$category_image=null; if($pre_category_banner && isset(json_decode($pre_category_banner->value)->category_image)){ $category_image=json_decode($pre_category_banner->value)->category_image; } if ($request->hasFile('category_picture')) { $file = $request->file('category_picture'); $picture_category = time() . '.54' . $file->getClientOriginalExtension(); $file->move(public_path('/uploads'), $picture_category); $category_image=$picture_category; } // dd($request->all()); $data=[ 'category_title'=>$request->category_title, 'category_link'=>$request->category_link, 'category_image'=>$category_image ]; $popular_banner=['key'=>'category_banner']; $settings= Setting::firstOrNew($popular_banner); $settings->value=json_encode($data); $settings->store_id='1'; $settings->save();
}
if($request->type=='new_product_banner'){ $pre_popular_banner=Setting::where('key', 'new_product_banner')->first();
if($pre_popular_banner && isset(json_decode($pre_popular_banner->value)->picture_one)){ $image_one_name=json_decode($pre_popular_banner->value)->picture_one; } if($pre_popular_banner && isset(json_decode($pre_popular_banner->value)->picture_two)){ $image_two_name=json_decode($pre_popular_banner->value)->picture_two; }
$str_rand=Str::random(4);
if ($request->hasFile('picture_one')) { $file = $request->file('picture_one'); $picture_one = time() .$str_rand.'.' . $file->getClientOriginalExtension(); $file->move(public_path('/uploads'), $picture_one); $image_one_name=$picture_one; } if ($request->hasFile('picture_two')) { $file = $request->file('picture_two'); $picture_two = time() . 'img-one.' . $file->getClientOriginalExtension(); $file->move(public_path('/uploads'), $picture_two); $image_two_name=$picture_two; }
$data=[ 'title_one'=>$request->title_one, 'link_one'=>$request->link_one, 'title_two'=>$request->title_two, 'link_two'=>$request->link_two, 'picture_one'=>$image_one_name, 'picture_two'=>$image_two_name, ];
$popular_banner=['key'=>'new_product_banner'];
$settings= Setting::firstOrNew($popular_banner); $settings->value=json_encode($data); $settings->store_id='1'; $settings->save();
}
return redirect()->back()->with('success', 'Banner Updated Successfully');
}catch (\Exception $ex){ return redirect()->back()->withErrors(['failed'=>$ex->getMessage()]); } } }
|