Commit 679f4249 by Triyah Fatmawati

CRUD Master User

parent 1dfe0c6e
......@@ -70,6 +70,8 @@ public function update(Request $request, $id){
DB::beginTransaction();
try{
$id = decrypt($id);
$kategori = [
'kode_kategori' => strip_tags($request->kodekategori),
'nama_kategori' => strip_tags($request->namakategori),
......@@ -94,6 +96,8 @@ public function update(Request $request, $id){
}
public function destroy($id) {
$id = decrypt($id);
DB::beginTransaction();
try{
......@@ -102,14 +106,14 @@ public function destroy($id) {
DB::commit();
return Redirect::route('kategori.index')
->with('success', 'Data kategori berhasil diupdate');
->with('success', 'Data kategori berhasil dihapus');
}
catch(Exception $e){
Log::error($e);
DB::rollBack();
return Redirect::route('kategori.index')
->with('error', 'Data kategori gagal diupdate');
->with('error', 'Data kategori gagal dihapus');
}
}
}
......@@ -3,9 +3,128 @@
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Support\ValidationRule;
use App\Models\Admin\User;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect;
class UserController extends Controller
{
//
public function index(){
$user = User::query()->get();
$data = [
'user' => $user
];
return view('Admin.User.index', $data);
}
public function store(Request $request){
$rule = [
'name' => 'required|string',
'email' => 'required|email:rfc,dns',
'password' => 'required|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/|min:8',
];
$request->validate($rule, ValidationRule::getErrorMessage($rule));
DB::beginTransaction();
try{
$user = [
'name' => strip_tags($request->name),
'email' => strip_tags($request->email),
'password' => strip_tags($request->password),
];
User::query()->create($user);
DB::commit();
return Redirect::route('user.index')
->with('success', 'User berhasil ditambahkan');
}
catch(Exception $e){
Log::error($e);
DB::rollBack();
return Redirect::route('user.index')
->with('error', 'User gagal ditambahkan');
}
}
public function update(Request $request, $id){
$rule = [
'name' => 'required|string',
'email' => 'required|email:rfc,dns',
'passwordbaru' => 'required|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/|min:8',
'passwordlama' => 'required|string'
];
$request->validate($rule, ValidationRule::getErrorMessage($rule));
DB::beginTransaction();
try{
$id = decrypt($id);
$passwordbaru = Hash::make(strip_tags($request->passwordbaru));
$passwordlama = strip_tags($request->passwordlama);
$oldpassword = User::where('id', $id)->first();
// if (Hash::check($passwordlama, $oldpassword->password)) {
// // Passwords match
$user = [
'name' => strip_tags($request->name),
'email' => strip_tags($request->email),
'password' => $passwordbaru
];
User::where('id', $id)->update($user);
DB::commit();
return Redirect::route('user.index')
->with('success', 'User berhasil diupdate');
// } else {
// // Passwords do not match
// return Redirect::route('user.index')
// ->with('error', 'Password lama tidak valid');
// }
}
catch(Exception $e){
dd($e);
Log::error($e);
DB::rollBack();
return Redirect::route('user.index')
->with('error', 'User gagal diupdate');
}
}
public function destroy($id) {
$id = decrypt($id);
DB::beginTransaction();
try{
User::where('id', $id)->delete();
DB::commit();
return Redirect::route('user.index')
->with('success', 'User berhasil dihapus');
}
catch(Exception $e){
Log::error($e);
DB::rollBack();
return Redirect::route('user.index')
->with('error', 'User gagal dihapus');
}
}
}
......@@ -15,6 +15,7 @@ class ValidationRule{
'min' => 'tidak boleh kurang dari',
'before_or_equal' => 'maksimal hari ini',
'after_or_equal' => 'minimal hari ini',
'regex' => 'harus kombinasi huruf kapital, huruf kecil, angka, dan karakter'
];
public static function getErrorMessage($validationRules) {
......
......@@ -8,4 +8,16 @@
class User extends Model
{
use HasFactory;
public $incrementing = false;
protected $table = 'users';
protected $keyType = 'string';
protected $fillable = [
'id',
'name',
'email',
'password',
];
}
......@@ -55,7 +55,7 @@
<div class="modal fade" id="editKategoriModal{{$kat->id}}" tabindex="-1" aria-labelledby="tambahAntrian" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<form method="POST" action="{{ route('kategori.update', ['kategori' => $kat->id]) }}" enctype="multipart/form-data" id="registrasi">
<form method="POST" action="{{ route('kategori.update', ['kategori' => encrypt($kat->id)]) }}" enctype="multipart/form-data" id="registrasi">
@method('PUT')
@csrf
<div class="modal-header">
......@@ -108,7 +108,7 @@
<div class="modal fade" id="deleteKategoriModal{{$kat->id}}" tabindex="-1" aria-labelledby="tambahAntrian" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<form method="POST" action="{{ route('kategori.destroy', ['kategori' => $kat->id ]) }}" enctype="multipart/form-data">
<form method="POST" action="{{ route('kategori.destroy', ['kategori' => encrypt($kat->id) ]) }}" enctype="multipart/form-data">
@csrf
@method("DELETE")
<div class="modal-header">
......@@ -120,7 +120,7 @@
</div>
<div class="form-group" style="text-align: center">
<button type="submit" class="btn btn-primary ml-1">Delete</button>
<button type="button" class="btn btn-light-secondary" data-dismiss="modal">Cancel</button>
<button type="reset" class="btn btn-outline-secondary" data-bs-dismiss="modal" aria-label="Close">Cancel</button>
</div>
</div>
</form>
......
@extends('layouts.master')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="row layout-top-spacing" id="cancel-row">
<h5 class="card-header" style="padding-left: 35px">Daftar User</h5>
<div class="card-body">
<div class="row">
<div class="col-md-3" style="padding-left: 30px">
<button type="button" class="btn btn-primary text-right" data-bs-toggle="modal" data-bs-target="#addNewUserModal" >
Tambah User Admin
</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive text-nowrap">
<table class="table">
<thead class="table-light" align="center">
<tr>
<th>No.</th>
<th>Nama</th>
<th>Email</th>
<th>Aksi</th>
</tr>
</thead>
<tbody class="table-border-bottom-0">
@php
$no = 1;
@endphp
@foreach ($user as $data)
<tr style="text-align: center">
<td>{{ $no }}</td>
<td>{{ $data->name }}</td>
<td>{{ $data->email }}</td>
<td>
<button type="button" class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#editUserModal{{$data->id}}">Edit</button>
<button type="button" class="btn btn-danger btn-sm" data-bs-toggle="modal" data-bs-target="#deleteUserModal{{$data->id}}">Hapus</button>
</td>
</tr>
<!-- Modal Update User -->
<div class="modal fade" id="editUserModal{{$data->id}}" tabindex="-1" aria-labelledby="tambahAntrian" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<form method="POST" action="{{ route('user.update', ['user' => encrypt($data->id)]) }}" enctype="multipart/form-data" id="registrasi">
@method('PUT')
@csrf
<div class="modal-header">
<h1 class="address-title text-center mb-1" id="addNewUserTitle">Edit User</h1>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<label class="form-label" for="name">Nama</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Nama" data-msg="Masukkan Nama" value="{{$data->name}}" required />
@if ($errors->has('name'))
<label id="login-error" class="error" for="name" style="color: red">{{$errors->first('name')}}</label>
@endif
</div>
<div class="col-md-12">
<label class="form-label" for="email">Email</label>
<input type="email" id="email" name="email" class="form-control" placeholder="Email" data-msg="Masukkan Email" value="{{$data->email}}" required />
@if ($errors->has('email'))
<label id="login-error" class="error" for="email" style="color: red">{{$errors->first('email')}}</label>
@endif
</div>
</div>
<hr>
<div class="row">
<div class="col-md-12">
<label class="form-label" for="passwordlama">Password Lama</label>
<input type="password" id="passwordlama" name="passwordlama" class="form-control" placeholder="Password Lama" data-msg="Masukkan Password Lama" required />
@if ($errors->has('passwordlama'))
<label id="login-error" class="error" for="passwordlama" style="color: red">{{$errors->first('passwordlama')}}</label>
@endif
</div>
<div class="col-md-12">
<label class="form-label" for="passwordbaru">Password Baru</label>
<input type="password" id="passwordbaru" name="passwordbaru" class="form-control" placeholder="Password Baru" data-msg="Masukkan Password Baru" required />
@if ($errors->has('passwordbaru'))
<label id="login-error" class="error" for="passwordbaru" style="color: red">{{$errors->first('passwordbaru')}}</label>
@endif
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" class="btn btn-outline-secondary" data-bs-dismiss="modal" aria-label="Close">Cancel</button>
</div>
</form>
</div>
</div>
</div>
<!-- End Modal Update User -->
<!-- Modal Delete User -->
<div class="modal fade" id="deleteUserModal{{$data->id}}" tabindex="-1" aria-labelledby="tambahAntrian" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<form method="POST" action="{{ route('user.destroy', ['user' => encrypt($data->id) ]) }}" enctype="multipart/form-data">
@csrf
@method("DELETE")
<div class="modal-header">
<h1 class="address-title text-center mb-1" id="addNewUserTitle">Hapus User</h1>
</div>
<div class="modal-body">
<div class="form-group" style="text-align: center">
<h5 class="address-title text-center mb-3 mt-1" id="addNewAddressTitle">Apakah anda yakin ingin menghapus User ini?</h5>
</div>
<div class="form-group" style="text-align: center">
<button type="submit" class="btn btn-primary ml-1">Delete</button>
<button type="reset" class="btn btn-outline-secondary" data-bs-dismiss="modal" aria-label="Close">Cancel</button>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- End Modal Delete User -->
@php
$no++;
@endphp
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Modal Tambah User -->
<div class="modal fade" id="addNewUserModal" tabindex="-1" aria-labelledby="tambahAntrian" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<form method="POST" action="{{ route('user.store') }}" enctype="multipart/form-data" id="registrasi">
@csrf
<div class="modal-header">
<h1 class="address-title text-center mb-1" id="addNewUserTitle">Tambah User</h1>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<label class="form-label" for="name">Nama</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Nama" data-msg="Masukkan Nama" value="" required />
@if ($errors->has('name'))
<label id="login-error" class="error" for="name" style="color: red">{{$errors->first('name')}}</label>
@endif
</div>
<div class="col-md-12">
<label class="form-label" for="email">Email</label>
<input type="email" id="email" name="email" class="form-control" placeholder="Email" data-msg="Masukkan Email" value="" required />
@if ($errors->has('email'))
<label id="login-error" class="error" for="email" style="color: red">{{$errors->first('email')}}</label>
@endif
</div>
</div>
<hr>
<div class="row">
<div class="col-md-12">
<label class="form-label" for="password">Password Baru</label>
<input type="password" id="password" name="password" class="form-control" placeholder="Password" data-msg="Masukkan Password" required />
@if ($errors->has('password'))
<label id="login-error" class="error" for="password" style="color: red">{{$errors->first('password')}}</label>
@endif
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" class="btn btn-outline-secondary" data-bs-dismiss="modal" aria-label="Close">Cancel</button>
</div>
</form>
</div>
</div>
</div>
<!-- End Modal Tambah User -->
</div>
@endsection
@push('js')
@endpush
......@@ -5,7 +5,7 @@
<ul class="dropdown-menu" data-bs-popper="none">
<li data-menu="" class="{{ (request()->getRequestUri() == "/kategori") ? 'active' : '' }}"><a href="{{route('kategori.index')}}" class="dropdown-item d-flex align-items-center" data-bs-toggle="" data-i18n="Email" ><i data-feather="grid"></i><span data-i18n="Email">Master Kategori</span></a>
</li>
<li data-menu="" class="{{ (request()->is('admin/dokter')) ? 'active' : '' }}"><a href="#" class="dropdown-item d-flex align-items-center" data-bs-toggle="" data-i18n="Email" ><i data-feather='user'></i><span data-i18n="Email">Master User</span></a>
<li data-menu="" class="{{ (request()->getRequestUri() == "/user") ? 'active' : '' }}"><a href="{{route('user.index')}}" class="dropdown-item d-flex align-items-center" data-bs-toggle="" data-i18n="Email" ><i data-feather='user'></i><span data-i18n="Email">Master User</span></a>
</li>
</ul>
</li>
......
......@@ -4,6 +4,7 @@
use App\Http\Controllers\Admin\KategoriController;
use App\Http\Controllers\Admin\TransaksiController;
use App\Http\Controllers\Admin\SakuController;
use App\Http\Controllers\Admin\UserController;
use Illuminate\Support\Facades\Route;
/*
......@@ -30,5 +31,6 @@
Route::resource('kategori', KategoriController::class);
Route::resource('transaksi', TransaksiController::class);
Route::resource('saku', SakuController::class);
Route::resource('user', UserController::class);
Route::get('/logout', [LoginController::class, 'logout'])->name('admin.logout');
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment