165 lines
4.9 KiB
PHP
165 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\DataTables\UsersDataTable;
|
|
use App\Models\User;
|
|
use App\Helpers\AuthHelper;
|
|
use Spatie\Permission\Models\Role;
|
|
use App\Http\Requests\UserRequest;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index(UsersDataTable $dataTable)
|
|
{
|
|
$pageTitle = trans('global-message.list_form_title',['form' => trans('users.title')] );
|
|
$auth_user = AuthHelper::authSession();
|
|
$assets = ['data-table'];
|
|
$headerAction = '<a href="'.route('users.create').'" class="btn btn-sm btn-primary" role="button">Add User</a>';
|
|
return $dataTable->render('global.datatable', compact('pageTitle','auth_user','assets', 'headerAction'));
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function create()
|
|
{
|
|
$roles = Role::where('status',1)->get()->pluck('title', 'id');
|
|
|
|
return view('users.form', compact('roles'));
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store(UserRequest $request)
|
|
{
|
|
$request['password'] = bcrypt($request->password);
|
|
|
|
$request['username'] = $request->username ?? stristr($request->email, "@", true) . rand(100,1000);
|
|
|
|
$user = User::create($request->all());
|
|
|
|
storeMediaFile($user,$request->profile_image, 'profile_image');
|
|
|
|
$user->assignRole('user');
|
|
|
|
// Save user Profile data...
|
|
$user->userProfile()->create($request->userProfile);
|
|
|
|
return redirect()->route('users.index')->withSuccess(__('message.msg_added',['name' => __('users.store')]));
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function show($id)
|
|
{
|
|
$data = User::with('userProfile','roles')->findOrFail($id);
|
|
|
|
$profileImage = getSingleMedia($data, 'profile_image');
|
|
|
|
return view('users.profile', compact('data', 'profileImage'));
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
$data = User::with('userProfile','roles')->findOrFail($id);
|
|
|
|
$data['user_type'] = $data->roles->pluck('id')[0] ?? null;
|
|
|
|
$roles = Role::where('status',1)->get()->pluck('title', 'id');
|
|
|
|
$profileImage = getSingleMedia($data, 'profile_image');
|
|
|
|
return view('users.form', compact('data','id', 'roles', 'profileImage'));
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(UserRequest $request, $id)
|
|
{
|
|
// dd($request->all());
|
|
$user = User::with('userProfile')->findOrFail($id);
|
|
|
|
$role = Role::find($request->user_role);
|
|
if(env('IS_DEMO')) {
|
|
if($role->name === 'admin'&& $user->user_type === 'admin') {
|
|
return redirect()->back()->with('error', 'Permission denied');
|
|
}
|
|
}
|
|
$user->assignRole($role->name);
|
|
|
|
$request['password'] = $request->password != '' ? bcrypt($request->password) : $user->password;
|
|
|
|
// User user data...
|
|
$user->fill($request->all())->update();
|
|
|
|
// Save user image...
|
|
if (isset($request->profile_image) && $request->profile_image != null) {
|
|
$user->clearMediaCollection('profile_image');
|
|
$user->addMediaFromRequest('profile_image')->toMediaCollection('profile_image');
|
|
}
|
|
|
|
// user profile data....
|
|
$user->userProfile->fill($request->userProfile)->update();
|
|
|
|
if(auth()->check()){
|
|
return redirect()->route('users.index')->withSuccess(__('message.msg_updated',['name' => __('message.user')]));
|
|
}
|
|
return redirect()->back()->withSuccess(__('message.msg_updated',['name' => 'My Profile']));
|
|
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
$user = User::findOrFail($id);
|
|
$status = 'errors';
|
|
$message= __('global-message.delete_form', ['form' => __('users.title')]);
|
|
|
|
if($user!='') {
|
|
$user->delete();
|
|
$status = 'success';
|
|
$message= __('global-message.delete_form', ['form' => __('users.title')]);
|
|
}
|
|
|
|
if(request()->ajax()) {
|
|
return response()->json(['status' => true, 'message' => $message, 'datatable_reload' => 'dataTable_wrapper']);
|
|
}
|
|
|
|
return redirect()->back()->with($status,$message);
|
|
|
|
}
|
|
}
|