diff --git a/app/Http/Controllers/Admin/TrRegistrasiController.php b/app/Http/Controllers/Admin/TrRegistrasiController.php new file mode 100644 index 0000000..b41dbdf --- /dev/null +++ b/app/Http/Controllers/Admin/TrRegistrasiController.php @@ -0,0 +1,150 @@ +trRegistrasi = $trRegistrasi; + $this->msPasien = $msPasien; + $this->msPegawai = $msPegawai; + $this->msAsuransi = $msAsuransi; + $this->msRuangPelayanan = $msRuangPelayanan; + $this->trTransaksi = $trTransaksi; + } + + public function index(Request $request) + { + return view('admin.tr_registrasi.index',[ + 'registrasi' => $this->trRegistrasi->getAll(), + 'pasien' => $this->msPasien->getAll(), + 'pegawai' => $this->msPegawai->getAll(), + 'asuransi' => $this->msAsuransi->getAll(), + 'ruang_pelayanan' => $this->msRuangPelayanan->getAll(), + ]); + } + + public function data(Request $request) + { + if ($request->ajax()) { + return DataTables()->of($this->trRegistrasi->getAll()) + ->addIndexColumn() + ->addColumn('mr_pasien', function ($data) { + return $this->msPasien->getById($data->mr_pasien)->nama_pasien; + }) + ->addColumn('id_asuransi', function ($data) { + return $this->msAsuransi->getById($data->id_asuransi)->nama_asuransi; + }) + ->addColumn('no_asuransi', function ($data) { + return $data->no_asuransi; + }) + ->addColumn('id_ruang_pelayanan', function ($data) { + return $this->msRuangPelayanan->getById($data->id_ruang_pelayanan)->nama_ruang_pelayanan; + }) + ->addColumn('id_pegawai', function ($data) { + return $this->msPegawai->getById($data->id_pegawai)->nama_pegawai; + }) + ->addColumn('tanggal_registrasi', function ($data) { + return $data->tanggal_registrasi; + }) + ->addColumn('status', function ($data) { + return $data->status; + }) + ->addColumn('action', function ($data) { + return view('admin.tr_registrasi.column.action', compact('data')); + }) + ->make(true); + } + + return view('admin.tr_registrasi.data'); + } + + public function showTransaksiByRegistrasi($id) + { + $transaksi = $this->trTransaksi->getByRegistrasi($id); + return view('admin.tr_registrasi.transaksi', compact('transaksi')); + } + + public function create() + { + return view('admin.tr_registrasi.create', [ + 'pasien' => $this->msPasien->getAll(), + 'pegawai' => $this->msPegawai->getAll(), + 'asuransi' => $this->msAsuransi->getAll(), + 'ruang_pelayanan' => $this->msRuangPelayanan->getAll(), + ]); + } + + public function store(Request $request) + { + $request->validate([ + 'mr_pasien' => 'required', + 'id_asuransi' => 'required', + 'no_asuransi' => 'required', + 'id_ruang_pelayanan' => 'required', + 'id_pegawai' => 'required', + ]); + + $this->trRegistrasi->store($request->all()); + + return redirect()->route('admin.tr_registrasi.index')->with('success', 'Data Registrasi berhasil ditambahkan.'); + } + + public function edit($id) + { + $registrasi = $this->trRegistrasi->getById($id); + return view('admin.tr_registrasi.edit',[ + 'registrasi' => $registrasi, + 'pasien' => $this->msPasien->getAll(), + 'pegawai' => $this->msPegawai->getAll(), + 'asuransi' => $this->msAsuransi->getAll(), + 'ruang_pelayanan' => $this->msRuangPelayanan->getAll(), + ]); + } + + public function update(Request $request, $id) + { + $request->validate([ + 'mr_pasien' => 'required', + 'id_asuransi' => 'required', + 'no_asuransi' => 'required', + 'id_ruang_pelayanan' => 'required', + 'id_pegawai' => 'required', + 'tanggal_registrasi' => 'required|date', + ]); + + $this->trRegistrasi->update($id, $request->all()); + + return redirect()->route('admin.tr_registrasi.index')->with('success', 'Data Registrasi berhasil diperbarui.'); + } + + public function destroy($id) + { + $this->trRegistrasi->delete($id); + return response()->json(['success' => 'Data Registrasi berhasil dihapus.']); + } +} diff --git a/app/Http/Controllers/Admin/TrTransaksiController.php b/app/Http/Controllers/Admin/TrTransaksiController.php new file mode 100644 index 0000000..6c840c8 --- /dev/null +++ b/app/Http/Controllers/Admin/TrTransaksiController.php @@ -0,0 +1,102 @@ +trTransaksi = $trTransaksi; + $this->msTindakan = $msTindakan; + $this->msPegawai = $msPegawai; + } + + public function index(Request $request) + { + if ($request->ajax()) { + return DataTables()->of($this->trTransaksi->getAll()) + ->addIndexColumn() + ->addColumn('nama_tindakan', function ($data) { + return $this->msTindakan->getById($data->id_tindakan)->nama_tindakan; + }) + ->addColumn('jumlah_tindakan', function ($data) { + return $data->jumlah_tindakan; + }) + ->addColumn('nama_pegawai', function ($data) { + return $this->msPegawai->getById($data->id_pegawai)->nama_pegawai; + }) + ->addColumn('total_tarif', function ($data) { + return $data->jumlah_tindakan * $this->msTindakan->getById($data->id_tindakan)->tarif; + }) + ->addColumn('action', function ($data) { + return view('admin.tr_transaksi.column.action', compact('data')); + }) + ->make(true); + } + + return view('admin.tr_transaksi.index'); + } + + public function create() + { + return view('admin.tr_transaksi.create', [ + 'registrasi' => $this->trTransaksi->getAll(), + 'tindakan' => $this->msTindakan->getAll(), + 'pegawai' => $this->msPegawai->getAll(), + ]); + } + + public function store(Request $request) + { + $request->validate([ + 'id_registrasi' => 'required', + 'id_tindakan' => 'required', + 'jumlah_tindakan' => 'required|integer|min:1', + 'id_pegawai' => 'required', + ]); + + $this->trTransaksi->store($request->all()); + + return redirect()->route('admin.tr_transaksi.index')->with('success', 'Data Ruang Pelayanan berhasil ditambahkan.'); + } + + public function edit($id) + { + $transaksi = $this->trTransaksi->getById($id); + return view('admin.tr_transaksi.edit',[ + 'transaksi' => $transaksi, + 'tindakan' => $this->msTindakan->getAll(), + 'pegawai' => $this->msPegawai->getAll(), + ]); + } + + public function update(Request $request, $id) + { + $request->validate([ + 'id_registrasi' => 'required', + 'id_tindakan' => 'required', + 'jumlah_tindakan' => 'required|integer|min:1', + 'id_pegawai' => 'required', + ]); + + $this->trTransaksi->update($id, $request->all()); + + return redirect()->route('admin.tr_transaksi.index')->with('success', 'Data Ruang Pelayanan berhasil diperbarui.'); + } + + public function destroy($id) + { + $this->trTransaksi->delete($id); + return response()->json(['success' => 'Data Ruang Pelayanan berhasil dihapus.']); + } +} diff --git a/app/Http/Controllers/Auth/VerifyEmailController.php b/app/Http/Controllers/Auth/VerifyEmailController.php new file mode 100644 index 0000000..ae93486 --- /dev/null +++ b/app/Http/Controllers/Auth/VerifyEmailController.php @@ -0,0 +1,28 @@ +user()->hasVerifiedEmail()) { + return redirect()->intended(RouteServiceProvider::home().'?verified=1'); + } + + if ($request->user()->markEmailAsVerified()) { + event(new Verified($request->user())); + } + + return redirect()->intended(RouteServiceProvider::home().'?verified=1'); + } +} diff --git a/app/Http/Middleware/RoleMiddleware.php b/app/Http/Middleware/RoleMiddleware.php new file mode 100644 index 0000000..edb2acb --- /dev/null +++ b/app/Http/Middleware/RoleMiddleware.php @@ -0,0 +1,23 @@ +user() || !$request->user()->hasRole($role)) { + abort(403, 'Unauthorized action.'); + } + + return $next($request); + } +} \ No newline at end of file diff --git a/app/Interfaces/TrTransaksiInterface.php b/app/Interfaces/TrTransaksiInterface.php index 471c5aa..67470f7 100644 --- a/app/Interfaces/TrTransaksiInterface.php +++ b/app/Interfaces/TrTransaksiInterface.php @@ -6,6 +6,8 @@ interface TrTransaksiInterface { public function getAll(); public function getById($id); + public function getByRegistrasi($id_registrasi); + public function getByDate($date); public function store($data); public function update($id, $data); public function delete($id); diff --git a/app/Models/TrRegistrasi.php b/app/Models/TrRegistrasi.php index 2876ece..404471c 100644 --- a/app/Models/TrRegistrasi.php +++ b/app/Models/TrRegistrasi.php @@ -10,6 +10,7 @@ class TrRegistrasi extends Model use HasFactory; protected $table = 'tr_registrasi'; + protected $primaryKey = 'id_registrasi'; protected $fillable = [ 'id_registrasi', @@ -19,7 +20,8 @@ class TrRegistrasi extends Model 'id_ruang_pelayanan', 'id_pegawai', 'tanggal_registrasi', - ]; + 'status', +]; public function pasien() { diff --git a/app/Models/TrTransaksi.php b/app/Models/TrTransaksi.php index bd30894..e021952 100644 --- a/app/Models/TrTransaksi.php +++ b/app/Models/TrTransaksi.php @@ -10,6 +10,7 @@ class TrTransaksi extends Model use HasFactory; protected $table = 'tr_transaksi'; + protected $primaryKey = 'id_transaksi'; protected $fillable = [ 'id_transaksi', 'id_registrasi', diff --git a/app/Repositories/TrRegistrasiRepository.php b/app/Repositories/TrRegistrasiRepository.php index 7cacca4..8ddb686 100644 --- a/app/Repositories/TrRegistrasiRepository.php +++ b/app/Repositories/TrRegistrasiRepository.php @@ -14,7 +14,6 @@ class TrRegistrasiRepository implements TrRegistrasiInterface $this->trRegistrasi = $trRegistrasi; } - public function getAll() { return $this->trRegistrasi->all(); @@ -27,6 +26,7 @@ class TrRegistrasiRepository implements TrRegistrasiInterface public function store($data) { + $data['tanggal_registrasi'] = now(); return $this->trRegistrasi->create($data); } diff --git a/app/Repositories/TrTransaksiRepository.php b/app/Repositories/TrTransaksiRepository.php index 415ece6..32a28bb 100644 --- a/app/Repositories/TrTransaksiRepository.php +++ b/app/Repositories/TrTransaksiRepository.php @@ -24,6 +24,16 @@ class TrTransaksiRepository implements TrTransaksiInterface return $this->trTransaksi->find($id); } + public function getByRegistrasi($id_registrasi) + { + return $this->trTransaksi->where('id_registrasi', $id_registrasi)->get(); + } + + public function getByDate($date) + { + return $this->trTransaksi->whereDate('created_at', $date)->get(); + } + public function store($data) { return $this->trTransaksi->create($data); diff --git a/database/migrations/2025_04_27_152843_add_column_status_tr_registrasi.php b/database/migrations/2025_04_27_152843_add_column_status_tr_registrasi.php new file mode 100644 index 0000000..6d62a5a --- /dev/null +++ b/database/migrations/2025_04_27_152843_add_column_status_tr_registrasi.php @@ -0,0 +1,28 @@ +string('status')->default('active')->after('tanggal_registrasi'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('tr_registrasi', function (Blueprint $table) { + $table->dropColumn('status'); + }); + } +}; diff --git a/resources/views/admin/tr_registrasi/column/action.blade.php b/resources/views/admin/tr_registrasi/column/action.blade.php new file mode 100644 index 0000000..fb8e438 --- /dev/null +++ b/resources/views/admin/tr_registrasi/column/action.blade.php @@ -0,0 +1,8 @@ +
| # | +Nama Pasien | +Asuransi | +No. Asuransi | +R. Pelayanan | +Pelaksana | +Tanggal | +Status | +Aksi | +
|---|
MR Pasien: {{ $d->pasien->nama_pasien }}
+Ruang Pelayanan: {{ $d->ruangPelayanan->nama_ruang_pelayanan}}
+Pelaksana: {{ $d->pegawai->nama_pegawai }}
+{{ $d->tanggal_registrasi }}
+ Lihat Transaksi + Tambah Transaksi +Nama Pasien: {{ $transaksi[0]->registrasi->pasien->nama_pasien ?? '-' }}
+MR Pasien:{{ $transaksi[0]->registrasi->mr_pasien ?? '-' }}
+Tanggal Registrasi: {{ $transaksi[0]->registrasi->tanggal_registrasi ?? '-' }}
+Nomor Registrasi: {{ $transaksi[0]->id_registrasi }}
+| Tindakan | +Jumlah | +Tarif | +Subtotal | +
|---|---|---|---|
| {{ $tindakan->nama_tindakan }} | +{{ $t->jumlah_tindakan }} | +Rp{{ number_format($tindakan->tarif, 0, ',', '.') }} | +Rp{{ number_format($subtotal, 0, ',', '.') }} | +
Tidak ada transaksi ditemukan.
+ @endif +| # | +Nama Tindakan | +Jumlah Tindakan | +Pelaksana | +Total Tarif | +Aksi | +
|---|
Transaksi
+