Lanjutan praktikum sebelumnya
buka vscode dimana disana membuka folder yang kemarin laravel-auth lalu ketikkan pada bagian terminal untuk menambahkan didalam controller berupa UserController.

selanjutkan tambahkan kode program berikut pada route web.
use App\Http\Controllers\UserController;
Route::resource('users', UserController::class);
Sehingga jika dilihat pemetaan route php artisan route:list menjadi seperti gambar di bawah ini.

File UserController Resource
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
Create Users
Route untuk menamilkan view form tambah data users adalah users/create silahkan buka file
UserController kemudian pada action create edit kode program menjadi seperti berikut.
public function create()
{
return view('user.create');
}
Perintah return view(‘user.create’) artinya menampilkan view create pada folder user,
selanjutnya buat folder user didalam folder view, kemudian tambahkan file create.blade.php
dan isikan dengan kode program berikut ini.


Selanjutnya tambahkan file css dan javascript select2 kedalam layout main.blade.php
<link href=https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

Selanjutnya membuat form inputan create user, silahkan edit user/create.blade.php menjadi seperti kode program berikut.
@extends('layouts.main')
@section("judul") Create User @endsection
@section('konten')
<div class="card shadow mb-4">
<div class="card-header py-3">
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-9">
<form method="POST" action="{{ route('users.store') }}">
@csrf
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Nama</label>
<div class="col-sm-9">
<input type="text" class="form-control"
id="nama" name="nama">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Email</label>
<div class="col-sm-9">
<input type="email" class="form-control"
id="email" name="email">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Username</label>
<div class="col-sm-9">
<input type="text" class="form-control"
id="username" name="username">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Password</label>
<div class="col-sm-2">
<input type="password" class="form-control"
id="password" name="password">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Level</label>
<div class="col-sm-4 mr-2">
<select class="form-control select2-multiple"
name="level[]" multiple="multiple">
<option value="ADMIN">ADMIN</option>
<option value="GURU">GURU</option>
<option value="STAFF">STAFF</option>
</select>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10 text-center">
<button type="reset" class="btn btn-warning btn
sm">Batal</button>
<button type="submit" class="btn btn-primary btn
sm">Simpan</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
Sehingga tampilan form inputan user menjadi seperti gambar dibawah ini.

Selanjutnya buka action store pada UserController kemudian isikan kode program berikut.

Penjelasan :
Form create user menggunakan method POST yang akan dikirimkan ke action store dengan route users.store, selanjutnya pada action store akan ditangkap isi form create user dengan cara $request->get(‘nama input’) kemudian disimpan pada table user dengan cara instance model User dengan cara $user = new \App\Models\User setelah itu assign sesuai dengan nama field. Untuk menyimpan kedalam database User menggunakan perintah $user->save, jika data berhasil disimpan akan di redirect ke route users.index dengan mebawa session status.
READ / LIST USERS
Selanjutnya setelah fungsi create selesai kita akan menampilkan data user, untuk menampilkan data user kita akan menggunakan method GET yaiitu http://localhost/users yang mana route ini merupakan action index pada UserController, buka action index kemudian edit menjadi seperti kode program berikut.

Selanjutnya buat fille dengan nama index.blade.php pada folder views/user dan isi dengen kode program berikut.
@extends('layouts.main')
@section("judul") Users @endsection
@section('konten')
@if(session('status'))
<div class="alert alert-success">
{{session('status')}}
</div>
@endif
<div class="card shadow mb-4">
<div class="card-header py-3">
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%"
cellspacing="0">
<thead>
<tr>
<th><b>Name</b></th>
<th><b>Username</b></th>
<th><b>Email</b></th>
<th><b>Action</b></th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{$user->name}}</td>
<td>{{$user->username}}</td>
<td>{{$user->email}}</td>
<td>
[action]
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection
Karena menggunakan datatables tambahkan file css datatable pada bahian head main.blade.php dan file js datatables pada bagian bawah main.blade.php.
<link href="{{ asset('sbadmin/vendor/datatables/dataTables.bootstrap4.min.css') }}" rel="stylesheet">
<script src="{{ asset('sbadmin/vendor/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('sbadmin/vendor/datatables/dataTables.bootstrap4.min.js') }}"></script>
<script src="{{ asset('sbadmin/js/demo/datatables-demo.js ') }}"></script>
Selanjutnya menambahkan button untuk membuka form tambah user seperti kode program berikut ke dalam index.blade.php

