19_Bakti_SIMRS/backend/app/Http/Controllers/TransaksiController.php

128 lines
4.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Tr_Transaksi;
use App\Models\TrRegistrasi;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TransaksiController extends Controller
{
public function getTransaksi()
{
$data = Tr_Transaksi::with(['tindakan', 'pegawai', 'registrasi.pasien'])
->where('statusenabled', true)
->get();
return response()->json(['data' => $data]);
}
public function transaksiBaru(Request $request)
{
DB::beginTransaction();
try {
$validated = $request->validate([
'IdRegistrasi' => 'required|exists:tr_registrasis,IdRegistrasi',
'IdTindakan' => 'required|exists:ms__tindakans,IdTindakan',
'JmlTindakan' => 'required|integer|min:1',
'IdPegawai' => 'required|exists:ms__pegawais,IdPegawai',
]);
// Mengambil tarif tindakan dari tabel ms__tindakans
$tindakan = \App\Models\Ms_Tindakan::findOrFail($validated['IdTindakan']);
$total = $tindakan->Tarif * $validated['JmlTindakan'];
$transaksi = Tr_Transaksi::create([
'IdRegistrasi' => $validated['IdRegistrasi'],
'IdTindakan' => $validated['IdTindakan'],
'JmlTindakan' => $validated['JmlTindakan'],
'IdPegawai' => $validated['IdPegawai'],
'Total' => $total,
'statusenabled' => true
]);
DB::commit();
return response()->json([
'message' => 'Transaksi berhasil ditambahkan',
'data' => $transaksi
], 201);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal tambah transaksi',
'error' => $e->getMessage()
], 500);
}
}
public function updateTransaksi(Request $request, $id)
{
DB::beginTransaction();
try {
$validated = $request->validate([
'IdTindakan' => 'required|exists:ms__tindakans,IdTindakan',
'JmlTindakan' => 'required|integer|min:1',
'IdPegawai' => 'required|exists:ms__pegawais,IdPegawai',
]);
$transaksi = Tr_Transaksi::findOrFail($id);
$transaksi->update([
'IdTindakan' => $validated['IdTindakan'],
'JmlTindakan' => $validated['JmlTindakan'],
'IdPegawai' => $validated['IdPegawai']
]);
DB::commit();
return response()->json([
'message' => 'Transaksi berhasil diperbarui',
'data' => $transaksi
]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal update transaksi',
'error' => $e->getMessage()
], 500);
}
}
public function hapusTransaksi($id)
{
DB::beginTransaction();
try {
$transaksi = Tr_Transaksi::findOrFail($id);
$transaksi->update(['statusenabled' => false]);
DB::commit();
return response()->json([
'message' => 'Transaksi berhasil di-nonaktifkan'
]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal hapus transaksi',
'error' => $e->getMessage()
], 500);
}
}
public function printBilling($id)
{
$registrasi = TrRegistrasi::with('pasien', 'ruanganPelayanan')->findOrFail($id);
$transaksiList = Tr_Transaksi::with(['tindakan', 'pegawai'])
->where('IdRegistrasi', $id)
->where('statusenabled', true)
->get();
return view('billing-print', [
'registrasi' => $registrasi,
'transaksiList' => $transaksiList,
]);
}
}