86 lines
2.6 KiB
PHP
86 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\BorrowTransaction;
|
|
use App\Models\Anggota;
|
|
use App\Models\Koleksi;
|
|
|
|
class BorrowTransactionController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$transactions = BorrowTransaction::with(['anggota', 'koleksi'])
|
|
->orderBy('tanggal_pinjam', 'desc')
|
|
->get();
|
|
|
|
return view('dashboard.sirkulasi.index', compact('transactions'));
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$anggota = Anggota::all();
|
|
$koleksi = Koleksi::available()->get();
|
|
|
|
return view('dashboard.sirkulasi.create', compact('anggota', 'koleksi'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'anggota_id' => 'required|exists:anggota,id',
|
|
'koleksi_id' => 'required|exists:koleksis,biblio_id',
|
|
'tanggal_pinjam' => 'required|date',
|
|
'tanggal_kembali' => 'nullable|date|after_or_equal:tanggal_pinjam',
|
|
'surat_pengantar' => 'nullable|mimes:pdf|max:2048',
|
|
]);
|
|
|
|
$alreadyBorrowed = BorrowTransaction::where('koleksi_id', $request->koleksi_id)
|
|
->where('status', 'dipinjam')
|
|
->exists();
|
|
|
|
if ($alreadyBorrowed) {
|
|
return redirect()->back()->withErrors(['koleksi_id' => 'Buku ini sedang dipinjam.']);
|
|
}
|
|
|
|
$fileName = null;
|
|
if ($request->hasFile('surat_pengantar')) {
|
|
$file = $request->file('surat_pengantar');
|
|
$fileName = time() . '_' . $file->getClientOriginalName();
|
|
$file->storeAs('public/surat_pengantar', $fileName);
|
|
}
|
|
|
|
BorrowTransaction::create([
|
|
'anggota_id' => $request->anggota_id,
|
|
'koleksi_id' => $request->koleksi_id,
|
|
'tanggal_pinjam' => $request->tanggal_pinjam,
|
|
'tanggal_kembali' => $request->tanggal_kembali,
|
|
'status' => 'dipinjam',
|
|
'surat_pengantar' => $fileName,
|
|
]);
|
|
|
|
return redirect()->route('dashboard.sirkulasi.index')
|
|
->with('success', 'Transaksi peminjaman berhasil disimpan!');
|
|
}
|
|
|
|
public function kembalikan($id)
|
|
{
|
|
$transaction = BorrowTransaction::findOrFail($id);
|
|
|
|
if ($transaction->status != 'dipinjam') {
|
|
return redirect()->route('dashboard.sirkulasi.index')
|
|
->with('error', 'Transaksi ini sudah dikembalikan.');
|
|
}
|
|
|
|
$transaction->update([
|
|
'status' => 'dikembalikan',
|
|
'tanggal_kembali' => now(),
|
|
]);
|
|
|
|
return redirect()->route('dashboard.sirkulasi.index')
|
|
->with('success', 'Buku berhasil dikembalikan!');
|
|
}
|
|
}
|
|
|