diff --git a/app/Http/Controllers/Admin/AdminPeminjamanController.php b/app/Http/Controllers/Admin/AdminPeminjamanController.php index d55a783..084ade2 100644 --- a/app/Http/Controllers/Admin/AdminPeminjamanController.php +++ b/app/Http/Controllers/Admin/AdminPeminjamanController.php @@ -28,6 +28,7 @@ public function index(Request $request) 'id_peminjaman' => 'PIN-ADM-'.sprintf('%03d', $userId), 'user_id' => $userId, 'peminjam' => $user->nama_lengkap ?? 'Unknown', + 'email' => $user->email, 'nomor_hp' => $user->phone ?? '-', 'tanggal_pinjam' => $firstLoan->borrowed_at, 'tenggat_kembali' => $firstLoan->due_at, diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index ef9da8e..564d8b2 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -24,7 +24,7 @@ public function index() $bukuPinjamOffline = $loans->map(function ($loan) { $dueAt = Carbon::parse($loan->due_at); - $sisaHari = (int) now()->diffInDays($dueAt, false); + $sisaHari = (int) now()->startOfDay()->diffInDays($dueAt->startOfDay(), false); return [ 'id' => $loan->book->id, diff --git a/app/Http/Controllers/PeminjamanController.php b/app/Http/Controllers/PeminjamanController.php index 4c88e24..c35a3f1 100644 --- a/app/Http/Controllers/PeminjamanController.php +++ b/app/Http/Controllers/PeminjamanController.php @@ -98,12 +98,23 @@ public function store(Request $request) { $request->validate([ 'buku_ids' => 'required|array|min:1|max:3', - 'buku_ids.*' => 'exists:books,id' + 'buku_ids.*' => 'exists:books,id', + 'tanggal_pinjam' => 'required', + 'tanggal_kembali' => 'required', ]); $bukuIds = $request->input('buku_ids'); + + // Parse dates from format "Y-m-d" (standard from flatpickr) + try { + $borrowedAt = Carbon::parse($request->tanggal_pinjam); + $dueAt = Carbon::parse($request->tanggal_kembali); + } catch (\Exception $e) { + $borrowedAt = now(); + $dueAt = now()->addDays(7); + } - DB::transaction(function () use ($bukuIds) { + DB::transaction(function () use ($bukuIds, $borrowedAt, $dueAt) { foreach ($bukuIds as $bukuId) { $book = Book::lockForUpdate()->find($bukuId); @@ -115,8 +126,8 @@ public function store(Request $request) 'user_id' => Auth::id(), 'book_id' => $bukuId, 'loan_code' => 'PIN-' . date('Ym') . '-' . strtoupper(Str::random(4)) . '-' . $bukuId, - 'borrowed_at' => now(), - 'due_at' => now()->addDays(7), + 'borrowed_at' => $borrowedAt, + 'due_at' => $dueAt, 'status' => 'Dipinjam', ]); diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 983123f..d2449c9 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -99,9 +99,9 @@ public function index(Request $request): \Illuminate\View\View|\Illuminate\Http\ ]); $viewData['statistik'] = [ - ['label' => 'Buku dipinjam', 'value' => $loans->count(), 'icon' => 'bi-book-half', 'color' => 'primary'], - ['label' => 'Tenggat Waktu', 'value' => $viewData['bukuOffline']->where('sisa_hari', '<=', 3)->where('sisa_hari', '>=', 0)->count(), 'icon' => 'bi-clock-history', 'color' => 'danger'], - ['label' => 'Buku dikembalikan', 'value' => Loan::where('user_id', $user->id)->where('status', 'Dikembalikan')->count(), 'icon' => 'bi-check-circle', 'color' => 'success'], + ['label' => 'Buku yang dipinjam', 'value' => $loans->count(), 'icon' => 'bi-journal-bookmark-fill', 'color' => 'primary'], + ['label' => 'Tenggat Waktu', 'value' => $viewData['bukuOffline']->where('sisa_hari', '<=', 3)->count(), 'icon' => 'bi-clock-fill', 'color' => 'danger'], + ['label' => 'Buku dikembalikan', 'value' => Loan::where('user_id', $user->id)->where('status', 'Dikembalikan')->count(), 'icon' => 'bi-check-circle-fill', 'color' => 'success'], ['label' => 'History Baca', 'value' => Loan::where('user_id', $user->id)->count(), 'icon' => 'bi-hourglass-split', 'color' => 'warning'], ]; @@ -142,11 +142,11 @@ public function edit(Request $request): View /** * Update data profil ke Database MySQL. */ - public function update(Request $request): RedirectResponse + public function update(ProfileUpdateRequest $request): RedirectResponse { $user = $request->user(); $user->fill($request->validated()); - $user->name = $user->nama_lengkap; // Sync for compatibility + $user->nama_lengkap = $user->name; // Sync for compatibility if ($user->isDirty('email')) { $user->email_verified_at = null; diff --git a/app/Http/Requests/ProfileUpdateRequest.php b/app/Http/Requests/ProfileUpdateRequest.php index f01b359..00b4838 100644 --- a/app/Http/Requests/ProfileUpdateRequest.php +++ b/app/Http/Requests/ProfileUpdateRequest.php @@ -16,7 +16,7 @@ class ProfileUpdateRequest extends FormRequest public function rules(): array { return [ - 'nama_lengkap' => ['required', 'string', 'max:255'], + 'name' => ['required', 'string', 'max:255'], 'email' => [ 'required', 'string', diff --git a/resources/views/admin/buku/create.blade.php b/resources/views/admin/buku/create.blade.php index 6d8dc71..390447e 100644 --- a/resources/views/admin/buku/create.blade.php +++ b/resources/views/admin/buku/create.blade.php @@ -54,7 +54,7 @@
Sesuai peraturan perpustakaan, durasi peminjaman buku maksimal adalah
- 2 HARI.
+ 7 HARI.
Mohon kembalikan tepat waktu untuk menghindari denda (Rp 1.000/hari).