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 @@ +
+ + Ubah + + +
\ No newline at end of file diff --git a/resources/views/admin/tr_registrasi/create.blade.php b/resources/views/admin/tr_registrasi/create.blade.php new file mode 100644 index 0000000..b3e5d9b --- /dev/null +++ b/resources/views/admin/tr_registrasi/create.blade.php @@ -0,0 +1,64 @@ + +
+
+
+
+ {{-- Back button --}} +

Pendaftaran Pelayanan

+ +
+ @csrf +
+ + +
+ +
+ + +
+ + + +
+ + +
+ +
+ + +
+ + {{-- Submit button --}} +
+ Batal + +
+ + +
+
+
+
+
diff --git a/resources/views/admin/tr_registrasi/data.blade.php b/resources/views/admin/tr_registrasi/data.blade.php new file mode 100644 index 0000000..9f50285 --- /dev/null +++ b/resources/views/admin/tr_registrasi/data.blade.php @@ -0,0 +1,149 @@ + +
+
+
+
+
+

Data Registrasi

+ Tambah Data Registrasi +
+
+ + + + + + + + + + + + + + + +
#Nama PasienAsuransiNo. AsuransiR. PelayananPelaksanaTanggalStatusAksi
+
+
+
+
+ + @push('js-internal') + + @endpush +
\ No newline at end of file diff --git a/resources/views/admin/tr_registrasi/edit.blade.php b/resources/views/admin/tr_registrasi/edit.blade.php new file mode 100644 index 0000000..f1b82ae --- /dev/null +++ b/resources/views/admin/tr_registrasi/edit.blade.php @@ -0,0 +1,29 @@ + +
+
+
+
+

Edit Data Registrasi #{{$registrasi->id_registrasi}}

+
+ +
+ @csrf + + + + + + + + +
+ Batal + +
+ + +
+
+
+
+
diff --git a/resources/views/admin/tr_registrasi/index.blade.php b/resources/views/admin/tr_registrasi/index.blade.php new file mode 100644 index 0000000..0d30bc6 --- /dev/null +++ b/resources/views/admin/tr_registrasi/index.blade.php @@ -0,0 +1,55 @@ + +
+
+
+
+
+

Data Registrasi

+ Lihat selengkapnya +
+
+
+ @foreach ($registrasi as $d) +
+

#{{ $d->id_registrasi }}

+

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 +
+ @endforeach +
+
+
+
+
+ + @push('js-internal') + + @endpush +
\ No newline at end of file diff --git a/resources/views/admin/tr_registrasi/transaksi.blade.php b/resources/views/admin/tr_registrasi/transaksi.blade.php new file mode 100644 index 0000000..300d5b3 --- /dev/null +++ b/resources/views/admin/tr_registrasi/transaksi.blade.php @@ -0,0 +1,78 @@ + +
+
+
+ +

Struk Pembayaran

+ + + @if(count($transaksi) > 0) +
+

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 }}

+
+ + {{-- Tabel Tindakan --}} + + + + + + + + + + + @php $total = 0; @endphp + @foreach ($transaksi as $t) + @foreach ($t->tindakan as $tindakan) + @php + $subtotal = $t->jumlah_tindakan * $tindakan->tarif; + $total += $subtotal; + @endphp + + + + + + + @endforeach + @endforeach + +
TindakanJumlahTarifSubtotal
{{ $tindakan->nama_tindakan }}{{ $t->jumlah_tindakan }}Rp{{ number_format($tindakan->tarif, 0, ',', '.') }}Rp{{ number_format($subtotal, 0, ',', '.') }}
+ + {{-- Total --}} +
+ Total: Rp{{ number_format($total, 0, ',', '.') }} +
+ @else +

Tidak ada transaksi ditemukan.

+ @endif +
+
+ +
+ +
+ +
+ + + +
diff --git a/resources/views/admin/tr_transaksi/column/action.blade.php b/resources/views/admin/tr_transaksi/column/action.blade.php new file mode 100644 index 0000000..e83dc63 --- /dev/null +++ b/resources/views/admin/tr_transaksi/column/action.blade.php @@ -0,0 +1,8 @@ +
+ + Ubah + + +
\ No newline at end of file diff --git a/resources/views/admin/tr_transaksi/create.blade.php b/resources/views/admin/tr_transaksi/create.blade.php new file mode 100644 index 0000000..f663398 --- /dev/null +++ b/resources/views/admin/tr_transaksi/create.blade.php @@ -0,0 +1,42 @@ + +
+
+
+
+ {{-- Back button --}} +

Tambah Data Transaksi