Sehingga tampilan list user menjadi seperti gambar dibawah ini.

UPDATE USERS
Selanjutnya untuk melakukan proses update data user terlebih dahulu kita buatkan tombol action yang mengarahkan pada route users/edit/{user}/edit atau action edit pada UserController untuk menamilkan form dan menggunakan route users/edit/{user} untuk method PUT. Pertama-tama kita akan membuat tombol edit pada tampilan list user, silahkan buka file user/index.blade.php pada kolom [action] ganti dengan kode berikut ini. Edit
Jika salah satu tombol diatas diklik maka akan menghasilkan string url http://localhost/users/{user}/edit yang mana {user} merupakan id dari user yang di klik. Selanjutnya buka action edit pada UserController dan isikan denga kode program berikut.

Kode diatas akan mengambil data user berdasarkan id user yang diidapatkan dan ditampung pada variable $user dan dikrimkan ke view user.edit, silahkan buat view didalam folder user/edit.blade.php dan isikan dengan kode program berikut.
@extends('layouts.main')
@section("judul") Edit User @endsection
@section('konten')
<div class="card shadow mb-4">
<div class="card-header py-3">
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-9">
<form method="POST" action="{{ route('users.update',
[$user->id]) }}">
<input type="hidden" name="_method" value="PUT">
@csrf
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Nama</label>
<div class="col-sm-9">
<input type="text" class="form-control"
id="nama" name="nama" value="{{ $user->name }}">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Email</label>
<div class="col-sm-9">
<input type="email" class="form-control"
id="email" name="email" value="{{ $user->email }}">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Username</label>
<div class="col-sm-9">
<input type="text" class="form-control"
id="username" name="username" value="{{ $user->username }}"
>
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label text
center">Level</label>
<div class="col-sm-4 mr-2">
<select class="form-control select2-multiple"
name="level[]" multiple="multiple">
<option value="ADMIN" {{in_array("ADMIN",
json_decode($user->level)) ? "selected" : ""}}>ADMIN</option>
<option value="GURU" {{in_array("GURU",
json_decode($user->level)) ? "selected" : ""}}>GURU</option>
<option value="STAFF" {{in_array("STAFF",
json_decode($user->level)) ? "selected" : ""}}>STAFF</option>
</select>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10 text-center">
<a href="{{ route('users.index') }}" class="btn
btn-warning btn-sm">Batal</a>
<button type="submit" class="btn btn-primary btn
sm">Simpan</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection

Selanjutnya buka action update pada UserController kemudian isikan dengan kode program berikut ini.

Selanjutnya kita akan mencoba melakukan perubahan data user.

Sehingga menampilkan gambar sepertidibawah ini

DELETE USERS
Tambahkan tombol atau link pada list user, silahkan buka view user/index.blade.php dan tambahkan kode program berikut dibawah link edit.
@foreach ($users as $user)
<tr>
<td>{{$user->name}}</td>
<td>{{$user->username}}</td>
<td>{{$user->email}}</td>
<td>
<a href="{{ route('users.edit', $user->id) }}" class="btn btn-sm btn-success">Edit</a>
<form onsubmit="return confirm('Hapus data user?')" class="d-inline" action="{{route('users.destroy', [$user->id])}}" method="POST">
@csrf
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="Hapus" class="btn btn-danger btn-sm">
</form>
</td>
</tr>
@endforeach
Keitka diklik salah satu tombol hapus maka akan muncul pop up dialog peringatan apakah data akan dihapus seperti gambar dibawah ini.

Jika kita tekan oke maka data akan dihapus, jika data berhasil dihapus maka akan muncul pesan seperti gambar berikut.

MENAMBAHKAN MENU USERS
Silahkan buka view Layouts/sidebar.blade.php kemudian tambahkan kode program berikut.
<li class="nav-item">
<a class="nav-link" href="{{ route('users.index') }}">
<i class="fas fa-fw fa-users"></i>
<span>Users</span></a>
</li>
Sehingga pada aplikasi akan muncul menu users seperti gambar berikut ini.
