TKK_E32230908/resources/views/user/peminjaman/create.blade.php

210 lines
9.8 KiB
PHP

@extends('layouts.dashboard')
@section('content')
<div class="container-fluid py-4">
<div class="header-section mb-4">
<h3 class="text-primary fw-bold">
<i class="fas fa-book-reader me-2"></i> Formulir Transaksi Peminjaman
</h3>
<p class="text-muted mb-0">Lengkapi data di bawah ini untuk mengajukan peminjaman buku.</p>
</div>
@if(!$anggota)
<div class="alert alert-warning">
<strong>Perhatian!</strong> Anda belum terdaftar sebagai anggota.
<a href="{{ route('user.member.create') }}" class="btn btn-sm btn-primary ms-2">
<i class="fas fa-user-plus me-1"></i> Daftar Anggota Baru
</a>
</div>
@elseif(in_array($anggota->status, ['menunggu', 'ditolak']))
<div class="alert alert-{{ $anggota->status === 'menunggu' ? 'info' : 'danger' }}">
@if($anggota->status === 'menunggu')
<i class="fas fa-hourglass-half me-1"></i>
<strong>Pendaftaran Anda sedang menunggu persetujuan admin.</strong><br>
Anda akan menerima notifikasi melalui email setelah akun Anda disetujui.
@else
<i class="fas fa-times-circle me-1"></i>
<strong>Pendaftaran Anda ditolak oleh admin.</strong><br>
Silakan hubungi admin untuk informasi lebih lanjut.
@endif
</div>
<div class="row justify-content-center">
<div class="col-lg-8 col-md-10">
<div class="card shadow border-0" style="border-radius: 1rem;">
<div class="card-header bg-light">
<h5 class="fw-bold text-primary mb-0">
<i class="fas fa-clipboard-list me-2"></i> Data Formulir Peminjaman (Terkunci)
</h5>
</div>
<div class="card-body p-4">
<div class="alert alert-warning text-center">
<i class="fas fa-lock me-2"></i>
Formulir ini <strong>tidak dapat dikirim</strong> sebelum admin menyetujui pendaftaran Anda.
</div>
</div>
</div>
</div>
</div>
@else
<div class="row justify-content-center">
<div class="col-lg-8 col-md-10">
<div class="card shadow border-0" style="border-radius: 1rem;">
<div class="card-header bg-light">
<h5 class="fw-bold text-primary mb-0">
<i class="fas fa-clipboard-list me-2"></i> Tambah Transaksi Peminjaman
</h5>
</div>
<div class="card-body p-4">
@if (session('success'))
<div class="alert alert-success">{{ session('success') }}</div>
@endif
@if ($errors->any())
<div class="alert alert-danger">
<strong>Terjadi kesalahan:</strong>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form id="peminjamanForm" action="{{ route('user.peminjaman.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="hidden" name="anggota_id" value="{{ $anggota->id }}">
<input type="hidden" name="koleksi_id" id="hidden_koleksi_id" required>
<div class="mb-3">
<label class="form-label fw-semibold">Nama Anggota</label>
<input type="text" class="form-control" value="{{ $anggota->nama }}" disabled>
</div>
<div class="mb-3">
<label class="form-label fw-semibold">NIP/NIM</label>
<input type="text" class="form-control" value="{{ $anggota->nip_nim }}" disabled>
</div>
<div class="mb-3 position-relative">
<label for="title_input" class="form-label fw-semibold">Judul Buku</label>
<input type="text" name="title_input" id="title_input" class="form-control" placeholder="Ketik judul buku..." autocomplete="off" required>
<div id="autocomplete-list" class="list-group mt-1 position-absolute w-100"></div>
</div>
<div class="mb-3">
<label for="surat_pengantar" class="form-label fw-semibold">Upload Surat Pengantar (PDF)</label>
<input type="file" name="surat_pengantar" id="surat_pengantar" class="form-control" accept="application/pdf" required>
@if(isset($lastTransaction) && $lastTransaction->surat_pengantar)
@php
$pdfPath = storage_path('app/public/surat_pengantar/' . $lastTransaction->surat_pengantar);
@endphp
@if(file_exists($pdfPath))
<div class="mt-2">
<a href="{{ asset('storage/surat_pengantar/' . $lastTransaction->surat_pengantar) }}" target="_blank" class="btn btn-sm btn-outline-primary">
<i class="fas fa-file-pdf me-1"></i> Lihat Surat Sebelumnya
</a>
</div>
@endif
@endif
</div>
<div class="mb-3">
<label for="tanggal_pinjam" class="form-label fw-semibold">Tanggal Pinjam</label>
<input type="date" name="tanggal_pinjam" id="tanggal_pinjam" class="form-control" required value="{{ old('tanggal_pinjam', date('Y-m-d')) }}">
</div>
<div class="alert alert-info small mt-4" style="border-radius: 0.5rem;">
<i class="fas fa-exclamation-circle me-2"></i>
<strong>Perhatian!</strong> Pastikan data yang Anda isi sudah benar agar proses peminjaman disetujui oleh admin.<br>
<i class="fas fa-clock text-warning me-2 mt-2"></i>
<strong>Catatan:</strong> Apabila buku dikembalikan melebihi batas waktu yang ditentukan,
maka akan dikenakan <strong>denda keterlambatan</strong> sesuai dengan ketentuan perpustakaan.
</div>
<div class="text-end mt-4">
<a href="{{ route('user.peminjaman.index') }}" class="btn btn-outline-secondary me-2">
<i class="fas fa-arrow-left me-1"></i> Batal
</a>
<button type="submit" class="btn btn-primary">
<i class="fas fa-save me-1"></i> Simpan Peminjaman
</button>
</div>
</form>
</div>
</div>
</div>
</div>
@endif
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const input = document.getElementById('title_input');
const hiddenInput = document.getElementById('hidden_koleksi_id');
const listContainer = document.getElementById('autocomplete-list');
const form = document.getElementById('peminjamanForm');
const books = @json($koleksi->map(fn($k) => ['id' => $k->biblio_id, 'title' => $k->title]));
input.addEventListener('input', function() {
const val = this.value.toLowerCase();
listContainer.innerHTML = '';
hiddenInput.value = '';
if (!val) return;
const matches = books.filter(b => b.title.toLowerCase().includes(val));
matches.forEach(b => {
const div = document.createElement('div');
div.classList.add('list-group-item', 'list-group-item-action');
const regex = new RegExp(`(${val})`, 'gi');
div.innerHTML = b.title.replace(regex, '<strong>$1</strong>');
div.addEventListener('click', function() {
input.value = b.title;
hiddenInput.value = b.id;
listContainer.innerHTML = '';
});
listContainer.appendChild(div);
});
});
document.addEventListener('click', function(e) {
if (!listContainer.contains(e.target) && e.target !== input) {
listContainer.innerHTML = '';
}
});
form.addEventListener('submit', function(e) {
if (!hiddenInput.value || !document.getElementById('surat_pengantar').files.length || !document.getElementById('tanggal_pinjam').value) {
e.preventDefault();
alert('Semua field harus diisi sebelum mengirim form!');
}
});
});
</script>
<style>
#autocomplete-list {
z-index: 1000;
max-height: 200px;
overflow-y: auto;
border: 1px solid #ced4da;
border-radius: 0.25rem;
background-color: #fff;
}
#autocomplete-list .list-group-item {
cursor: pointer;
padding: 0.375rem 0.75rem;
}
#autocomplete-list .list-group-item:hover {
background-color: #f1f1f1;
}
</style>
@endsection