TKK_E32230908/app/Http/Controllers/BorrowTransactionController...

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!');
}
}