+ +
+ @csrf + +
+ + +
+ +
+ + +
+ {{-- Submit button --}} +
+ Batal + +
+ + +
+
+
+
+
diff --git a/resources/views/admin/tr_transaksi/edit.blade.php b/resources/views/admin/tr_transaksi/edit.blade.php new file mode 100644 index 0000000..8f9b8eb --- /dev/null +++ b/resources/views/admin/tr_transaksi/edit.blade.php @@ -0,0 +1,25 @@ + +
+
+
+
+

Edit Data Tindakan #{{$transaksi->id_transaksi}}

+
+ +
+ @csrf + + + + +
+ Batal + +
+ + +
+
+
+
+
diff --git a/resources/views/admin/tr_transaksi/index.blade.php b/resources/views/admin/tr_transaksi/index.blade.php new file mode 100644 index 0000000..a0da264 --- /dev/null +++ b/resources/views/admin/tr_transaksi/index.blade.php @@ -0,0 +1,132 @@ + +
+
+
+
+
+

Data Transaksi

+
+
+ + + + + + + + + + + + +
#Nama TindakanJumlah TindakanPelaksanaTotal TarifAksi
+
+
+
+
+ + @push('js-internal') + + @endpush +
\ No newline at end of file diff --git a/resources/views/components/sidebar.blade.php b/resources/views/components/sidebar.blade.php index 20bf7e7..a61beb3 100644 --- a/resources/views/components/sidebar.blade.php +++ b/resources/views/components/sidebar.blade.php @@ -32,21 +32,16 @@ - -
  • - LogOut - {{--
    - @csrf - - - - Keluar - - -
    --}} -
  • +

    Transaksi

    +
    + + Registrasi Pasien + + + Transaksi Pasien + +
    + \ No newline at end of file diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 527f70c..f50fb99 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -20,7 +20,9 @@ - + + + @@ -40,9 +42,6 @@ -{{-- - --}} - @@ -58,6 +57,9 @@ + + + @stack('js-internal') \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 5565bbe..9b4a132 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6,6 +6,8 @@ use App\Http\Controllers\Admin\MsPegawaiController; use App\Http\Controllers\Admin\MsAsuransiController; use App\Http\Controllers\Admin\MsRuangPelayananController; use App\Http\Controllers\Admin\MsTindakanController; +use App\Http\Controllers\Admin\TrTransaksiController; +use App\Http\Controllers\Admin\TrRegistrasiController; /* |-------------------------------------------------------------------------- @@ -67,4 +69,24 @@ Route::group(['prefix' => 'admin'], function () { Route::post('/update/{id}', [MsTindakanController::class, 'update'])->name('admin.ms_tindakan.update'); Route::delete('/destroy/{id}', [MsTindakanController::class, 'destroy'])->name('admin.ms_tindakan.destroy'); }); + + Route::group(['prefix' => 'transaksi'], function () { + Route::get('/', [TrTransaksiController::class, 'index'])->name('admin.tr_transaksi.index'); + Route::get('/create', [TrTransaksiController::class, 'create'])->name('admin.tr_transaksi.create'); + Route::post('/store', [TrTransaksiController::class, 'store'])->name('admin.tr_transaksi.store'); + Route::get('/edit/{id}', [TrTransaksiController::class, 'edit'])->name('admin.tr_transaksi.edit'); + Route::post('/update/{id}', [TrTransaksiController::class, 'update'])->name('admin.tr_transaksi.update'); + Route::delete('/destroy/{id}', [TrTransaksiController::class, 'destroy'])->name('admin.tr_transaksi.destroy'); + }); + + Route::group(['prefix' => 'registrasi'], function () { + Route::get('/', [TrRegistrasiController::class, 'index'])->name('admin.tr_registrasi.index'); + Route::get('/show_transaction/{id}', [TrRegistrasiController::class, 'showTransaksiByRegistrasi'])->name('admin.tr_registrasi.show_transaksi'); + Route::get('/data', [TrRegistrasiController::class, 'data'])->name('admin.tr_registrasi.data'); + Route::get('/create', [TrRegistrasiController::class, 'create'])->name('admin.tr_registrasi.create'); + Route::post('/store', [TrRegistrasiController::class, 'store'])->name('admin.tr_registrasi.store'); + Route::get('/edit/{id}', [TrRegistrasiController::class, 'edit'])->name('admin.tr_registrasi.edit'); + Route::post('/update/{id}', [TrRegistrasiController::class, 'update'])->name('admin.tr_registrasi.update'); + Route::delete('/destroy/{id}', [TrRegistrasiController::class, 'destroy'])->name('admin.tr_registrasi.destroy'); + }); });