hospital_report/app/Http/Controllers/PerawatController.php
2025-04-27 23:36:33 +07:00

89 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Registrasi;
use App\Models\Tindakan;
use App\Models\Transaksi;
use App\Models\TransaksiDetail;
use Illuminate\Http\Request;
class PerawatController extends Controller
{
public function __construct()
{
$this->middleware(['auth', 'role:perawat']);
}
public function dashboard()
{
$pasienHariIni = Registrasi::whereDate('tanggal_registrasi', today())
->where('status', '!=', 'selesai')
->with(['pasien', 'pegawai', 'ruang_pelayanan'])
->orderBy('nomor_antrian')
->get();
$statusPasien = Registrasi::whereDate('tanggal_registrasi', today())
->groupBy('status')
->selectRaw('status, count(*) as total')
->get();
$tindakanList = Tindakan::all();
return view('perawat.dashboard.perawat', compact(
'pasienHariIni',
'tindakanList',
'statusPasien'
));
}
public function updateStatus(Request $request, Registrasi $registrasi)
{
$validated = $request->validate([
'status' => 'required|in:menunggu,sedang_diproses,selesai',
]);
$registrasi->update(['status' => $validated['status']]);
return redirect()->back()->with('message', 'Status registrasi berhasil diperbarui');
}
public function storeTindakan(Request $request)
{
$request->validate([
'registrasi_id' => 'required|exists:registrasis,id',
'tindakan_id' => 'required|exists:tindakans,id',
'jumlah_tindakan' => 'required|integer|min:1',
]);
$registrasi = Registrasi::find($request->registrasi_id);
$tindakan = Tindakan::find($request->tindakan_id);
$pegawai = $registrasi->pegawai_id;
$jumlahTindakan = $request->jumlah_tindakan;
$transaksi = Transaksi::create([
'registrasi_id' => $registrasi->id,
'tindakan_id' => $tindakan->id,
'pegawai_id' => $pegawai,
'jumlah_tindakan' => $jumlahTindakan,
'total_tarif' => $tindakan->tarif_tindakan * $jumlahTindakan,
'tanggal_transaksi' => now(),
'metode_pembayaran' => 'cash',
'status_pembayaran' => 'belum lunas',
]);
// Buat detail transaksi
TransaksiDetail::create([
'transaksi_id' => $transaksi->id,
'tindakan_id' => $tindakan->id,
'jumlah_tindakan' => $jumlahTindakan,
'tarif_satuan' => $tindakan->tarif_tindakan,
'subtotal' => $tindakan->tarif_tindakan * $jumlahTindakan,
]);
return redirect()->back()->with('success', 'Tindakan berhasil ditambahkan.');
}
}