*/ class CategoryController extends Controller { /** * Create a new controller instance. * constructor to check * 1. authentication * 2. user roles * 3. roles must be agent. * * @return void */ public function __construct() { // checking authentication $this->middleware('auth'); // checking roles $this->middleware('role.agent'); SettingsController::language(); } /** * Indexing all Category. * * @param type Category $category * * @return Response */ public function index() { /* get the view of index of the catogorys with all attributes of category model */ try { return view('themes.default1.agent.kb.category.index'); } catch (Exception $e) { return redirect()->back()->with('fails', $e->getMessage()); } } /** * fetching category list in chumper datatables. * * @return type chumper datatable */ public function getData() { /* fetching chumper datatables */ return Datatable::collection(Category::All()) /* search column name */ ->searchColumns('name') /* order column name and description */ ->orderColumns('name', 'description') /* add column name */ ->addColumn('name', function ($model) { $string = strip_tags($model->name); return Str::limit($string, 20); }) /* add column Created */ ->addColumn('Created', function ($model) { $t = $model->created_at; return TicketController::usertimezone($t); }) /* add column Actions */ /* there are action buttons and modal popup to delete a data column */ ->addColumn('Actions', function ($model) { return ' id.'/edit class="btn btn-warning btn-xs">'.\Lang::get('lang.edit').' '.\Lang::get('lang.view').' '; }) ->make(); } /** * Create a Category. * * @param type Category $category * * @return type view */ public function create(Category $category) { /* Get the all attributes in the category model */ $category = $category->pluck('name', 'id')->toArray(); /* get the view page to create new category with all attributes of category model */ try { return view('themes.default1.agent.kb.category.create', compact('category')); } catch (Exception $e) { return redirect()->back()->with('fails', $e->getMessage()); } } /** * To store the selected category. * * @param type Category $category * @param type CategoryRequest $request * * @return type Redirect */ public function store(Category $category, CategoryRequest $request) { /* Get the whole request from the form and insert into table via model */ $sl = $request->input('name'); $slug = Str::slug($sl, '-'); $category->slug = $slug; // send success message to index page try { $category->fill($request->input())->save(); return redirect('category')->with('success', Lang::get('lang.category_inserted_successfully')); } catch (Exception $e) { return redirect('category')->with('fails', Lang::get('lang.category_not_inserted').'
  • '.$e->getMessage().'
  • '); } } /** * Show the form for editing the specified category. * * @param type $slug * @param type Category $category * * @return type view */ public function edit($id) { /* get the atributes of the category model whose id == $id */ $category = Category::whereId($id)->first(); $categories = Category::pluck('name', 'id')->toArray(); /* get the Edit page the selected category via id */ return view('themes.default1.agent.kb.category.edit', compact('category', 'categories')); } /** * Update the specified Category in storage. * * @param type $slug * @param type Category $category * @param type CategoryUpdate $request * * @return type redirect */ public function update($id, CategoryRequest $request) { /* Edit the selected category via id */ $category = Category::where('id', $id)->first(); $sl = $request->input('name'); $slug = Str::slug($sl, '-'); /* update the values at the table via model according with the request */ //redirct to index page with success message try { $category->slug = $slug; $category->fill($request->input())->save(); return redirect('category')->with('success', Lang::get('lang.category_updated_successfully')); } catch (Exception $e) { //redirect to index with fails message return redirect('category')->with('fails', Lang::get('lang.category_not_updated').'
  • '.$e->getMessage().'
  • '); } } /** * Remove the specified category from storage. * * @param type $id * @param type Category $category * @param type Relationship $relation * * @return type Redirect */ public function destroy($id, Category $category, Relationship $relation) { $relation = $relation->where('category_id', $id)->first(); if ($relation != null) { return Redirect::back()->with('fails', Lang::get('lang.category_not_deleted')); } else { /* delete the category selected, id == $id */ $category = $category->whereId($id)->first(); // redirect to index with success message try { $category->delete(); return Redirect::back()->with('success', Lang::get('lang.category_deleted_successfully')); } catch (Exception $e) { return Redirect::back()->with('fails', Lang::get('lang.category_not_deleted').'
  • '.$e->getMessage().'
  • '); } } } }