diff --git a/app/DataTables/Users/UsersDataTable.php b/app/DataTables/Users/UsersDataTable.php index cfea84c..bc89c15 100644 --- a/app/DataTables/Users/UsersDataTable.php +++ b/app/DataTables/Users/UsersDataTable.php @@ -22,24 +22,14 @@ class UsersDataTable extends DataTable ->filter(function ($query) { $search = request()->get('search'); if ($search['value']!=="") { - $query->where('first_name', 'like', "%" . $search['value'] . "%") - ->orWhere('email', 'like', "%" . $search['value'] . "%") - ->orWhereRelation('info','phone', 'like', "%" . $search['value'] . "%"); + $query->where('name', 'like', "%" . $search['value'] . "%") + ->orWhere('email', 'like', "%" . $search['value'] . "%"); } }) - ->rawColumns(['first_name','action']) + ->rawColumns(['action']) ->addIndexColumn() - ->editColumn('first_name', function (User $model) { - return view('pages.users._avatar', compact('model')); - }) - ->editColumn('email', function (User $model) { - return $model->email; - }) - ->addColumn('phone', function (User $model) { - return $model->info->phone; - }) ->addColumn('action', function (User $model) { - return view('pages.users._action', compact('model')); + return view('pages.users.users._action', compact('model')); }); } @@ -62,7 +52,7 @@ class UsersDataTable extends DataTable public function html() { return $this->builder() - ->setTableId('users-table') + ->setTableId('user-users-table') ->columns($this->getColumns()) ->minifiedAjax() ->orderBy(1,'asc') @@ -85,9 +75,8 @@ class UsersDataTable extends DataTable { return [ Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), - Column::make('first_name')->title(__('Name')), + Column::make('name')->title(__('Name')), Column::make('email'), - Column::make('phone'), Column::computed('action') ->exportable(false) ->printable(false) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index bae1593..165659b 100644 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -1,211 +1,238 @@ middleware(function ($request, $next) { - $this->user = Auth::guard('web')->user(); - return $next($request); - }); - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - - public function index(UsersDataTable $dataTable) - { - if (is_null($this->user) || !$this->user->can('user.read')) { - abort(403, 'Sorry !! You are Unauthorized to view any users !'); - } - - return $dataTable->render('pages.users.index'); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - if (is_null($this->user) || !$this->user->can('user.create')) { - abort(403, 'Sorry !! You are Unauthorized to create any users !'); - } - - $roles = Role::all(); - return view('pages.users.create', compact('roles')); - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - if (is_null($this->user) || !$this->user->can('user.create')) { - abort(403, 'Sorry !! You are Unauthorized to create any users !'); - } - // Validation Data - $request->validate([ - 'first_name' => 'required|max:50', - 'last_name' => 'max:50', - 'email' => 'required|max:100|email|unique:users', - 'password' => 'required|min:6|confirmed', - 'phone' => 'unique:user_infos|numeric' - ]); - - // Create New User - $user = new User(); - $user->first_name = $request->first_name; - $user->last_name = $request->last_name; - $user->email = $request->email; - $user->password = Hash::make($request->password); - - if($user->save()){ - $userInfo = new UserInfo(); - $userInfo->user_id = $user->id; - $userInfo->phone = $request->phone; - $userInfo->save(); - } - - if ($request->roles) { - $user->assignRole($request->roles); - } - - session()->flash('success', 'User has been created !!'); - return redirect()->route('users.index'); - } - - /** - * Display the specified resource. - * - * @param int $id - * - * @return \Illuminate\Http\Response - */ - public function show($id) - { - if (is_null($this->user) || !$this->user->can('user.read')) { - abort(403, 'Sorry !! You are Unauthorized to view any users !'); - } - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - if (is_null($this->user) || !$this->user->can('user.update')) { - abort(403, 'Sorry !! You are Unauthorized to update any users !'); - } - - $user = User::with(['info'])->find($id); - $roles = Role::all(); - return view('pages.users.edit', compact('user', 'roles')); - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - if (is_null($this->user) || !$this->user->can('user.update')) { - abort(403, 'Sorry !! You are Unauthorized to update any users !'); - } - - // Create New User - $user = User::find($id); - $userInfo = userInfo::where('user_id', $user->id)->first(); - - // Validation Data - if ($request->password !== '') { - $request->validate([ - 'first_name' => 'required|max:50', - 'last_name' => 'max:50', - 'email' => 'required|max:100|email|unique:users,email,' . $id, - 'password' => 'nullable|min:6|confirmed', - 'phone' => 'numeric|unique:user_infos,phone,'.$userInfo->id - ]); - } else { - $request->validate([ - 'first_name' => 'required|max:50', - 'last_name' => 'max:50', - 'email' => 'required|max:100|email|unique:users,email,' . $id, - 'phone' => 'numeric|unique:user_infos,phone,'.$userInfo->id - ]); - } - - $user->first_name = $request->first_name; - $user->last_name = $request->last_name; - $user->email = $request->email; - if ($request->password) { - $user->password = Hash::make($request->password); - } - if($user->save()){ - $userInfo->phone = $request->phone; - $userInfo->save(); - } - - $user->roles()->detach(); - if ($request->roles) { - $user->assignRole($request->roles); - } - - session()->flash('success', 'User has been updated !!'); - return redirect()->route('users.index'); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - if (is_null($this->user) || !$this->user->can('user.delete')) { - abort(403, 'Sorry !! You are Unauthorized to delete any users !'); - } - - $user = User::find($id); - $info = UserInfo::where(['user_id' => $user->id])->first(); - if (!is_null($user)) { - $user->delete(); - $info->delete(); - } - - session()->flash('success', 'User has been deleted !!'); - return redirect()->route('users.index'); - } + $this->middleware(function ($request, $next) { + $this->user = Auth::guard('web')->user(); + return $next($request); + }); } + + /** + * Display a listing of the resource. + * + * @return Response + */ + + public function index(UsersDataTable $dataTable) + { + /*if (is_null($this->user) || !$this->user->can('user.read')) { + abort(403, 'Sorry !! You are Unauthorized to view any users !'); + }*/ + + addVendor('chained-select'); + + $directorat = Directorat::all(); + $roles = Role::all(); + return $dataTable->render('pages.users.users.index', compact('directorat', 'roles')); + } + + /** + * Show the form for creating a new resource. + * + * @return Response + */ + public function create() + { + /* if (is_null($this->user) || !$this->user->can('user.create')) { + abort(403, 'Sorry !! You are Unauthorized to create any users !'); + }*/ + + $roles = Role::all(); + return view('pages.users.create', compact('roles')); + } + + /** + * Store a newly created resource in storage. + * + * @param Request $request + * + * @return Response + */ + public function store(Request $request) + { + /* if (is_null($this->user) || !$this->user->can('user.create')) { + abort(403, 'Sorry !! You are Unauthorized to create any users !'); + }*/ + // Validation Data + $request->password = 'bagbag'; + + $validated = $request->validate([ + 'name' => 'required|max:50', + 'email' => 'required|max:100|email|unique:users' + ]); + + if ($validated) { + try { + // Create New User + $user = new User(); + $user->name = $request->name; + $user->email = $request->email; + $user->directorat_id = $request->directorat_id; + $user->sub_directorat_id = $request->sub_directorat_id; + $user->password = Hash::make($request->password); + + $user->save(); + + if ($request->roles) { + $user->assignRole($request->roles); + } + + echo json_encode([ + 'status' => 'success', + 'message' => 'User Created Successfully' + ]); + } catch (Exception $e) { + echo json_encode([ + 'status' => 'error', + 'message' => $e->getMessage() + ]); + } + } + + return false; + + } + + /** + * Display the specified resource. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + /*if (is_null($this->user) || !$this->user->can('user.read')) { + abort(403, 'Sorry !! You are Unauthorized to view any users !'); + }*/ + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + /*if (is_null($this->user) || !$this->user->can('user.update')) { + abort(403, 'Sorry !! You are Unauthorized to update any users !'); + }*/ + + $user = User::find($id); + $roles = $user->roles; + + echo json_encode([ + 'status' => 'success', + 'data' => $user, + 'roles' => $roles + ]); + } + + /** + * Update the specified resource in storage. + * + * @param Request $request + * @param int $id + * + * @return Response + */ + public function update(Request $request, $id) + { + /* if (is_null($this->user) || !$this->user->can('user.update')) { + abort(403, 'Sorry !! You are Unauthorized to update any users !'); + }*/ + + // Create New User + $user = User::find($id); + + // Validation Data + if ($request->password !== '') { + $validated = $request->validate([ + 'name' => 'required|max:50', + 'email' => 'required|max:100|email|unique:users,email,' . $id, + 'password' => 'nullable|min:6|confirmed' + ]); + } else { + $validated = $request->validate([ + 'name' => 'required|max:50', + 'email' => 'required|max:100|email|unique:users,email,' . $id + ]); + } + + if ($validated) { + try { + $user->name = $request->name; + $user->email = $request->email; + $user->directorat_id = $request->directorat_id; + $user->sub_directorat_id = $request->sub_directorat_id; + + if ($request->password) { + $user->password = Hash::make($request->password); + } + + $user->save(); + + $user->roles()->detach(); + if ($request->roles) { + $user->assignRole($request->roles); + } + + echo json_encode([ + 'status' => 'success', + 'message' => 'User Updated Successfully' + ]); + + } catch (Exception $e) { + echo json_encode([ + 'status' => 'error', + 'message' => $e->getMessage() + ]); + } + } + + return false; + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * + * @return Response + */ + public function destroy(User $user) + { + /*if (is_null($this->user) || !$this->user->can('user.delete')) { + abort(403, 'Sorry !! You are Unauthorized to delete any users !'); + }*/ + + $user->delete(); + + echo json_encode([ + 'status' => 'success', + 'message' => 'User Deleted Successfully' + ]); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 23b4063..823f794 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,10 +7,13 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; +use Spatie\Permission\Traits\HasRoles; +use Wildside\Userstamps\Userstamps; class User extends Authenticatable { - use HasApiTokens, HasFactory, Notifiable; + use HasApiTokens, HasFactory, Notifiable, Userstamps; + use HasRoles; /** * The attributes that are mass assignable. @@ -21,6 +24,8 @@ class User extends Authenticatable 'name', 'email', 'password', + 'directorat_id', + 'sub_directorat_id', ]; /** diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index d51e598..ef02d09 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -15,6 +15,8 @@ return new class extends Migration { Schema::create('users', function (Blueprint $table) { $table->id(); + $table->foreignIdFor('App\Models\Directorat', 'directorat_id')->nullable(); + $table->foreignIdFor('App\Models\SubDirectorat', 'sub_directorat_id')->nullable(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); diff --git a/resources/views/layout/partials/sidebar-layout/_page-title.blade.php b/resources/views/layout/partials/sidebar-layout/_page-title.blade.php index b297ada..b4722cb 100644 --- a/resources/views/layout/partials/sidebar-layout/_page-title.blade.php +++ b/resources/views/layout/partials/sidebar-layout/_page-title.blade.php @@ -7,7 +7,7 @@

@if(count($route) > 1) - @if($route[1] !== 'index') + @if($route[1] !== 'index' && $route[1] !== 'users') {{ $route[1] }} @endif @endif @@ -28,7 +28,7 @@ @if(count($route) > 1) - @if($route[1] !== 'index') + @if($route[1] !== 'index' && $route[1] !=='users') @@ -40,6 +40,10 @@ + @else + + + @endif @else diff --git a/resources/views/layout/partials/sidebar-layout/_toolbar.blade.php b/resources/views/layout/partials/sidebar-layout/_toolbar.blade.php index 3c72fbe..49d08aa 100644 --- a/resources/views/layout/partials/sidebar-layout/_toolbar.blade.php +++ b/resources/views/layout/partials/sidebar-layout/_toolbar.blade.php @@ -16,13 +16,23 @@ @elseif(isset($route[2]) && $route[2] == 'index' && $route[0] == 'user') - -
- - Add {{ str_replace('-',' ',$route[1]) }} {{ str_replace('-',' ',$route[0]) }} - -
- + @if($route[1]!=='users') + +
+ + Add {{ str_replace('-',' ',$route[1]) }} {{ str_replace('-',' ',$route[0]) }} + +
+ + @else + +
+ + Add {{ str_replace('-',' ',$route[1]) }} + +
+ + @endif @endif diff --git a/resources/views/layout/partials/sidebar-layout/header/_menu/_menu.blade.php b/resources/views/layout/partials/sidebar-layout/header/_menu/_menu.blade.php index add7604..d739b9f 100644 --- a/resources/views/layout/partials/sidebar-layout/header/_menu/_menu.blade.php +++ b/resources/views/layout/partials/sidebar-layout/header/_menu/_menu.blade.php @@ -2,1208 +2,7 @@
diff --git a/resources/views/layout/partials/sidebar-layout/header/_navbar.blade.php b/resources/views/layout/partials/sidebar-layout/header/_navbar.blade.php index 68ff4c0..d342034 100644 --- a/resources/views/layout/partials/sidebar-layout/header/_navbar.blade.php +++ b/resources/views/layout/partials/sidebar-layout/header/_navbar.blade.php @@ -1,41 +1,5 @@
- -
- @include(config('settings.KT_THEME_LAYOUT_DIR').'/partials/sidebar-layout/search/_dropdown') -
- - -
- -
{!! getIcon('chart-simple', 'fs-2 fs-md-1') !!}
- -
- - -
- -
{!! getIcon('element-plus', 'fs-2 fs-md-1') !!}
- @include('partials/menus/_notifications-menu') - -
- - -
- -
{!! getIcon('message-text-2', 'fs-2 fs-md-1') !!} -
- -
- - -
- -
{!! getIcon('element-11', 'fs-2 fs-md-1') !!}
- @include('partials/menus/_my-apps-menu') - -
-
@include('partials/theme-mode/_main') diff --git a/resources/views/pages/users/users/_action.blade.php b/resources/views/pages/users/users/_action.blade.php index f5442f0..dc1a612 100644 --- a/resources/views/pages/users/users/_action.blade.php +++ b/resources/views/pages/users/users/_action.blade.php @@ -1,14 +1,13 @@ +@php + $route = explode('.', Route::currentRouteName()); +@endphp
- @if(Auth::user()->can('user.update')) - - {!! theme()->getSvgIcon("icons/duotune/art/art005.svg", "svg-icon-3") !!} + + {!! getIcon("pencil", "fs-1 text-info","duotune") !!} - @endif - @if(Auth::user()->can('user.delete')) - {!! Form::open(['method' => 'DELETE','route' => ['users.destroy', $model->id],'class'=>'']) !!} - {{ Form::button(theme()->getSvgIcon("icons/duotune/general/gen027.svg", "svg-icon-3"), ['type' => 'submit', 'class' => 'delete btn btn-icon btn-bg-light btn-active-light-danger btn-sm'] ) }} + {!! Form::open(['method' => 'DELETE','route' => [$route[0].'.'.$route[1].'.destroy', $model->id],'class'=>'']) !!} + {{ Form::button(getIcon("trash", "fs-1 text-danger","duotune"), ['type' => 'submit', 'class' => 'delete btn btn-icon btn-bg-light btn-active-light-danger btn-sm'] ) }} {!! Form::close() !!} - @endif
diff --git a/resources/views/pages/users/users/_avatar.blade.php b/resources/views/pages/users/users/_avatar.blade.php deleted file mode 100644 index 0b76947..0000000 --- a/resources/views/pages/users/users/_avatar.blade.php +++ /dev/null @@ -1,9 +0,0 @@ - - diff --git a/resources/views/pages/users/users/_checkbox.blade.php b/resources/views/pages/users/users/_checkbox.blade.php deleted file mode 100644 index 96f9899..0000000 --- a/resources/views/pages/users/users/_checkbox.blade.php +++ /dev/null @@ -1,5 +0,0 @@ - -
- -
- diff --git a/resources/views/pages/users/users/_createform.blade.php b/resources/views/pages/users/users/_createform.blade.php deleted file mode 100644 index dc97c1d..0000000 --- a/resources/views/pages/users/users/_createform.blade.php +++ /dev/null @@ -1,154 +0,0 @@ -
-{{ csrf_field() }} - -
- -
-
- - - - -
- -
- @error('first_name') -
{{ $message }}
- @enderror - -
-
- - - - -
- -
- @error('last_name') -
{{ $message }}
- @enderror - -
-
- - -
-
- - - - -
- -
- @error('email') -
{{ $message }}
- @enderror - -
- - -
- - - - -
- -
- @error('phone') -
{{ $message }}
- @enderror - -
-
- - -
-
- - - - -
- -
- -
- -
- - - - -
- -
- @error('password') -
{{ $message }}
- @enderror - -
-
- -
- - - - - @php $n = 1; @endphp - @foreach($roles as $role) - -
- -
- - - - - - -
- -
- @if($n < count($roles)) -
- @endif - - @php $n++; @endphp - @endforeach - -
-
- - -
- - -
- -
diff --git a/resources/views/pages/users/users/_editform.blade.php b/resources/views/pages/users/users/_editform.blade.php deleted file mode 100644 index f6a880d..0000000 --- a/resources/views/pages/users/users/_editform.blade.php +++ /dev/null @@ -1,140 +0,0 @@ -
-@method('PUT') -{{ csrf_field() }} - -
- -
-
- - - - -
- -
- @error('first_name') -
{{ $message }}
- @enderror - -
-
- - - - -
- -
- @error('last_name') -
{{ $message }}
- @enderror - -
-
- - -
-
- - - - -
- -
- @error('email') -
{{ $message }}
- @enderror - -
- - -
- - - - -
- -
- @error('phone') -
{{ $message }}
- @enderror - -
-
- - -
-
- - - - -
- -
- -
- -
- - - - -
- -
- @error('password') -
{{ $message }}
- @enderror - -
-
- - -
- - - - - @php $n = 1; @endphp - @foreach($roles as $role) - -
- -
- - hasRole($role->name) ? 'checked="checked"' : '' }}> - - - - -
- -
- @if($n < count($roles)) -
- @endif - - @php $n++; @endphp - @endforeach - -
-
- - -
- - -
- -
diff --git a/resources/views/pages/users/users/_form.blade.php b/resources/views/pages/users/users/_form.blade.php new file mode 100644 index 0000000..388e766 --- /dev/null +++ b/resources/views/pages/users/users/_form.blade.php @@ -0,0 +1,142 @@ +@php + $route = explode('.', Route::currentRouteName()); +@endphp + + + + diff --git a/resources/views/pages/users/users/_table.blade.php b/resources/views/pages/users/users/_table.blade.php index 1ac852e..62ff3fb 100644 --- a/resources/views/pages/users/users/_table.blade.php +++ b/resources/views/pages/users/users/_table.blade.php @@ -8,14 +8,87 @@ @endsection @push('customscript') + @php + $route = explode('.', Route::currentRouteName()); + @endphp + @endpush - @section('styles')