Menambahkan fungsi cache pada controller
This commit is contained in:
parent
0696db67d2
commit
c0a3a693da
|
@ -2,30 +2,117 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class KaryawanController extends Controller
|
||||
{
|
||||
private $karyawan = [
|
||||
1 => ['nama' => 'Budi', 'umur' => 20, 'jabatan' => 'Manager'],
|
||||
2 => ['nama' => 'Siti', 'umur' => 21, 'jabatan' => 'Staff'],
|
||||
3 => ['nama' => 'Andi', 'umur' => 22, 'jabatan' => 'Staff'],
|
||||
4 => ['nama' => 'Caca', 'umur' => 23, 'jabatan' => 'Staff'],
|
||||
5 => ['nama' => 'Rudy', 'umur' => 24, 'jabatan' => 'Staff'],
|
||||
];
|
||||
// public function init()
|
||||
// {
|
||||
// $karyawan = [
|
||||
// 1 => ['nama' => 'Budi', 'umur' => 20, 'jabatan' => 'Manager'],
|
||||
// 2 => ['nama' => 'Siti', 'umur' => 21, 'jabatan' => 'Staff'],
|
||||
// 3 => ['nama' => 'Andi', 'umur' => 22, 'jabatan' => 'Staff'],
|
||||
// 4 => ['nama' => 'Caca', 'umur' => 23, 'jabatan' => 'Staff'],
|
||||
// 5 => ['nama' => 'Rudy', 'umur' => 24, 'jabatan' => 'Staff'],
|
||||
// ];
|
||||
|
||||
// Cache::put('karyawan', $karyawan, now()->addMinutes(60));
|
||||
// return 'Data karyawan berhasil dimasukkan ke cache';
|
||||
// }
|
||||
|
||||
public function index()
|
||||
{
|
||||
$karyawan = $this->karyawan;
|
||||
$karyawan = Cache::get('karyawan', []);
|
||||
return view('karyawan.index', compact('karyawan'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('karyawan.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'nama' => 'required',
|
||||
'umur' => 'required|integer',
|
||||
'jabatan' => 'required',
|
||||
]);
|
||||
|
||||
$karyawanBaru = [
|
||||
'nama' => $request->nama,
|
||||
'umur' => $request->umur,
|
||||
'jabatan' => $request->jabatan,
|
||||
];
|
||||
|
||||
$karyawan = Cache::get('karyawan', []);
|
||||
$karyawan[] = $karyawanBaru;
|
||||
Cache::put('karyawan', $karyawan, now()->addMinutes(60));
|
||||
|
||||
return redirect()->route('karyawan.index')->with('success', 'Data berhasil ditambahkan!');
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$data = $this->karyawan[$id] ?? null;
|
||||
$karyawan = Cache::get('karyawan', []);
|
||||
$data = $karyawan[$id] ?? null;
|
||||
|
||||
if (!$data) {
|
||||
abort(404, 'Karyawan tidak ditemukan');
|
||||
}
|
||||
return view('karyawan.show', compact('data'));
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$karyawan = Cache::get('karyawan', []);
|
||||
if (!isset($karyawan[$id])) {
|
||||
return redirect()->route('karyawan.index')->with('error', 'Data tidak ditemukan');
|
||||
}
|
||||
|
||||
$data = $karyawan[$id];
|
||||
|
||||
return view('karyawan.edit', compact('data', 'id'));
|
||||
}
|
||||
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$request->validate([
|
||||
'nama' => 'required',
|
||||
'umur' => 'required|integer',
|
||||
'jabatan' => 'required',
|
||||
]);
|
||||
|
||||
$karyawan = Cache::get('karyawan', []);
|
||||
if (!isset($karyawan[$id])) return redirect()->route('karyawan.index')->with('error', 'Data tidak ditemukan');
|
||||
|
||||
$karyawan[$id] = [
|
||||
'nama' => $request->nama,
|
||||
'umur' => $request->umur,
|
||||
'jabatan' => $request->jabatan,
|
||||
];
|
||||
|
||||
Cache::put('karyawan', $karyawan, now()->addMinutes(60));
|
||||
|
||||
return redirect()->route('karyawan.index')->with('success', 'Data berhasil diperbarui!');
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$karyawan = Cache::get('karyawan', []);
|
||||
|
||||
if (!isset($karyawan[$id])) {
|
||||
return redirect()->route('karyawan.index')->with('error', 'Data tidak ditemukan');
|
||||
}
|
||||
|
||||
unset($karyawan[$id]);
|
||||
|
||||
// Simpan ulang ke cache di sini
|
||||
Cache::put('karyawan', $karyawan, now()->addMinutes(60));
|
||||
|
||||
return redirect()->route('karyawan.index')->with('success', 'Data berhasil dihapus!');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Tambahkan Data Siswa</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
}
|
||||
body {
|
||||
background: linear-gradient(135deg, #b64fdb, #c7f0e1);
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #333;
|
||||
}
|
||||
.container {
|
||||
width: 90%;
|
||||
max-width: 600px;
|
||||
background: #ffffff;
|
||||
padding: 40px;
|
||||
border-radius: 20px;
|
||||
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
|
||||
}
|
||||
h1 {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
label {
|
||||
font-weight: 600;
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
color: #34495e;
|
||||
}
|
||||
input {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
margin-bottom: 20px;
|
||||
border-radius: 12px;
|
||||
border: 1px solid #ddd;
|
||||
font-size: 16px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
input:focus {
|
||||
outline: none;
|
||||
border: 1px solid #3498db;
|
||||
box-shadow: 0 0 8px rgba(52,152,219,0.5);
|
||||
}
|
||||
.button {
|
||||
width: 100%;
|
||||
padding: 14px;
|
||||
background: #b64fdb;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 50px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
transition: background 0.3s;
|
||||
}
|
||||
|
||||
.alert {
|
||||
background: #f8d7da;
|
||||
color: #721c24;
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
margin-bottom: 20px;
|
||||
border-left: 5px solid #f5c6cb;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
<h1>Tambahkan Data Karyawan</h1>
|
||||
|
||||
@if($errors->any())
|
||||
<div class="alert">
|
||||
@foreach($errors->all() as $error)
|
||||
<p>{{ $error }}</p>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form action="{{ route('karyawan.store') }}" method="POST">
|
||||
@csrf
|
||||
<label>Nama:</label>
|
||||
<input type="text" name="nama" required>
|
||||
|
||||
<label>Umur:</label>
|
||||
<input type="number" name="umur" required>
|
||||
|
||||
<label>Jabatan:</label>
|
||||
<input type="text" name="jabatan" required>
|
||||
|
||||
<button type="submit" class="button">Simpan Data</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -47,13 +47,13 @@
|
|||
}
|
||||
input:focus {
|
||||
outline: none;
|
||||
border: 1px solid #3498db;
|
||||
border: 1px solid #b64fdb;
|
||||
box-shadow: 0 0 8px rgba(52,152,219,0.5);
|
||||
}
|
||||
.button {
|
||||
width: 100%;
|
||||
padding: 14px;
|
||||
background: #3498db;
|
||||
background: #b64fdb;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 50px;
|
||||
|
@ -62,9 +62,7 @@
|
|||
cursor: pointer;
|
||||
transition: background 0.3s;
|
||||
}
|
||||
.button:hover {
|
||||
background: #2980b9;
|
||||
}
|
||||
|
||||
.alert {
|
||||
background: #f8d7da;
|
||||
color: #721c24;
|
||||
|
@ -78,22 +76,22 @@
|
|||
<body>
|
||||
|
||||
<div class="container">
|
||||
<h1>Hapus Data Siswa</h1>
|
||||
<h1>Edit Data Karyawan</h1>
|
||||
|
||||
<form action="{{ route('siswa.destroy', $id) }}" method="POST">
|
||||
<form action="{{ route('karyawan.update', $id) }}" method="POST">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
@method('PUT')
|
||||
|
||||
<label>Nama:</label>
|
||||
<input type="text" name="nama" value="{{ $siswa['nama'] }}" required>
|
||||
<input type="text" name="nama" value="{{ $data['nama'] }}" required>
|
||||
|
||||
<label>Kelas:</label>
|
||||
<input type="text" name="kelas" value="{{ $siswa['kelas'] }}" required>
|
||||
<label>Umur:</label>
|
||||
<input type="number" name="umur" value="{{ $data['umur'] }}" required>
|
||||
|
||||
<Label>Absen:</label>
|
||||
<input type="number" name="absen" value="{{ $siswa['absen'] }}" required>
|
||||
<Label>Jabatan:</label>
|
||||
<input type="text" name="jabatan" value="{{ $data['jabatan'] }}" required>
|
||||
|
||||
<button type="submit" class="button"></button>
|
||||
<button type="submit" class="button">Update</button>
|
||||
</form>
|
||||
|
||||
</div>
|
|
@ -122,14 +122,20 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($karyawan as $index => $item)
|
||||
@foreach($karyawan as $id => $item)
|
||||
<tr>
|
||||
<td>{{ $index + 0 }}</td>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item['nama'] }}</td>
|
||||
<td>{{ $item['umur'] }}</td>
|
||||
<td>{{ $item['jabatan'] }}</td>
|
||||
<td>
|
||||
<a href="{{ url('/karyawan/' . $index) }}" class="button-opsi">Lihat</a>
|
||||
<a href="{{ route('karyawan.show', $id) }}" class="button-opsi">Lihat</a>
|
||||
<a href="{{ route('karyawan.edit', $id) }}" class="button-opsi">Edit</a>
|
||||
<form action="{{ route('karyawan.destroy', $id) }}" method="POST" style="display: inline;">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="button-opsi">Hapus</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
@ -138,6 +144,8 @@
|
|||
@else
|
||||
<p>Belum ada data karyawan yang terdaftar.</p>
|
||||
@endif
|
||||
|
||||
<a href="{{ route('karyawan.create') }}" class="button">+ Tambah Data Karyawan</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\App\Http\Controllers\SiswaController;
|
||||
use App\Http\Controllers\KaryawanController;
|
||||
|
||||
|
@ -54,9 +55,22 @@ Route::get('/siswa/{id}', [App\Http\Controllers\SiswaController::class, 'show'])
|
|||
|
||||
|
||||
// KARYAWAN
|
||||
Route::get('/karyawan', [KaryawanController::class, 'index']);
|
||||
Route::get('/karyawan/{id}', [KaryawanController::class, 'show']);
|
||||
|
||||
|
||||
//cache init
|
||||
Route::get('/karyawan/init', [KaryawanController::class, 'init']);
|
||||
|
||||
//tambah karyawan
|
||||
Route::get('/karyawan/create', [KaryawanController::class, 'create'])->name('karyawan.create');
|
||||
Route::post('/karyawan', [KaryawanController::class, 'store'])->name('karyawan.store');
|
||||
Route::get('/karyawan', [KaryawanController::class, 'index'])->name('karyawan.index');
|
||||
|
||||
//lihat daftar dan detail
|
||||
Route::get('/karyawan/{id}', [KaryawanController::class, 'show'])->name('karyawan.show');
|
||||
|
||||
//editkaryawan
|
||||
Route::get('/karyawan/{id}/edit', [KaryawanController::class, 'edit'])->name('karyawan.edit');
|
||||
Route::put('/karyawan/{id}', [KaryawanController::class, 'update'])->name('karyawan.update');
|
||||
|
||||
//hapus
|
||||
Route::delete('/karyawan/{id}', [KaryawanController::class, 'destroy'])->name('karyawan.destroy');
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue