/home/mip/mip/app/Modules/Client/Controllers/Pages/AboutUsController.php
<?php
namespace QxCMS\Modules\Client\Controllers\Pages;
use Auth;
use Session;
use Datatables;
use Illuminate\Http\Request;
use QxCMS\Http\Controllers\Controller;
use QxCMS\Modules\Client\Requests\Pages\AboutUsRequest;
use QxCMS\Modules\Client\Repositories\Pages\AboutUsRepositoryInterface as AboutUs;
use QxCMS\Modules\Client\Repositories\Settings\Roles\PermissionRepositoryInterface as Permission;
class AboutUsController extends Controller
{
protected $about_us;
protected $permission;
protected $auth;
protected $prefix_name = '';
public function __construct(Permission $permission, AboutUs $about_us)
{
$this->about_us = $about_us;
$this->permission = $permission;
$this->auth = Auth::guard('client');
$this->prefix_name = config('modules.client');
$this->getDetails($this->about_us->getModuleId());
}
public function permissions()
{
return $this->permission->getPermission($this->about_us->getModuleId());
}
public function index()
{
$this->authorize('activated', $this->permissions());
$data['permissions'] = $this->permissions();
$data['userLogs'] = $this->about_us->getUserLogs($this->about_us->getModuleId());
return view('Client::pages.about-us.index', $data, $this->getFormOptions());
}
public function create()
{
$this->authorize('create', $this->permissions());
$data['permissions'] = $this->permissions();
return view('Client::pages.about-us.create', $data, $this->getFormOptions());
}
public function store(AboutUsRequest $request)
{
$this->authorize('create', $this->permissions());
$about_us = $this->about_us->create($request);
session()->flash('success', 'Successfully added.');
return redirect()->route($this->prefix_name.'.about-us.index');
}
public function show($id)
{
//
}
public function edit($hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
$data['permissions'] = $this->permissions();
$data['about_us'] = $this->about_us->findById($id);
$data['userLogs'] = $this->about_us->getUserLogs($this->about_us->getModuleId(), $id);
return view('Client::pages.about-us.edit', $data, $this->getFormOptions());
}
public function update(AboutUsRequest $request, $hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
$about_us = $this->about_us->update($id, $request);
return redirect()->route($this->prefix_name.'.about-us.index');
}
public function destroy($hashid)
{
$this->authorize('delete', $this->permissions());
$id = decode($hashid);
return $this->about_us->delete($id);
}
public function details(Request $request, $hashid)
{
$id = decode($hashid);
$about_us = $this->about_us->findById($id);
if($request->ajax()){
return $about_us;
}
}
public function getAboutUsData(Request $request)
{
$about_us = $this->about_us->select('*');
$permissions = $this->permissions();
return Datatables::of($about_us)
->filter(function ($query) use ($request){
if ($request->has('title')){
$query->where('title', 'like', "%{$request->get('title')}%");
}
if ($request->has('status') && !empty($request->get('status'))){
$query->where('status', '=', "{$request->get('status')}");
}
})
->editColumn('title', function($about_us){
return '<span data-toggle="tooltip" data-placement="top" title="View Details"><a href="#about-us-details-modal" data-toggle="modal" data-details_url="'.route($this->prefix_name.'.about-us.details', $about_us->hashid).'">'.$about_us->title.'</a></span>';
})
->addColumn('action', function ($about_us) use ($permissions){
$html = '';
if($this->auth->user()->can('update', $permissions)){
$html .= '<a href="'.route($this->prefix_name.'.about-us.edit', $about_us->hashid).'"><button type="button" data-toggle="tooltip" title="Edit" class="btn btn-warning btn-xs btn-flat edited"><span class="glyphicon glyphicon-pencil"></span></button></a>';
}
if($this->auth->user()->can('delete', $permissions)){
$html .= ' <a href="#delete-'.$about_us->hashid.'" class="btn btn-xs btn-flat btn-danger" id="btn-delete" data-action="'.route($this->prefix_name.'.about-us.destroy', $about_us->hashid).'" data-toggle="tooltip" data-placement="top" title="Delete"><i class="fa fa-trash-o"></i></a>';
}
return $html;
})
->rawColumns(['action', 'title', 'status_name'])
->make(true);
}
protected function getFormOptions()
{
$data['status'] = Array('Publish' => 'Publish', 'Draft' => 'Draft', 'Inactive' => 'Inactive');
return $data;
}
}