/home/mip/mip/app/Modules/Client/Controllers/Settings/UserController.php
<?php
namespace QxCMS\Modules\Client\Controllers\Settings;
use Illuminate\Http\Request;
use QxCMS\Http\Controllers\Controller;
use QxCMS\Modules\Client\Repositories\Settings\Users\UserRepositoryInterface as User;
use QxCMS\Modules\Client\Repositories\Settings\Roles\RoleRepositoryInterface as Role;
use QxCMS\Modules\Client\Repositories\Settings\Roles\PermissionRepositoryInterface as Permission;
use QxCMS\Modules\Client\Requests\Settings\UserRequest;
use Datatables;
use Auth;
use DB;
class UserController extends Controller
{
protected $user;
protected $role;
protected $permission;
protected $auth;
protected $prefix_name = '';
public function __construct(User $user, Role $role, Permission $permission)
{
$this->user = $user;
$this->role = $role;
$this->permission = $permission;
$this->auth = Auth::guard('client');
$this->prefix_name = config('modules.client');
$this->getDetails($this->user->getModuleId());
}
public function permissions()
{
return $this->permission->getPermission($this->user->getModuleId());
}
public function index()
{
$this->authorize('activated', $this->permissions());
$data['permissions'] = $this->permissions();
$data['userLogs'] = $this->user->getUserLogs($this->user->getModuleId());
return view('Client::settings.users.index', $data);
}
public function create()
{
$this->authorize('create', $this->permissions());
$data['permissions'] = $this->permissions();
$data['roles'] = $this->role->getLists();
return view('Client::settings.users.create', $data);
}
public function store(UserRequest $request)
{
$this->authorize('create', $this->permissions());
$user = $this->user->create($request->all());
session()->flash('success', 'Successfully added.');
return redirect($this->prefix_name.'/settings/users');
}
public function show($id)
{
$this->authorize('activated', $this->permissions());
}
public function edit($hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
$data['permissions'] = $this->permissions();
$data['roles'] = $this->role->getLists();
$data['user'] = $this->user->findById($id);
$data['userLogs'] = $this->user->getUserLogs($this->user->getModuleId(), $id);
return view('Client::settings.users.edit', $data);
}
public function update(UserRequest $request, $hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
$this->user->update($id, $request->all());
return redirect($this->prefix_name.'/settings/users');
}
public function destroy($hashid)
{
$this->authorize('delete', $this->permissions());
$id = decode($hashid);
return $this->user->delete($id);
}
public function select2(Request $request)
{
return $this->user->select2($request->all());
}
/*
* Datatables
*/
public function getUsersData(Request $request)
{
$params = [
'hiddenRoleIds' => $this->role->getHiddenRoleIds(),
'developer_id' => $this->role->getDeveloperId()
];
$users = $this->user->datatablesIndex($params);
return Datatables::of($users)
->editColumn('status',function($client){
if($client->status == 0) return '<span class="label label-danger">Deactivated</span>';
return '<span class="label label-success">Activated</span>';
})
->addColumn('action', function ($user) {
$html_out = '';
$permissions = $this->permissions();
if($user->id != 1) {
if($this->auth->user()->can('update', $permissions)) {
$html_out .= '<a href="'.url($this->prefix_name.'/settings/users/'.$user->hashid.'/edit').'" class="btn btn-xs btn-flat btn-warning" data-toggle="tooltip" data-placement="top" title="Edit"><i class="fa fa-pencil"></i></a>';
}
if($this->auth->user()->can('delete', $permissions)) {
$html_out .= ' <a href="#delete-'.$user->hashid.'" class="btn btn-xs btn-flat btn-danger" id="btn-delete" data-action="'.url($this->prefix_name).'/settings/users/'.$user->hashid.'" data-toggle="tooltip" data-placement="top" title="Delete"><i class="fa fa-trash-o"></i></a>';
}
} else {
if($this->auth->user()->can('update', $permissions)) {
$html_out = '<a href="'.url($this->prefix_name.'/settings/users/'.$user->hashid.'/edit').'" class="btn btn-xs btn-flat btn-warning" data-toggle="tooltip" data-placement="top" title="Edit"><i class="fa fa-pencil"></i></a>';
}
}
return $html_out;
})
->rawColumns(['action', 'status'])
->make(true);
}
public function getTokenInputUserLists(Request $request)
{
if($request->has('q')) {
if($request->input('q') <> '') {
return $this->user->tokenInputLists()->where('name', 'LIKE', '%'.$request->input('q').'%')->where('client_id', $this->auth->user()->client->id)->get();
}
}
return $this->user->tokenInputLists()->where('client_id', $this->auth->user()->client->id)->get();
}
}