148 lines
4.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Ms_Kamar;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class KamarController extends Controller
{
public function getKamar()
{
try {
$data = Ms_Kamar::with(['ruangan', 'kelas'])
->where('statusenabled', true)
->get();
return response()->json([
'message' => 'Data kamar berhasil diambil',
'data' => $data
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Gagal ambil data kamar',
'error' => $e->getMessage()
], 500);
}
}
public function getDetailKamar($id)
{
try {
$kamar = Ms_Kamar::with(['ruangan', 'kelas'])
->where('statusenabled', true)
->findOrFail($id);
return response()->json([
'message' => 'Data kamar ditemukan',
'data' => $kamar
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Kamar tidak ditemukan',
'error' => $e->getMessage()
], 404);
}
}
public function tambahKamar(Request $request)
{
DB::beginTransaction();
try {
$validated = $request->validate([
'nama_kamar' => 'required|string|max:100',
'ruangan_id' => 'required|numeric',
'kelas_id' => 'required|numeric',
'jumlah_tempat_tidur' => 'required|integer|min:0',
]);
// Get last room entry and increment the ID for the next room
$lastKamar = Ms_Kamar::orderBy('id', 'desc')->first();
$nextNumber = $lastKamar ? $lastKamar->id + 1 : 1;
$kodeKamar = 'KMR-' . str_pad($nextNumber, 2, '0', STR_PAD_LEFT);
$kamar = Ms_Kamar::create([
'nama_kamar' => $validated['nama_kamar'],
'ruangan_id' => $validated['ruangan_id'],
'kelas_id' => $validated['kelas_id'],
'kode_kamar' => $kodeKamar, // Automatically generated kode kamar
'jumlah_tempat_tidur' => $validated['jumlah_tempat_tidur'], // Ensure jumlah_tempat_tidur is passed
'statusenabled' => true,
]);
DB::commit();
return response()->json([
'message' => 'Kamar berhasil ditambahkan',
'data' => $kamar
], 201);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal tambah kamar',
'error' => $e->getMessage()
], 500);
}
}
public function updateKamar(Request $request, $id)
{
DB::beginTransaction();
try {
$validated = $request->validate([
'nama_kamar' => 'required|string|max:100',
'ruangan_id' => 'required|numeric',
'kelas_id' => 'required|numeric',
'jumlah_tempat_tidur' => 'required|integer|min:0',
]);
$kamar = Ms_Kamar::findOrFail($id);
$kamar->update([
'nama_kamar' => $validated['nama_kamar'],
'ruangan_id' => $validated['ruangan_id'],
'kelas_id' => $validated['kelas_id'],
'jumlah_tempat_tidur' => $validated['jumlah_tempat_tidur'],
]);
DB::commit();
return response()->json([
'message' => 'Kamar berhasil diperbarui',
'data' => $kamar
]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal update kamar',
'error' => $e->getMessage()
], 500);
}
}
public function hapusKamar($id)
{
DB::beginTransaction();
try {
$kamar = Ms_Kamar::findOrFail($id);
$kamar->statusenabled = false;
$kamar->save();
DB::commit();
return response()->json([
'message' => 'Kamar berhasil dinonaktifkan',
'data' => $kamar
]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal hapus kamar',
'error' => $e->getMessage()
], 500);
}
}
}