ok
Direktori : /home2/selectio/www/ecommerce-website/website/app/Http/Controllers/Admin/ |
Current File : /home2/selectio/www/ecommerce-website/website/app/Http/Controllers/Admin/BrandController.php |
<?php namespace App\Http\Controllers\Admin; use App\CPU\Helpers; use App\CPU\ImageManager; use App\Http\Controllers\Controller; use App\Model\Admin; use App\Model\Brand; use Brian2694\Toastr\Facades\Toastr; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use App\Model\Translation; use Rap2hpoutre\FastExcel\FastExcel; class BrandController extends Controller { public function add_new() { $br = Brand::latest()->paginate(Helpers::pagination_limit()); $language=\App\Model\BusinessSetting::where('type','pnc_language')->first(); $language = $language->value ?? null; $default_lang = 'en'; return view('admin-views.brand.add-new', compact('br', 'language', 'default_lang')); } public function store(Request $request) { $request->validate([ 'name.0' => 'required|unique:brands,name', ], [ 'name.0.required' => 'Brand name is required!', 'name.0.unique' => 'The brand has already been taken.', ]); $brand = new Brand; $brand->name = $request->name[array_search('en', $request->lang)]; $brand->image = ImageManager::upload('brand/', 'png', $request->file('image')); $brand->status = 1; $brand->save(); foreach($request->lang as $index=>$key) { if($request->name[$index] && $key != 'en') { Translation::updateOrInsert( ['translationable_type' => 'App\Model\Brand', 'translationable_id' => $brand->id, 'locale' => $key, 'key' => 'name'], ['value' => $request->name[$index]] ); } } Toastr::success('Brand added successfully!'); return back(); } /** * Brand list show, search * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View */ function list(Request $request) { $search = $request['search']; $query_param = $search ? ['search' => $request['search']] : ''; $br = Brand::withCount('brandAllProducts') ->with(['brandAllProducts'=> function($query){ $query->withCount('order_details'); }]) ->when($request['search'], function ($q) use($request){ $key = explode(' ', $request['search']); foreach ($key as $value) { $q->Where('name', 'like', "%{$value}%") ->orWhere('id', $value); } }) ->latest()->paginate(Helpers::pagination_limit())->appends($query_param); return view('admin-views.brand.list', compact('br','search')); } /** * Export brand list by excel * @return string|\Symfony\Component\HttpFoundation\StreamedResponse * @throws \Box\Spout\Common\Exception\IOException * @throws \Box\Spout\Common\Exception\InvalidArgumentException * @throws \Box\Spout\Common\Exception\UnsupportedTypeException * @throws \Box\Spout\Writer\Exception\WriterNotOpenedException */ public function export(){ $brands = Brand::withCount('brandAllProducts') ->with(['brandAllProducts'=> function($query){ $query->withCount('order_details'); }])->orderBy('id', 'DESC')->get(); $data = array(); foreach($brands as $brand){ $data[] = array( 'Brand Name' => $brand->name, 'Total Product' => $brand->brand_all_products_count, 'Total Order' => $brand->brandAllProducts->sum('order_details_count'), ); } return (new FastExcel($data))->download('brand_list.xlsx'); } public function edit($id) { $b = Brand::where(['id' => $id])->withoutGlobalScopes()->first(); return view('admin-views.brand.edit', compact('b')); } public function update(Request $request, $id) { $request->validate([ 'name.0' => 'required|unique:brands,name,'.$id, ], [ 'name.0.required' => 'Brand name is required!', 'name.0.unique' => 'The brand has already been taken.', ]); $brand = Brand::find($id); $brand->name = $request->name[array_search('en', $request->lang)]; if ($request->has('image')) { $brand->image = ImageManager::update('brand/', $brand['image'], 'png', $request->file('image')); } $brand->save(); foreach ($request->lang as $index => $key) { if ($request->name[$index] && $key != 'en') { Translation::updateOrInsert( ['translationable_type' => 'App\Model\Brand', 'translationable_id' => $brand->id, 'locale' => $key, 'key' => 'name'], ['value' => $request->name[$index]] ); } } Toastr::success('Brand updated successfully!'); return back(); } public function status_update(Request $request) { $brand = Brand::find($request['id']); $brand->status = $request['status']; if($brand->save()){ $success = 1; }else{ $success = 0; } return response()->json([ 'success' => $success, ], 200); } public function delete(Request $request) { $translation = Translation::where('translationable_type','App\Model\Brand') ->where('translationable_id',$request->id); $translation->delete(); $brand = Brand::find($request->id); ImageManager::delete('/brand/' . $brand['image']); $brand->delete(); return response()->json(); } }