/**
  * Display a listing of the resource.
  *
  * @param Request  $request
  * @param integer|null $id
  * @return Datatables
  */
 public function index(Request $request, $id = null)
 {
     // query
     if (is_null($id)) {
         $pages = Page::with('category');
     } else {
         $pages = PageCategory::findOrFail($id)->pages();
     }
     $pages->select(['id', 'category_id', 'title', 'is_publish', 'created_at']);
     // if is filter action
     if ($request->has('action') && $request->input('action') === 'filter') {
         $pages->filter($request);
     }
     // urls
     $addUrls = $this->urls;
     if (!is_null($id)) {
         $this->relationUrls['edit_page']['id'] = $id;
         $this->relationUrls['edit_page']['model'] = config('laravel-page-module.url.page');
         $this->relationUrls['show']['id'] = $id;
         $this->relationUrls['show']['model'] = config('laravel-page-module.url.page');
         $addUrls = array_merge($addUrls, $this->relationUrls);
     }
     $addColumns = ['addUrls' => $addUrls, 'status' => function ($model) {
         return $model->is_publish;
     }];
     $editColumns = ['created_at' => function ($model) {
         return $model->created_at_table;
     }, 'title' => function ($model) {
         return $model->title_uc_first;
     }, 'category.name' => function ($model) {
         return $model->category->name_uc_first;
     }];
     $removeColumns = ['is_publish', 'category_id'];
     return $this->getDatatables($pages, $addColumns, $editColumns, $removeColumns);
 }
 /**
  * Show the form for editing the specified resource.
  *
  * @param integer|Page $firstId
  * @param integer|null $secondId
  * @return \Illuminate\Http\Response
  */
 public function edit($firstId, $secondId = null)
 {
     $operation = 'edit';
     $page = is_null($secondId) ? $firstId : $secondId;
     if (is_null($secondId)) {
         return view(config('laravel-page-module.views.page.edit'), compact('page', 'operation'));
     }
     $page_category = PageCategory::findOrFail($firstId);
     return view(config('laravel-page-module.views.page.edit'), compact('page', 'page_category', 'operation'));
 }
 /**
  * get roles with query
  *
  * @param Request $request
  * @return \Illuminate\Http\Response
  */
 public function models(Request $request)
 {
     return PageCategory::where('name', 'like', "%{$request->input('query')}%")->get(['id', 'name'])->map(function ($item, $key) {
         $item->name = $item->name_uc_first;
         return $item;
     });
 }