Current File : /home/masbinta/public_html/core/app/Http/Controllers/Admin/PortfolioController.php |
<?php
namespace App\Http\Controllers\Admin;
use App\Helpers\Helper;
use App\Models\Service;
use App\Models\Language;
use App\Models\Portfolio;
use Illuminate\Http\Request;
use App\Models\PortfolioImage;
use App\Http\Controllers\Controller;
class PortfolioController extends Controller
{
public $lang;
public function __construct()
{
$this->lang = Language::where('is_default', 1)->first();
}
public function index(Request $request){
$lang = Language::where('code', $request->language)->first()->id;
$portfolios = Portfolio::where('language_id', $lang)->orderBy('id', 'DESC')->get();
return view('admin.portfolio.index', compact('portfolios'));
}
public function portfolio_get_category($id){
$services = Service::where('status', 1)->where('language_id', $id)->get();
$output = '';
foreach($services as $service){
$output .= '<option value="'.$service->id.'">'.$service->title.'</option>';
}
return $output;
}
// Add Portfolio
public function add(){
$services = Service::where('status', 1)->get();
return view('admin.portfolio.add', compact('services'));
}
// Store Portfolio
public function store(Request $request){
$slug = Helper::make_slug($request->title);
$Portfolios = Portfolio::select('slug')->get();
$request->validate([
'image[]' => 'mimes:jpeg,jpg,png',
'featured_image' => 'required|mimes:jpeg,jpg,png',
'title' => [
'required',
'unique:portfolios,title',
'max:255',
function($attribute, $value, $fail) use ($slug, $Portfolios){
foreach($Portfolios as $port){
if($port->slug == $slug){
return $fail('Title already taken!');
}
}
}
],
'client_name' => 'required|max:250',
'start_date' => 'required|max:250',
'status' => 'required|max:250',
'service_id' => 'required',
'content' => 'required',
'serial_number' => 'required',
'language_id' => 'required',
]);
$portfolio = new Portfolio();
if($request->hasFile('featured_image')){
$file = $request->file('featured_image');
$extension = $file->getClientOriginalExtension();
$featured_image = time().rand().'.'.$extension;
$file->move('assets/front/img/portfolio/', $featured_image);
$portfolio->featured_image = $featured_image;
}
$portfolio->title = $request->title;
$portfolio->language_id = $request->language_id;
$portfolio->status = $request->status;
$portfolio->content = $request->content;
$portfolio->slug = $slug;
$portfolio->start_date = $request->start_date;
$portfolio->submission_date = $request->submission_date;
$portfolio->link = $request->link;
$portfolio->service_id = $request->service_id;
$portfolio->client_name = $request->client_name;
$portfolio->serial_number = $request->serial_number;
$portfolio->meta_keywords = $request->meta_keywords;
$portfolio->meta_description = $request->meta_description;
$portfolio->save();
$portfolio_id = $portfolio->id;
if($request->hasFile('image')){
$files = $request->file('image');
$count = 1;
foreach ($files as $file){
$extension = $file->getClientOriginalExtension();
$image = 'portfolio_'.$count.time().rand().'.'.$extension;
$file->move('assets/front/img/portfolio/', $image);
$portfolio_slider = new PortfolioImage();
$portfolio_slider->image = $image;
$portfolio_slider->portfolio_id = $portfolio_id;
$portfolio_slider->save();
$count++;
}
}
$notification = array(
'messege' => 'Portfolio Added successfully!',
'alert' => 'success'
);
return redirect()->back()->with('notification', $notification);
}
// Portfolio Delete
public function delete($id){
$sliders = PortfolioImage::where('portfolio_id', $id)->get();
foreach ($sliders as $slider){
unlink('assets/front/img/portfolio/'. $slider->image);
$slider->delete();
}
$portfolio = Portfolio::find($id);
@unlink('assets/front/img/portfolio/'. $portfolio->featured_image);
$portfolio->delete();
$notification = array(
'messege' => 'Portfolio Deleted successfully!',
'alert' => 'success'
);
return redirect()->back()->with('notification', $notification);
}
// Portfolio Edit
public function edit($id){
$portfolio = Portfolio::findOrFail($id);
$blog_lan = $portfolio->language_id;
$services = Service::where('status', 1)->where('language_id', $blog_lan)->get();
$sliders = PortfolioImage::where('portfolio_id', $id)->get();
return view('admin.portfolio.edit', compact('portfolio', 'services', 'sliders'));
}
// Portfolio Update
public function update(Request $request, $id){
$sliders = $request->sliders;
if($sliders != null){
$files = $request->sliders;
// $count = 1;
foreach ($files as $file){
$slider = PortfolioImage::where('id', $file)->first();
@unlink('assets/front/img/portfolio/'. $slider->image);
$slider->delete();
}
}
$slug = Helper::make_slug($request->title);
$portfolios = Portfolio::select('slug')->get();
$portfolio = Portfolio::findOrFail($id);
$request->validate([
'image[]' => 'mimes:jpeg,jpg,png',
'featured_image' => 'mimes:jpeg,jpg,png',
'title' => [
'required',
'max:255',
function($attribute, $value, $fail) use ($slug, $portfolios, $portfolio){
foreach($portfolios as $blg){
if($portfolio->slug != $slug){
if($blg->slug == $slug){
return $fail('Title already taken!');
}
}
}
},
'unique:portfolios,title,'.$id
],
'client_name' => 'required|max:250',
'start_date' => 'required|max:250',
'status' => 'required|max:250',
'service_id' => 'required',
'content' => 'required',
'serial_number' => 'required',
'language_id' => 'required',
]);
if($request->hasFile('featured_image')){
@unlink('assets/front/img/portfolio/'. $portfolio->featured_image);
$file = $request->file('featured_image');
$extension = $file->getClientOriginalExtension();
$featured_image = time().rand().'.'.$extension;
$file->move('assets/front/img/portfolio/', $featured_image);
$portfolio->featured_image = $featured_image;
}
$portfolio->title = $request->title;
$portfolio->language_id = $request->language_id;
$portfolio->status = $request->status;
$portfolio->content = $request->content;
$portfolio->slug = $slug;
$portfolio->start_date = $request->start_date;
$portfolio->submission_date = $request->submission_date;
$portfolio->link = $request->link;
$portfolio->service_id = $request->service_id;
$portfolio->client_name = $request->client_name;
$portfolio->serial_number = $request->serial_number;
$portfolio->meta_keywords = $request->meta_keywords;
$portfolio->meta_description = $request->meta_description;
$portfolio->save();
$portfolio_id = $portfolio->id;
if($request->hasFile('image')){
$files = $request->file('image');
$count = 1;
foreach ($files as $file){
$extension = $file->getClientOriginalExtension();
$image = 'portfolio_'.$count.time().rand().'.'.$extension;
$file->move('assets/front/img/portfolio/', $image);
$portfolio_slider = new PortfolioImage();
$portfolio_slider->image = $image;
$portfolio_slider->portfolio_id = $portfolio_id;
$portfolio_slider->save();
$count++;
}
}
$notification = array(
'messege' => 'Portfolio Updated successfully!',
'alert' => 'success'
);
return redirect(route('admin.portfolio.index').'?language='.$this->lang->code)->with('notification', $notification);
}
}