OwlCyberSecurity - MANAGER
Edit File: CategoriesController.php
<?php namespace App\Http\Controllers; use App\Http\Requests\CategoryAddRequest; use App\Http\Requests\CategoryUpdateRequest; use App\Models\Categories; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; use Throwable; class CategoriesController extends Controller { //Returns categories view public function index(){ return view('Categories.index' , ['title' => 'Categories Listing']); } //Returns categories listing public function categories_listing(Request $request){ // Get required data $draw = $request->get('draw'); $start = $request->get('start'); $length = $request->get('length'); $orderArray = $request->get('order'); $orderBy = $orderArray[0]['column']; $orderDir = $orderArray[0]['dir']; $searchArray = $request->get('search'); $searchValue = $searchArray['value']; // preparing select query $q = Categories::selectRaw(' categories.id, categories.name, categories.meta_tags, categories.meta_keywords, categories.image, IF(categories.status = 1 , "Active" , "Inactive") as status_fomated, DATE_FORMAT(categories.created_at,"%d/%m/%Y<br>%h:%i:%s %p") as created_date '); $total = $q->count(); // search functionality if(isset($searchValue) && !empty($searchValue)){ $formated_search = preg_replace('/[^\sA-Za-z0-9@.\/\-]/', '', strtolower($searchValue)); $q->whereRaw('( categories.name LIKE "%'.$formated_search.'%" OR FIND_IN_SET("'.$formated_search.'" , categories.meta_tags) OR FIND_IN_SET("'.$formated_search.'" , categories.meta_keywords) OR IF(categories.status = 1 , "Active" , "Inactive") LIKE "%'.$formated_search.'%" OR DATE_FORMAT(categories.created_at,"%d/%m/%Y<br>%h:%i:%s %p") LIKE "%'.$formated_search.'%" )'); } // column ordering if(isset($orderBy) && isset($orderDir)){ $columns = [ 1 => 'categories.name', 2 => 'categories.meta_tags', 3 => 'categories.meta_keywords', 4 => 'status_fomated', 5 => 'created_date', ]; if(array_key_exists($orderBy , $columns)){ $q->orderBy($columns[$orderBy] , $orderDir); } } // filtered cound $filtered = $q->count(); // requested data size $records = $q->skip($start)->take($length)->get(); // formating data $data = []; foreach($records as $r){ $tags = ''; $keywords = ''; if(isset($r->meta_tags) && !empty($r->meta_tags)){ foreach(explode(',',$r->meta_tags) as $t){ $tags .= '<span class="tags_class" onclick="addThisToSearch(\''.$t.'\')">'.$t.'</span>'; } } if(isset($r->meta_keywords) && !empty($r->meta_keywords)){ foreach(explode(',',$r->meta_keywords) as $k){ $keywords .= '<span class="keywords_class" onclick="addThisToSearch(\''.$k.'\')">'.$k.'</span>'; } } $data[] = [ 'checkbox' => '<input type="checkbox" name="checkbox'.$r->id.'" id="checkbox'.$r->id.'" class="checkboxes" value="'.$r->id.'">', 'name' => $r->name, 'tags' => $tags, 'keywords' => $keywords, 'status' => $r->status_fomated, 'created_at' => $r->created_date, 'action' => '<a href="'.route('get_categories_edit.edit_categories' , ['id' => $r->id ]).'"><button class="custom-blue-btn w-100">Edit</button></a>', ]; } // returning response return response()->json([ "draw" => intval($draw), "iTotalRecords" => $total, "iTotalDisplayRecords" => $filtered, "aaData" => $data ] ,200); } // Return categories add view public function add(){ return view('Categories.add', ['title' => 'Add Category']); } // Return categories add view public function store(CategoryAddRequest $request){ try { // new category object $category = new Categories(); // add data $category->name = $request->get('name'); $category->slug = $request->get('slug'); $category->meta_tags = ($request->has('tags') && is_array($request->get('tags'))) ? implode(',' , $request->get('tags')) : ''; $category->meta_keywords = ($request->has('keywords') && is_array($request->get('keywords'))) ? implode(',' , $request->get('keywords')) : ''; $category->meta_description = $request->get('description'); $category->status = $request->get('status'); if($request->has('image')){ $image = $request->file('image'); $image_name = 'category_'.now()->format('Y_m_d_H_i_s').'.'.$image->getClientOriginalExtension(); $saved = Storage::disk('categories')->put($image_name , file_get_contents($image)); if($saved){ $category->image = $image_name; } } if($request->has('top_category')) { $category->top_category = 1; } else { $category->top_category = 0; } // creating new category $category->updated_at = null; $category->created_at = new \DateTime(); $category->save(); return redirect('admin/categories')->with('success' , 'Category added.'); } catch (Throwable $th){ return redirect()->back()->with('message' , $th->getMessage())->withInput($request->except('image')); } } // Return categories edit view public function edit($id){ // requested category data if($id > 0){ $category = Categories::where('id' , $id)->first(); if(!empty($category)){ return view('Categories.edit', ['title' => 'Edit Category' , 'category' => $category]); } else{ return redirect('admin/categories')->with('message' , 'Category not found'); } } return redirect('login'); } public function update(CategoryUpdateRequest $request , $id){ if($id > 0){ $category = Categories::where('id' , $id)->first(); if(!empty($category)){ DB::beginTransaction(); try { // add data $category->name = $request->get('name'); $category->slug = $request->get('slug'); $category->meta_tags = ($request->has('tags') && is_array($request->get('tags'))) ? implode(',' , $request->get('tags')) : ''; $category->meta_keywords = ($request->has('keywords') && is_array($request->get('keywords'))) ? implode(',' , $request->get('keywords')) : ''; $category->meta_description = $request->get('description'); $category->status = $request->get('status'); if($request->has('image')){ if(isset($category->image) && !empty($category->image)){ if(Storage::disk('categories')->exists($category->image)){ Storage::disk('categories')->delete($category->image); } } $image = $request->file('image'); $image_name = 'category_'.now()->format('Y_m_d_H_i_s').'.'.$image->getClientOriginalExtension(); $saved = Storage::disk('categories')->put($image_name , file_get_contents($image)); if($saved){ $category->image = $image_name; } } if($request->has('top_category')) { $category->top_category = 1; } else { $category->top_category = 0; } $category->updated_at = new \DateTime(); // update category $category->update(); DB::commit(); return redirect('admin/categories')->with('success' , 'Category updated.'); } catch (Throwable $th){ DB::rollBack(); return redirect()->back()->with('message' , $th->getMessage())->withInput($request->except('image')); } } } return route('login'); } // delete selected category ajax function public function delete(Request $request){ DB::beginTransaction(); try { $ids = is_array($request->get('ids')) ? $request->get('ids') : []; if(count($ids)){ $all_image_name = Categories::whereIn('id' , $ids)->pluck('image')->toArray(); foreach($all_image_name as $i){ if(isset($i) && !empty($i)){ if(Storage::disk('categories')->exists($i)){ Storage::disk('categories')->delete($i); } } } Categories::whereIn('id' , $ids)->delete(); DB::commit(); return response()->json(['success' => true , 'message' => 'Categor'.(count($ids) > 1 ? "ies" : "y").' deleted successfully.'] , 200); } return response()->json(['message' => 'No category selected'] , 422); } catch (Throwable $th){ DB::rollBack(); return response()->json(['message' => $th->getMessage()] , 422); } } // delete category image function deleteImage($id){ if($id > 0){ $category = Categories::where('id' , $id)->first(); try { if(!empty($category)){ if(isset($category->image) && !empty($category->image)){ if(Storage::disk('categories')->exists($category->image)){ Storage::disk('categories')->delete($category->image); $category->image = null; $category->update(); } return response()->json(['message' => 'Category image deleted'] , 200); } } return response()->json(['message' => 'Category not found'] , 422); } catch (Throwable $th){ return response()->json(['message' => $th->getMessage()] , 422); } } return response()->json(['message' => 'Category not found'] , 422); } }