From 78e6e30a607e53347074f7724d449a771056c8a2 Mon Sep 17 00:00:00 2001 From: Zelda Ababil <zeldaababil01@gmail.com> Date: Thu, 1 Feb 2024 13:04:06 +0700 Subject: [PATCH] role --- .../Admins/Users/RoleController.php | 36 ++-- .../Admins/Users/UserController.php | 101 +++++---- resources/views/components/navbar.blade.php | 1 + .../views/pages/admin/roles/create.blade.php | 70 ++++--- .../views/pages/admin/roles/edit.blade.php | 69 ++++--- .../views/pages/admin/roles/index.blade.php | 105 +++++----- .../views/pages/admin/users/index.blade.php | 191 +++++++----------- 7 files changed, 273 insertions(+), 300 deletions(-) diff --git a/app/Http/Controllers/Admins/Users/RoleController.php b/app/Http/Controllers/Admins/Users/RoleController.php index cd3eeeb..202d25f 100644 --- a/app/Http/Controllers/Admins/Users/RoleController.php +++ b/app/Http/Controllers/Admins/Users/RoleController.php @@ -29,7 +29,7 @@ class RoleController extends Controller // call table user with pagination $datas = Role::latest()->paginate(10); - return view('pages.admins.roles.index', compact('datas')); + return view('pages.admin.roles.index', compact('datas')); } /** @@ -38,7 +38,7 @@ class RoleController extends Controller public function create() { $permissions = Permission::all()->groupBy('group_name'); - return view('pages.admins.roles.create', compact('permissions')); + return view('pages.admin.roles.create', compact('permissions')); } /** @@ -48,36 +48,28 @@ class RoleController extends Controller { // validation $rules = array( - 'name' => 'required', - 'email' => 'required|email', - 'password' => 'required|min:8' + 'name' => 'required|unique:roles', + 'permission' => 'required|min:8', ); $validator = Validator::make($request->all(), $rules); // check validation if ($validator->fails()) { - return Redirect::to('admin/roles/create') + return Redirect::to('roles/create') ->withErrors($validator) ->withInput($request->except('password')); } else { // create new account - $user = Role::create([ - 'name' => $request->name, - 'email' => $request->email, - 'password' => bcrypt($request->password), - ]); - - // Create role for user - $role = Role::findOrFail($request->role); // Pengunjung - $user->assignRole($role); + $role = Role::create(['name' => $request->input('name')]); + $role->syncPermissions($request->get('permission')); // Create Session message Session::flash('roles-message', [ 'type' => 'success', - 'msg' => 'Anda berhasil menambahkan data!' + 'msg' => 'Berhasil menambah data!' ]); - return Redirect::to('admin/roles'); + return Redirect::to('roles'); } } @@ -100,7 +92,7 @@ class RoleController extends Controller $permissions = Permission::get()->groupBy('group_name'); // call view pages - return view('pages.admins.roles.edit', compact('role', 'permissions', 'rolePermissions')); + return view('pages.admin.roles.edit', compact('role', 'permissions', 'rolePermissions')); } /** @@ -110,14 +102,14 @@ class RoleController extends Controller { // validation $rules = array( - 'name' => 'required|min:5', + 'name' => 'required|unique:roles,name,' . $id . ',id', 'permission' => 'required|min:8', ); $validator = Validator::make($request->all(), $rules); // process the login if ($validator->fails()) { - return Redirect::to('admin/roles/edit/' . $id) + return Redirect::to('roles/edit/' . $id) ->withErrors($validator) ->withInput(); } else { @@ -129,10 +121,10 @@ class RoleController extends Controller // Create Session message Session::flash('roles-message', [ 'type' => 'success', - 'msg' => 'Anda berhasil mengubah data!' + 'msg' => 'Berhasil mengubah data!' ]); - return Redirect::to('admin/roles'); + return Redirect::to('roles'); } } diff --git a/app/Http/Controllers/Admins/Users/UserController.php b/app/Http/Controllers/Admins/Users/UserController.php index 5df0297..a6c254d 100644 --- a/app/Http/Controllers/Admins/Users/UserController.php +++ b/app/Http/Controllers/Admins/Users/UserController.php @@ -42,8 +42,8 @@ class UserController extends Controller }) ->addColumn('action', function ($users) { return ' - <button class="btn btn-sm btn-warning btn-edit-user" data-id=' . $users->id . '><i class="fas fa-edit"></i></button> - <button class="btn btn-sm btn-danger btn-hapus-user" data-id=' . $users->id . '><i class="fas fa-trash"></i></button> + <button class="btn btn-sm btn-warning btn-edit-user" data-user=' . $users . '><i class="fas fa-edit"></i></button> + <button class="btn btn-sm btn-danger btn-hapus-user" data-user=' . $users . '><i class="fas fa-trash"></i></button> '; }) ->addColumn('updated_atnya', function ($users) { @@ -130,45 +130,54 @@ class UserController extends Controller public function update(Request $request, string $id) { // validation - $rules = array( - 'name' => 'required|min:5', - 'password' => 'required|min:8', - ); - $validator = Validator::make($request->all(), $rules); + $validator = Validator::make($request->all(), [ + 'name_edit' => 'required', + 'email_edit' => 'required|email|unique:users,email,' . $id, + 'role_id_edit' => 'required' + ], [ + 'name_edit.required' => 'Nama tidak boleh kosong!', + 'email_edit.required' => 'Email tidak boleh kosong!', + 'email_edit.email' => 'Email tidak valid!', + 'email_edit.unique' => 'Email sudah terdaftar!', + 'role_id.required' => 'Role tidak boleh kosong!', + ]); - // process the login + // check validation if ($validator->fails()) { - return Redirect::to('admin/users/edit/' . $id) - ->withErrors($validator) - ->withInput($request->except('password')); - } else { + return ResponseFormatter::error($validator->errors()->first()); + } + + try { + DB::beginTransaction(); + // create new account $user = User::findOrFail($id); - if (!$user) { - // Create Session message - Session::flash('users-message', [ - 'type' => 'warning', - 'msg' => 'Data pengguna tidak ditemukan!' - ]); - - return Redirect::to('admin/users'); - } $user->update([ - 'name' => $request->name, - 'password' => bcrypt($request->password), + 'name' => $request->name_edit, + 'email' => $request->email_edit, ]); - // Update role for user - $user->removeRole($user->roles[0]->name); - $user->assignRole($request->role); + // Password change + if ($request->password_edit) { + $user->update([ + 'password' => bcrypt($request->password_edit), + ]); + } - // Create Session message - Session::flash('users-message', [ - 'type' => 'success', - 'msg' => 'Anda berhasil mengubah data!' - ]); + // Delete role for user + $user->roles()->detach(); - return Redirect::to('admin/users'); + // Assing role for user + foreach ($request->role_id_edit as $key => $value) { + $role = Role::findOrFail($value); // Pengunjung + $user->assignRole($role); + } + + DB::commit(); + return ResponseFormatter::success($user, "User berhasil diubah"); + } catch (\Throwable $th) { + DB::rollBack(); + return ResponseFormatter::error($th->getMessage()); } } @@ -177,29 +186,17 @@ class UserController extends Controller */ public function destroy(string $id) { - // get data from role - $role = Role::findOrFail($id); + // get data from user + $user = User::findOrFail($id); - // check role - if (!$role) { - // Create Session message - Session::flash('roles-message', [ - 'type' => 'warning', - 'msg' => 'Data pengguna tidak ditemukan!' - ]); - - return Redirect::to('admin/roles'); + // check user + if (!$user) { + return ResponseFormatter::error("Data pengguna tidak ditemukan!"); } - // delete role - $role->delete(); + // delete user + $user->delete(); - // Create Session message - Session::flash('roles-message', [ - 'type' => 'success', - 'msg' => 'Anda berhasil menghapus data!' - ]); - - return Redirect::to('admin/roles'); + return ResponseFormatter::success(null, "User berhasil dihapus!"); } } diff --git a/resources/views/components/navbar.blade.php b/resources/views/components/navbar.blade.php index d4fbe8c..dd51464 100644 --- a/resources/views/components/navbar.blade.php +++ b/resources/views/components/navbar.blade.php @@ -36,6 +36,7 @@ @can('users.index', auth()->user()) <li class="dropdown-divider"></li> <li><a href="{{ route('users.index') }}" class="dropdown-item">Setting User</a></li> + <li><a href="{{ route('roles.index') }}" class="dropdown-item">Setting Role</a></li> @endcan </ul> </li> diff --git a/resources/views/pages/admin/roles/create.blade.php b/resources/views/pages/admin/roles/create.blade.php index d37250d..909e3f2 100644 --- a/resources/views/pages/admin/roles/create.blade.php +++ b/resources/views/pages/admin/roles/create.blade.php @@ -1,36 +1,38 @@ -@extends('layouts.app') -@section('title', 'Tambah Roles Akses') -@section('content') - <!-- Breadcrumb --> - <div class="card bg-info-subtle shadow-none position-relative overflow-hidden mb-4"> - <div class="card-body px-4 py-3"> - <div class="row align-items-center"> - <div class="col-9"> - <h4 class="fw-semibold mb-8">Tambah Roles & Permission</h4> - <nav aria-label="breadcrumb"> - <ol class="breadcrumb"> - <li class="breadcrumb-item" aria-current="page"> - <a href="{{ URL::to('admin/roles') }}" class="badge text-bg-light text-primary"> - Kembali ke halaman sebelumnya - </a> - </li> - </ol> - </nav> +@extends('layouts.base') + +@section('content-header') + <div class="col-12"> + <div class="container" style="display: contents"> + <div class="row mb-2"> + <div class="col-sm-6"> + <h3 class="m-0"> Master Data</h3> + </div> + <div class="col-sm-6"> + <ol class="breadcrumb float-sm-right"> + <li class="breadcrumb-item"><a href="#">Home</a></li> + <li class="breadcrumb-item"><a href="#">Admin</a></li> + <li class="breadcrumb-item active">Tambah Roles</li> + </ol> </div> </div> </div> </div> - <!-- End Breadcrumb --> +@endsection - <div class="row d-flex align-items-strech"> - <div class="col-lg-12 mx-auto"> +@section('content') + <div class="col-lg-12 col-md-12 col-sm-12 mt-2"> + <div class="container" style="display: contents"> <div class="card"> - <div class="card-header d-flex align-items-center"> - <h4 class="card-title mb-0">Tambah Pengguna</h4> - <div class="card-actions cursor-pointer ms-auto d-flex button-group"> - <a href="{{ route('roles.refresh-routes') }}" class="btn btn-sm btn-secondary"> - <i class="ti ti-refresh"></i> refresh routes - </a> + <div class="card bg-warning" style="min-height:5px; border-radius:1px;"></div> + <div class="card-header mt-0 pt-0"> + <div class="d-flex"> + <h4>Tambah Role</h4> + <!-- Button trigger modal --> + <div class="ml-auto"> + <button type="button" class="btn btn-warning" href="{{ route('roles.refresh-routes') }}"> + Refresh Role + </button> + </div> </div> </div> <div class="card-body border-top"> @@ -55,10 +57,13 @@ <input type="text" class="form-control" placeholder="Role Name" name="name"> </div> </div> - <h5 for="permissions" class="form-label mt-3 mb-3">Assign Permissions</h5> - <h6 for="permissions" class="form-label mt-3 mb-3">Check All Permission <input type="checkbox" - name="all_permission" class="check" id="allpermission"></h6> - + <span> + <h5 for="permissions" class="form-label mt-3 mb-3">Assign Permissions + </h5> + <h6 for="permissions" class="form-label mt-3 mb-3">Check All Permission + <input type="checkbox" name="all_permission" class="check" id="allpermission"> + </h6> + </span> <div class="row"> @foreach ($permissions as $key => $permission) <div class="col-md-4"> @@ -102,8 +107,7 @@ </div> </div> </div> -@stop - +@endsection @push('scripts') <script> $('input[type="checkbox"].check').on('change', function() { diff --git a/resources/views/pages/admin/roles/edit.blade.php b/resources/views/pages/admin/roles/edit.blade.php index 67121c9..64cdab5 100644 --- a/resources/views/pages/admin/roles/edit.blade.php +++ b/resources/views/pages/admin/roles/edit.blade.php @@ -1,36 +1,38 @@ -@extends('layouts.app') -@section('title', 'Edit Roles Akses') -@section('content') - <!-- Breadcrumb --> - <div class="card bg-info-subtle shadow-none position-relative overflow-hidden mb-4"> - <div class="card-body px-4 py-3"> - <div class="row align-items-center"> - <div class="col-9"> - <h4 class="fw-semibold mb-8">Edit Roles & Permission</h4> - <nav aria-label="breadcrumb"> - <ol class="breadcrumb"> - <li class="breadcrumb-item" aria-current="page"> - <a href="{{ URL::to('admin/roles') }}" class="badge text-bg-light text-primary"> - Kembali ke halaman sebelumnya - </a> - </li> - </ol> - </nav> +@extends('layouts.base') + +@section('content-header') + <div class="col-12"> + <div class="container" style="display: contents"> + <div class="row mb-2"> + <div class="col-sm-6"> + <h3 class="m-0"> Master Data</h3> + </div> + <div class="col-sm-6"> + <ol class="breadcrumb float-sm-right"> + <li class="breadcrumb-item"><a href="#">Home</a></li> + <li class="breadcrumb-item"><a href="#">Admin</a></li> + <li class="breadcrumb-item active">Edit Roles</li> + </ol> </div> </div> </div> </div> - <!-- End Breadcrumb --> +@endsection - <div class="row d-flex align-items-strech"> - <div class="col-lg-12 mx-auto"> +@section('content') + <div class="col-lg-12 col-md-12 col-sm-12 mt-2"> + <div class="container" style="display: contents"> <div class="card"> - <div class="card-header d-flex align-items-center"> - <h4 class="card-title mb-0">Edit Pengguna</h4> - <div class="card-actions cursor-pointer ms-auto d-flex button-group"> - <a href="{{ route('roles.refresh-routes') }}" class="btn btn-sm btn-secondary"> - <i class="ti ti-refresh"></i> refresh routes - </a> + <div class="card bg-warning" style="min-height:5px; border-radius:1px;"></div> + <div class="card-header mt-0 pt-0"> + <div class="d-flex"> + <h4>Edit Role</h4> + <!-- Button trigger modal --> + <div class="ml-auto"> + <button type="button" class="btn btn-warning" href="{{ route('roles.refresh-routes') }}"> + Refresh Role + </button> + </div> </div> </div> <div class="card-body border-top"> @@ -56,10 +58,13 @@ value="{{ $role->name }}"> </div> </div> - <h5 for="permissions" class="form-label mt-3 mb-3">Assign Permissions</h5> - <h6 for="permissions" class="form-label mt-3 mb-3">Check All Permission <input type="checkbox" - name="all_permission" class="check" id="allpermission"></h6> - + <span> + <h5 for="permissions" class="form-label mt-3 mb-3">Assign Permissions + </h5> + <h6 for="permissions" class="form-label mt-3 mb-3">Check All Permission + <input type="checkbox" name="all_permission" class="check" id="allpermission"> + </h6> + </span> <div class="row"> @foreach ($permissions as $key => $permission) <div class="col-md-4"> @@ -105,7 +110,7 @@ </div> </div> </div> -@stop +@endsection @push('scripts') <script> diff --git a/resources/views/pages/admin/roles/index.blade.php b/resources/views/pages/admin/roles/index.blade.php index e8216c6..a8dc7d4 100644 --- a/resources/views/pages/admin/roles/index.blade.php +++ b/resources/views/pages/admin/roles/index.blade.php @@ -1,54 +1,48 @@ -@extends('layouts.app') -@section('title', 'Hak Akses Pengguna') -@section('content') - <!-- Breadcrumb --> - <div class="card bg-info-subtle shadow-none position-relative overflow-hidden mb-4"> - <div class="card-body px-4 py-3"> - <div class="row align-items-center"> - <div class="col-9"> - <h4 class="fw-semibold mb-8">Hak Akes Pengguna</h4> - <nav aria-label="breadcrumb"> - <ol class="breadcrumb"> - <li class="breadcrumb-item"> - <a class="text-muted text-decoration-none" href="./index.html">User Management</a> - </li> - <li class="breadcrumb-item" aria-current="page">Data Roles & Permission</li> - </ol> - </nav> +@extends('layouts.base') + +@section('content-header') + <div class="col-12"> + <div class="container" style="display: contents"> + <div class="row mb-2"> + <div class="col-sm-6"> + <h3 class="m-0"> Master Data</h3> + </div> + <div class="col-sm-6"> + <ol class="breadcrumb float-sm-right"> + <li class="breadcrumb-item"><a href="#">Home</a></li> + <li class="breadcrumb-item"><a href="#">Admin</a></li> + <li class="breadcrumb-item active">Roles</li> + </ol> </div> </div> </div> </div> - <!-- End Breadcrumb --> +@endsection - <div class="row"> - <div class="col-lg-12 d-flex align-items-stretch"> - <div class="card w-100"> - <div class="card-body p-4"> - <div class="d-flex align-items-stretch"> - <h5 class="card-title fw-semibold mb-4">Tabel Roles</h5> - <div class="d-inline ms-auto"> - <a href="{{ route('roles.create') }}" class="btn btn-sm btn-success"> - <i class="ti ti-user-plus"></i> Tambah - </a> +@section('content') + <div class="col-lg-12 col-md-12 col-sm-12 mt-2"> + <div class="container" style="display: contents"> + <div class="card"> + <div class="card bg-warning" style="min-height:5px; border-radius:1px;"></div> + <div class="card-header mt-0 pt-0"> + <div class="d-flex"> + <h4>Daftar Role</h4> + <!-- Button trigger modal --> + <div class="ml-auto"> + <a href="{{ route('roles.create') }}" class="btn btn-sm btn-primary"><i class="ti ti-edit"></i> + Tambah Role</a> </div> </div> - <div class="table-responsive"> - <table class="table table-hover table-bordered text-nowrap mb-0 align-middle"> - <thead class="text-dark fs-4"> + </div> + <div class="card-body"> + <div class="table-responsive mt-3"> + <table id="tabelku" class="table table-hover display" style="width: 100%"> + <thead> <tr> - <th class="border-bottom-0" width="70px"> - <h6 class="fw-semibold mb-0 text-center">No.</h6> - </th> - <th class="border-bottom-0"> - <h6 class="fw-semibold mb-0">Name</h6> - </th> - <th class="border-bottom-0"> - <h6 class="fw-semibold mb-0">Terakhir Diupdate</h6> - </th> - <th class="border-bottom-0" width="100px"> - <h6 class="fw-semibold mb-0 text-center">Action</h6> - </th> + <th class="text-center">No</th> + <th>Nama Role</th> + <th>Terakhir Diupdate</th> + <th class="text-center"><i class="fas fa-cog"></i></th> </tr> </thead> <tbody> @@ -66,16 +60,17 @@ <td class="border-bottom-0"> <h6 class="fw-normal mb-0 fs-4">{{ $role->updated_at }}</h6> </td> - <td class="border-bottom-0"> - <div class="d-flex align-items-center gap-2"> + <td class="border-bottom-0 text-center"> + <div class="d-flex align-items-center gap-2 text-center" + style="justify-content: center"> <a href="{{ route('roles.edit', $role->id) }}" - class="btn btn-sm btn-primary"><i class="ti ti-edit"></i> Ubah</a> + class="btn btn-sm btn-warning"><i class="ti ti-edit"></i> Ubah</a> </div> </td> </tr> @empty <div class="alert alert-danger"> - Data Post belum Tersedia. + Data Belum Tersedia. </div> @endforelse </tbody> @@ -85,5 +80,19 @@ </div> </div> </div> +@endsection -@stop +@push('styles') + <!-- Toastr --> + <link rel="stylesheet" href="{{ asset('assets/plugins/toastr/toastr.min.css') }}"> +@endpush +@push('scripts') + <!-- Toastr --> + <script src="{{ asset('assets/plugins/toastr/toastr.min.js') }}"></script> + <script> + // show toast + @if (Session::has('roles-message')) + toastr.{{ Session::get('roles-message.type') }}("{{ Session::get('roles-message.msg') }}") + @endif + </script> +@endpush diff --git a/resources/views/pages/admin/users/index.blade.php b/resources/views/pages/admin/users/index.blade.php index 6e119f7..7c3b6d4 100644 --- a/resources/views/pages/admin/users/index.blade.php +++ b/resources/views/pages/admin/users/index.blade.php @@ -118,7 +118,7 @@ </button> </div> <div class="modal-body"> - <form id="form-edit-user" method="post" enctype="multipart/form-data"> + <form id="form-edit-user" method="put" enctype="multipart/form-data"> @csrf <div class="form-group"> <label for="user-name-edit" class="col-form-label">Nama User:</label> @@ -131,14 +131,14 @@ <div class="form-group"> <label for="password-input_edit" class="col-form-label">Password User:</label> <input type="text" class="form-control" id="password-input_edit" name="password_edit" - placeholder="Kosongkan jika tidak ingin mengubah password" required> + placeholder="Kosongkan jika tidak ingin mengubah password"> </div> <div class="form-group" id="password_confirm_edit" style="display: none"> <label for="konfirmasi-password-input_edit" class="col-form-label">Konfirmasi Password User:</label> <input type="text" class="form-control" id="konfirmasi-password-input_edit" placeholder="Kosongkan jika tidak ingin mengubah password" - name="password_confirmation_edit" required> + name="password_confirmation_edit"> </div> <div class="form-group"> <label for="role-text" class="col-form-label">Role:</label> @@ -171,42 +171,11 @@ </button> </div> <div class="modal-body"> - {{-- <form id="form-tambah-user" method="post" enctype="multipart/form-data"> - @csrf - <div class="form-group"> - <label for="user-name" class="col-form-label">Nama User:</label> - <input type="text" class="form-control" id="user-name" name="name" required> - </div> - <div class="form-group"> - <label for="email-name" class="col-form-label">Email User:</label> - <input type="text" class="form-control" id="email-name" name="email" required> - </div> - <div class="form-group"> - <label for="password-input" class="col-form-label">Password User:</label> - <input type="text" class="form-control" id="password-input" name="password" required> - </div> - <div class="form-group"> - <label for="konfirmasi-password-input" class="col-form-label">Konfirmasi Password - User:</label> - <input type="text" class="form-control" id="konfirmasi-password-input" - name="password_confirmation" required> - </div> - <div class="form-group"> - <label for="role-text" class="col-form-label">Role:</label> - <div class="form-group select2-primary"> - <select class="select2" multiple="multiple" data-placeholder="Pilih role user" required - name="role_id[]" style="width: 100%;"> - @foreach ($roles as $item) - <option value="{{ $item->id }}">{{ $item->name }}</option> - @endforeach - </select> - </div> - </div> - <div class="modal-footer justify-content-between"> - <button type="button" class="btn btn-default" data-dismiss="modal">Batal</button> - <button type="submit" class="btn btn-primary" id="simpan-form-tambah">Simpan</button> - </div> - </form> --}} + <p id="title-terhapus">…</p> + </div> + <div class="modal-footer justify-content-between"> + <button type="button" class="btn btn-default" data-dismiss="modal">Batal</button> + <button type="button" class="btn btn-danger button-hapus">Hapus</button> </div> </div> </div> @@ -307,6 +276,16 @@ } }) + $('#konfirmasi-password-input_edit').on('keyup', function() { + if ($('#password-input_edit').val() == $('#konfirmasi-password-input_edit').val()) { + $('#konfirmasi-password-input_edit').removeClass('is-invalid') + $('#konfirmasi-password-input_edit').addClass('is-valid') + } else { + $('#konfirmasi-password-input_edit').removeClass('is-valid') + $('#konfirmasi-password-input_edit').addClass('is-invalid') + } + }) + $(document).ready(function() { // ajax tambah user @@ -335,89 +314,75 @@ // ajax edit user $(document).on('click', '.btn-edit-user', function() { - var id = $(this).attr('data-id') + var data = JSON.parse($(this).attr('data-user')); + $('#user-name_edit').val(data.name) + $('#user-email_edit').val(data.email) + $('.edit_select2').val(data.role.map(x => x.id)).trigger('change') + $('#modal-default-edit').modal('show') + $('#form-edit-user').on('submit', function(e) { + // disable button submit + $('#simpan-form-tambah').attr('disabled', true) + + e.preventDefault(); + $.ajax({ + url: "{{ url('users/update') }}" + '/' + data.id, + type: "PUT", + dataType: "json", + data: $(this).serialize(), + cache: false, + async: false, + success: function(response) { + // enable button submit on interval 1 detik + setTimeout(function() { + $('#simpan-form-tambah').attr('disabled', false) + }, 500); + toastr.success(response.meta.message) + $('#modal-default-edit').modal('hide') + $('#form-edit-user')[0].reset() + $('.edit_select2').val(null).trigger('change') + $('#konfirmasi-password-input_edit').removeClass('is-valid') + $('#tabelku').DataTable().ajax.reload() + }, + error: function(response) { + // enable button submit on interval 1 detik + setTimeout(function() { + $('#simpan-form-tambah').attr('disabled', false) + }, 500); + toastr.error(response.responseJSON.meta.message) + } + }) + }) + }) + + // ajax hapus user + $(document).on('click', '.btn-hapus-user', function() { + var data = JSON.parse($(this).attr('data-user')); + var dataAppend = '<p>Apakah anda yakin ingin menghapus user <b>' + data.name + + '</b> email <b>' + + data.email + '</b> ?</p>'; + $('#title-terhapus').html(dataAppend); + $('.button-hapus').attr('data-id', data.id); + $('#modal-default-hapus').modal('show'); + }) + + $(document).on('click', '.button-hapus', function() { + var id = $(this).attr('data-id'); $.ajax({ - url: "{{ url('users') }}" + '/' + id + '/edit', - type: "GET", + url: "{{ url('users/delete') }}" + '/' + id, + type: "DELETE", dataType: "json", + cache: false, + async: false, success: function(response) { - console.log(response); - var user = response.data.user; - $('#modal-default-edit').modal('show') - $('#user-name_edit').val(user.name) - $('#user-email_edit').val(user.email) - - // set value select2 - var roles = user.role; - var role_id = []; - $.each(roles, function(key, value) { - role_id.push(value.id) - }) - $('.edit_select2').val(role_id).trigger('change') - - $('#form-edit-user').on('submit', function(e) { - e.preventDefault(); - $.ajax({ - url: "{{ url('users') }}" + '/' + id, - type: "POST", - dataType: "json", - data: $(this).serialize(), - cache: false, - async: false, - success: function(response) { - toastr.success(response.meta.message) - $('#modal-default-edit').modal('hide') - $('#form-edit-user')[0].reset() - $('.edit_select2').val(null).trigger( - 'change') - $('#konfirmasi-password-input_edit') - .removeClass('is-valid') - $('#tabelku').DataTable().ajax.reload() - }, - error: function(response) { - toastr.error(response.responseJSON.meta - .message) - } - }) - }) + toastr.success(response.meta.message) + $('#modal-default-hapus').modal('hide') + $('#tabelku').DataTable().ajax.reload() }, error: function(response) { toastr.error(response.responseJSON.meta.message) } }) }) - - // ajax hapus user - $(document).on('click', '.btn-hapus-user', function() { - var id = $(this).attr('data-id') - Swal.fire({ - title: 'Apakah anda yakin?', - text: "Data user akan dihapus secara permanen!", - icon: 'warning', - showCancelButton: true, - confirmButtonColor: '#007bff', - cancelButtonColor: '#dc3545', - confirmButtonText: 'Ya, hapus!', - cancelButtonText: 'Batal' - }).then((result) => { - if (result.isConfirmed) { - $.ajax({ - url: "{{ url('admin/users') }}" + '/' + id, - type: "POST", - data: { - '_method': 'DELETE' - }, - success: function(response) { - toastr.success(response.meta.message) - $('#tabelku').DataTable().ajax.reload() - }, - error: function(response) { - toastr.error(response.responseJSON.meta.message) - } - }) - } - }) - }) }) </script> @endpush