page no auth for register

This commit is contained in:
Muhammad Thoriq 2025-04-27 21:50:05 +07:00
parent 7966b1f95d
commit 5dbe3438ef
9 changed files with 1540 additions and 0 deletions

View File

@ -0,0 +1,386 @@
<?php
namespace App\Http\Controllers;
use App\Models\Asuransi;
use App\Models\Pasien;
use App\Models\Pegawai;
use App\Models\Registrasi;
use App\Models\Ruang_pelayanan;
use Barryvdh\DomPDF\Facade\Pdf;
use Carbon\Carbon;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Yajra\DataTables\Facades\DataTables;
class RegistrasiNoAuthController extends Controller
{
public function index()
{
$data['title'] = 'GUEST';
return view('registrasi_no_auth.index', $data);
}
public function create_pasien()
{
//
$data['title'] = 'PASIEN FORM';
$data['asuransi'] = Asuransi::all();
$data['pegawai'] = Pegawai::all();
return view('registrasi_no_auth.create_pasien', $data);
}
public function create()
{
//
$data['title'] = 'REGISTRASI FORM';
$data['asuransi'] = Asuransi::all();
$data['pegawai'] = Pegawai::all();
return view('registrasi_no_auth.create', $data);
}
public function get_ruang_pelayanan_by_pegawai(Request $request)
{
$id = $request->ruang_id;
$get_ruang_pelayanan = Ruang_pelayanan::findorFail($id);
if ($get_ruang_pelayanan) {
$data_return = [
'status' => true,
'data' => $get_ruang_pelayanan,
'msg' => null
];
return response()->json($data_return, 200);
} else {
$data_return = [
'status' => false,
'data' => null,
'msg' => 'Data Not Found!'
];
return response()->json($data_return, 404);
}
}
public function get_data_by_nik(Request $request)
{
$nik = $request->nik;
$get_data = Pasien::where('pasien_nik', $nik)->first();
if ($get_data) {
$data_return = [
'status' => true,
'data' => $get_data,
'msg' => null
];
return response()->json($data_return, 200);
} else {
$data_return = [
'status' => false,
'data' => null,
'msg' => 'Data Not Found!'
];
return response()->json($data_return, 404);
}
}
/**
* Store a newly created resource in storage.
*/
public function store_pasien(Request $request)
{
//
$nik = $request->nik;
$name = $request->name;
$tanggal_lahir = $request->tanggal_lahir;
$jenis_kelamin = $request->jenis_kelamin;
try {
DB::beginTransaction();
$insert = Pasien::create([
'pasien_nik' => $nik,
'pasien_name' => $name,
'tanggal_lahir' => $tanggal_lahir,
'jenis_kelamin' => $jenis_kelamin
]);
DB::commit();
$data_return = [
'status' => true,
'data' => null,
'msg' => null
];
return response()->json($data_return, 200);
} catch (Exception $e) {
DB::rollBack();
// Handle the exception or log the error
dd($e);
$data_return = [
'status' => false,
'data' => null,
'msg' => 'something wrong!!'
];
return response()->json($data_return, 500);
}
}
public function store(Request $request)
{
//
$tanggal_berobat = $request->tanggal_berobat;
$no_urut = 'RSHK'. Registrasi::where('registrasi_tanggal', $tanggal_berobat)->count() + 1;
$pasien_id = $request->pasien_id;
$asuransi_id = $request->asuransi_id;
$asuransi_no = $request->asuransi_no ?? "";
$pegawai_id = $request->pegawai_id;
$ruang_pelayanan_id = $request->ruang_pelayanan_id;
try {
DB::beginTransaction();
$insert = Registrasi::create([
'nomor_urut' => $no_urut,
'registrasi_tanggal' => $tanggal_berobat,
'pasien_id' => $pasien_id,
'asuransi_id' => $asuransi_id,
'asuransi_no' => $asuransi_no,
'pegawai_id' => $pegawai_id,
'ruang_pelayanan_id' => $ruang_pelayanan_id,
'status' => 0
]);
DB::commit();
$data_return = [
'status' => true,
'data' => $insert->id,
'msg' => null
];
return response()->json($data_return, 200);
} catch (Exception $e) {
DB::rollBack();
// Handle the exception or log the error
dd($e);
$data_return = [
'status' => false,
'data' => null,
'msg' => 'something wrong!!'
];
return response()->json($data_return, 500);
}
}
/**
* Display the specified resource.
*/
public function detail(string $id)
{
//
$registrasi = Registrasi::select([
'registrasis.id',
'registrasis.nomor_urut',
'registrasis.registrasi_tanggal',
'pasiens.pasien_name',
'asuransis.asuransi_name',
'registrasis.asuransi_no',
'pegawais.pegawai_name',
'ruang_pelayanans.ruang_pelayanan_name',
'registrasis.status'
])
->leftJoin('pasiens', 'pasiens.id', '=', 'registrasis.pasien_id')
->leftJoin('asuransis', 'asuransis.id', '=', 'registrasis.asuransi_id')
->leftJoin('pegawais', 'pegawais.id', '=', 'registrasis.pegawai_id')
->leftJoin('ruang_pelayanans', 'ruang_pelayanans.id', '=', 'registrasis.ruang_pelayanan_id')
->where('registrasis.id', $id)
->first();
if($registrasi){
$data['title'] = 'DETAIL REGISTRASI';
$data['registrasi'] = $registrasi;
return view('registrasi_no_auth.detail', $data);
} else {
abort(404);
}
}
public function download_pdf($id)
{
$registrasi = Registrasi::select([
'registrasis.id',
'registrasis.nomor_urut',
'registrasis.registrasi_tanggal',
'pasiens.pasien_name',
'asuransis.asuransi_name',
'registrasis.asuransi_no',
'pegawais.pegawai_name',
'ruang_pelayanans.ruang_pelayanan_name',
'registrasis.status'
])
->leftJoin('pasiens', 'pasiens.id', '=', 'registrasis.pasien_id')
->leftJoin('asuransis', 'asuransis.id', '=', 'registrasis.asuransi_id')
->leftJoin('pegawais', 'pegawais.id', '=', 'registrasis.pegawai_id')
->leftJoin('ruang_pelayanans', 'ruang_pelayanans.id', '=', 'registrasis.ruang_pelayanan_id')
->where('registrasis.id', $id)
->first();
if($registrasi){
$registrasi_update = Registrasi::findorFail($id);
$registrasi_update->update([
'status' => 1
]);
$data['registrasi'] = $registrasi;
// Render view to PDF
$pdf = Pdf::loadView('registrasi_no_auth.pdf', $data);
return $pdf->stream('registrasi_no_auth.pdf');
} else {
abort(404);
}
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
$registrasi = Registrasi::select([
'registrasis.id',
'registrasis.nomor_urut',
'registrasis.registrasi_tanggal',
'registrasis.pasien_id',
'pasiens.pasien_nik',
'pasiens.pasien_name',
'pasiens.tanggal_lahir',
'pasiens.jenis_kelamin',
'registrasis.asuransi_id',
'asuransis.asuransi_name',
'registrasis.asuransi_no',
'registrasis.pegawai_id',
'pegawais.pegawai_name',
'registrasis.ruang_pelayanan_id',
'ruang_pelayanans.ruang_pelayanan_name'
])
->leftJoin('pasiens', 'pasiens.id', '=', 'registrasis.pasien_id')
->leftJoin('asuransis', 'asuransis.id', '=', 'registrasis.asuransi_id')
->leftJoin('pegawais', 'pegawais.id', '=', 'registrasis.pegawai_id')
->leftJoin('ruang_pelayanans', 'ruang_pelayanans.id', '=', 'registrasis.ruang_pelayanan_id')
->where('registrasis.id', $id)
->first();
if($registrasi){
$data['title'] = 'EDIT REGISTRASI';
$data['asuransi'] = Asuransi::all();
$data['pegawai'] = Pegawai::all();
$data['registrasi'] = $registrasi;
return view('registrasi_no_auth.edit', $data);
} else {
abort(404);
}
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request)
{
//
$id = $request->registrasi_id;
$tanggal_berobat = $request->tanggal_berobat;
$pasien_id = $request->pasien_id;
$asuransi_id = $request->asuransi_id;
$asuransi_no = $request->asuransi_no ?? "";
$pegawai_id = $request->pegawai_id;
$ruang_pelayanan_id = $request->ruang_pelayanan_id;
$registrasi = Registrasi::findorFail($id);
if (!$registrasi) {
$data_return = [
'status' => false,
'data' => null,
'msg' => 'Data Not Found!'
];
return response()->json($data_return, 404);
}
try {
DB::beginTransaction();
$registrasi->update([
'registrasi_tanggal' => $tanggal_berobat,
'pasien_id' => $pasien_id,
'asuransi_id' => $asuransi_id,
'asuransi_no' => $asuransi_no,
'pegawai_id' => $pegawai_id,
'ruang_pelayanan_id' => $ruang_pelayanan_id
]);
DB::commit();
$data_return = [
'status' => true,
'data' => null,
'msg' => null
];
return response()->json($data_return, 200);
} catch (Exception $e) {
//throw $th;
DB::rollBack();
$data_return = [
'status' => false,
'data' => null,
'msg' => 'something wrong!!',
'msg_for_dev' => $e->getMessage()
];
return response()->json($data_return, 500);
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Request $request)
{
//
$id = $request->id;
$registrasi = Registrasi::findorFail($id);
if (!$registrasi) {
$data_return = [
'status' => false,
'data' => null,
'msg' => 'Data Not Found!'
];
return response()->json($data_return, 404);
}
try {
DB::beginTransaction();
$registrasi->update(['status' => 4]);
DB::commit();
$data_return = [
'status' => true,
'data' => null,
'msg' => null
];
return response()->json($data_return, 200);
} catch (Exception $e) {
//throw $th;
DB::rollBack();
$data_return = [
'status' => false,
'data' => null,
'msg' => 'something wrong!!',
'msg_for_dev' => $e->getMessage()
];
return response()->json($data_return, 500);
}
}
}

View File

@ -0,0 +1,319 @@
@extends('template.template_no_auth')
@section('title', 'Dashboard')
@section('content')
<div class="card shadow-sm">
<div class="card-header">
<h3 class="card-title">REGISTRASI FORM</h3>
<div class="card-toolbar gap-2">
<a href="{{ url('/registrasi') }}" class="btn btn-danger">Back</a>
</div>
</div>
<div class="card-body">
<div class="row d-flex justify-content-center">
<div class="col-md-8">
<form action="" id="form">
<div class="fv-row mb-10">
<label for="nik" class="required form-label">NIK</label>
<input type="text" name="nik" id="nik" class="form-control" placeholder="NIK"
oninput="numericOnly(this)" onfocus="numericOnly(this)" maxlength="16" />
<span id="status_nik"></span>
</div>
<div class="fv-row mb-10">
<label for="name" class="required form-label">Nama Pasien</label>
<input type="text" name="pasien_name" id="pasien_name" class="form-control"
placeholder="Nama Pasien" readonly />
<input type="hidden" name="pasien_id" id="pasien_id" />
</div>
<div class="fv-row mb-10">
<label for="tanggal_lahir" class="required form-label">Tanggal Lahir Pasien</label>
<input type="date" name="tanggal_lahir" id="tanggal_lahir" class="form-control"
placeholder="Tanggal Lahir Pasien" readonly />
</div>
<div class="fv-row mb-10">
<label for="jenis_kelamin" class="required form-label">Jenis Kelamin</label>
<input type="text" name="jenis_kelamin" id="jenis_kelamin" class="form-control"
placeholder="Jenis Kelamin Pasien" readonly />
</div>
<div class="fv-row mb-10">
<label for="tanggal_berobat" class="required form-label">Tanggal Berobat</label>
<input type="date" name="tanggal_berobat" id="tanggal_berobat" class="form-control"
placeholder="Tanggal Berobat" />
</div>
<div class="fv-row mb-10">
<label for="asuransi_id" class="form-label">Asuransi</label>
<select name="asuransi_id" id="asuransi_id" class="form-select" data-control="select2"
data-placeholder="Select an option">
<option value="-1" selected>Tidak Asuransi</option>
@foreach ($asuransi as $item)
<option value="{{ $item->id }}">{{ $item->asuransi_name }}</option>
@endforeach
</select>
</div>
<div class="fv-row mb-10">
<label for="asuransi_no" class="form-label">Nomor Asuransi</label>
<input type="text" name="asuransi_no" id="asuransi_no" class="form-control"
placeholder="Asuransi Nomor" />
</div>
<div class="fv-row mb-10">
<label for="pegawai_id" class="required form-label">Dokter</label>
<select name="pegawai_id" id="pegawai_id" class="form-select" data-control="select2"
data-placeholder="Select an option">
<option value="" disabled selected>Pilih Dokter</option>
@foreach ($pegawai as $item)
<option value="{{ $item->id }}" data-ruang="{{ $item->ruang_pelayanan_id }}">
{{ $item->pegawai_name }}</option>
@endforeach
</select>
</div>
<div class="fv-row mb-10">
<label for="ruang_pelayanan_name" class="required form-label">Ruang Pelayanan</label>
<input type="text" name="ruang_pelayanan_name" id="ruang_pelayanan_name" class="form-control"
placeholder="Ruang Pelayanan" readonly />
<input type="hidden" name="ruang_pelayanan_id" id="ruang_pelayanan_id" />
</div>
<div class="d-flex justify-content-end">
<button id="submit" class="btn btn-success">
<span class="indicator-label">
Submit
</span>
<span class="indicator-progress">
Please wait... <span class="spinner-border spinner-border-sm align-middle ms-2"></span>
</span>
</button>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
@section('custom_js')
<script>
let validator = null;
$(document).ready(function() {
const form = document.getElementById('form');
validator = FormValidation.formValidation(
form, {
fields: {
'nik': {
validators: {
notEmpty: {
message: 'NIK Name is required'
}
}
},
'pasien_name': {
validators: {
notEmpty: {
message: 'Pasien Name is required'
}
}
},
'tanggal_berobat': {
validators: {
notEmpty: {
message: 'Tanggal Berobat is required'
},
callback: {
message: 'Tanggal tidak boleh ke tanggal sebelumnya',
callback: function(input) {
if (input.value === '') {
return true; // biar validasi kosong ditangani notEmpty
}
var selectedDate = new Date(input.value);
var today = new Date();
// Bikin hari ini jam 00:00 biar adil bandinginnya
today.setHours(0, 0, 0, 0);
return selectedDate >= today;
}
}
}
},
'asuransi_no': {
validators: {
callback: {
message: 'Asuransi Nomor is required',
callback: function(input) {
const selectedValue = $('#asuransi_id').val();
if (selectedValue != -1) {
return input.value !== '';
}
return true;
}
}
}
},
'pegawai_id': {
validators: {
notEmpty: {
message: 'Dokter is required'
}
}
},
'ruang_pelayanan_name': {
validators: {
notEmpty: {
message: 'Ruang Pelayanan is required'
}
}
},
},
plugins: {
trigger: new FormValidation.plugins.Trigger(),
bootstrap: new FormValidation.plugins.Bootstrap5({
rowSelector: '.fv-row',
eleInvalidClass: '',
eleValidClass: ''
})
}
}
);
var today = new Date().toISOString().split('T')[0];
// Set atribut min ke input tanggal
$('#tanggal_berobat').attr('min', today);
$('#nik').change(function() {
get_data_by_nik();
});
$('#pegawai_id').change(function() {
get_ruang_pelayanan_by_pegawai();
});
$('#submit').click(function(e) {
e.preventDefault();
submit();
});
});
function numericOnly(el) {
el.value = el.value.replace(/[^0-9]/g, "");
}
function get_data_by_nik() {
const nik = $('#nik').val();
$('#status_nik').removeClass(['text-danger', 'text-success']);
$('#status_nik').html(
`<div class="spinner-border spinner-border-sm" role="status"><span class="visually-hidden">Loading...</span></div> cek nip`
);
$.ajax({
url: "{{ url('/guest/registrasi/get_by_nik') }}",
type: "POST",
data: {
nik: nik,
_token: "{{ csrf_token() }}"
},
dataType: 'JSON',
success: function(response) {
if (response.status) {
$('#status_nik').html(``);
const data = response.data;
$('#pasien_id').val(data.id);
$('#pasien_name').val(data.pasien_name);
$('#tanggal_lahir').val(data.tanggal_lahir);
$('#jenis_kelamin').val(data.jenis_kelamin);
}
},
error: function(xhr) {
$('#status_nik').addClass('text-danger');
$('#status_nik').html(`NIK Tidak Terdaftar`);
}
});
}
function get_ruang_pelayanan_by_pegawai() {
const ruang_id = $('#pegawai_id option:selected').data('ruang');
$.ajax({
url: "{{ url('/guest/registrasi/get_ruang_pelayanan_by_pegawai') }}",
type: "POST",
data: {
ruang_id: ruang_id,
_token: "{{ csrf_token() }}"
},
dataType: 'JSON',
success: function(response) {
if (response.status) {
const data = response.data;
$('#ruang_pelayanan_id').val(data.id);
$('#ruang_pelayanan_name').val(data.ruang_pelayanan_name);
}
},
error: function(xhr) {
console.log(xhr);
}
});
}
function submit() {
if (validator) {
validator.validate().then(function(status) {
if (status == 'Valid') {
$('#submit').attr("data-kt-indicator", "on");
$('#submit').attr("disabled", "true");
var data = {_token: "{{ csrf_token() }}"};
$.each($('#form').serializeArray(), function(_, field) {
data[field.name] = field.value;
});
$.ajax({
url: "{{ url('/guest/registrasi/store') }}",
type: "POST",
data: data,
dataType: 'JSON',
success: function(response) {
if (response.status) {
Swal.fire({
icon: "success",
text: "Data Berhasil Disimpan",
buttonsStyling: false,
confirmButtonText: "close",
customClass: {
confirmButton: "btn btn-danger"
}
}).then(() => {
const id = response.data;
window.open(`{{ url('/guest/registrasi/download/') }}/${id}`, '_blank');
window.location.href = `{{ url('/guest/registrasi') }}`;
});
}
},
error: function(xhr) {
var errorMessage = xhr.responseJSON ? xhr.responseJSON.msg :
"Terjadi kesalahan!";
Swal.fire({
icon: "error",
text: errorMessage,
buttonsStyling: false,
confirmButtonText: "Close",
customClass: {
confirmButton: "btn btn-danger"
}
});
},
complete: function() {
$('#submit').removeAttr("data-kt-indicator");
$('#submit').removeAttr("disabled");
}
});
}
});
}
}
</script>
@endsection

View File

@ -0,0 +1,219 @@
@extends('template.template_no_auth')
@section('title', 'Dashboard')
@section('content')
<div class="card shadow-sm">
<div class="card-header">
<h3 class="card-title">TAMBAH PASIEN</h3>
<div class="card-toolbar gap-2">
<a href="{{ url('/guest/registrasi') }}" class="btn btn-danger">Back</a>
</div>
</div>
<div class="card-body">
<div class="row d-flex justify-content-center">
<div class="col-md-8">
<form action="" id="form">
<div class="fv-row mb-10">
<label for="nik" class="required form-label">NIK</label>
<input type="text" name="nik" id="nik" class="form-control"
placeholder="Nama Pasien" oninput="numericOnly(this)" onfocus="numericOnly(this)" maxlength="16" />
<span id="status_nik"></span>
</div>
<div class="fv-row mb-10">
<label for="name" class="required form-label">Nama</label>
<input type="text" name="name" id="name" class="form-control"
placeholder="Nama Pasien" />
</div>
<div class="fv-row mb-10">
<label for="tanggal_lahir" class="required form-label">Tanggal Lahir</label>
<input type="date" name="tanggal_lahir" id="tanggal_lahir" class="form-control"
placeholder="Tanggal Lahir Pasien" />
</div>
<div class="fv-row mb-10">
<label for="tanggal_lahir" class="required form-label">Jenis Kelamin</label>
<select name="jenis_kelamin" id="jenis_kelamin" class="form-select" data-control="select2" data-placeholder="Select an option">
<option value="" disabled selected>Pilih Jenis Kelamin</option>
<option value="laki-laki">Laki-laki</option>
<option value="perempuan">Perempuan</option>
</select>
</div>
<div class="d-flex justify-content-end">
<button id="submit" class="btn btn-success">
<span class="indicator-label">
Submit
</span>
<span class="indicator-progress">
Please wait... <span class="spinner-border spinner-border-sm align-middle ms-2"></span>
</span>
</button>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
@section('custom_js')
<script>
let validator = null;
$(document).ready(function() {
const form = document.getElementById('form');
validator = FormValidation.formValidation(
form, {
fields: {
'nik': {
validators: {
notEmpty: {
message: 'NIK is required'
},
stringLength: {
min: 16,
max: 16,
message: 'The NIK must be more 16 characters'
},
}
},
'name': {
validators: {
notEmpty: {
message: 'Name is required'
}
}
},
'tanggal_lahir': {
validators: {
notEmpty: {
message: 'Tanggal Lahir is required'
}
}
},
'jenis_kelamin': {
validators: {
notEmpty: {
message: 'Jenis Kelamin is required'
}
}
},
},
plugins: {
trigger: new FormValidation.plugins.Trigger(),
bootstrap: new FormValidation.plugins.Bootstrap5({
rowSelector: '.fv-row',
eleInvalidClass: '',
eleValidClass: ''
})
}
}
);
$('#nik').change(function() {
get_data_by_nik();
});
$('#submit').click(function(e) {
e.preventDefault();
submit();
});
});
function get_data_by_nik() {
const nik = $('#nik').val();
$('#status_nik').removeClass(['text-danger', 'text-success']);
$('#status_nik').html(
`<div class="spinner-border spinner-border-sm" role="status"><span class="visually-hidden">Loading...</span></div> cek nip`
);
$.ajax({
url: "{{ url('/guest/registrasi/get_by_nik') }}",
type: "POST",
data: {
nik: nik,
_token: "{{ csrf_token() }}"
},
dataType: 'JSON',
success: function(response) {
if (response.status) {
$('#status_nik').addClass('text-danger');
$('#status_nik').html(`NIP Telah digunakan, Silahkan ganti!`);
$('#nik').val('');
}
},
error: function(xhr) {
$('#status_nik').addClass('text-success');
$('#status_nik').html(`NIK Bisa Digunakan`);
}
});
}
function numericOnly(el){
el.value = el.value.replace(/[^0-9]/g, "");
}
function submit() {
if (validator) {
validator.validate().then(function(status) {
if (status == 'Valid') {
$('#submit').attr("data-kt-indicator", "on");
$('#submit').attr("disabled", "true");
const nik = $('#nik').val();
const name = $('#name').val();
const tanggalLahir = $('#tanggal_lahir').val();
const jenisKelamin = $('#jenis_kelamin').val();
const data = {
nik: nik,
name : name,
tanggal_lahir: tanggalLahir,
jenis_kelamin: jenisKelamin,
_token: "{{ csrf_token() }}"
}
$.ajax({
url: "{{ url('/guest/registrasi/store_pasien') }}",
type: "POST",
data: data,
dataType: 'JSON',
success: function(response) {
if (response.status) {
Swal.fire({
icon: "success",
text: "Data Berhasil Disimpan",
buttonsStyling: false,
confirmButtonText: "close",
customClass: {
confirmButton: "btn btn-danger"
}
}).then(() => {
window.location.href = "{{ url('/guest/registrasi/') }}";
});
}
},
error: function(xhr) {
var errorMessage = xhr.responseJSON ? xhr.responseJSON.msg : "Terjadi kesalahan!";
Swal.fire({
icon: "error",
text: errorMessage,
buttonsStyling: false,
confirmButtonText: "Close",
customClass: {
confirmButton: "btn btn-danger"
}
});
},
complete: function() {
$('#submit').removeAttr("data-kt-indicator");
$('#submit').removeAttr("disabled");
}
});
}
});
}
}
</script>
@endsection

View File

@ -0,0 +1,87 @@
@extends('template.template')
@section('title', 'Dashboard')
@section('content')
<div class="card shadow-sm">
<div class="card-header">
<h3 class="card-title">DETAIL REGISTRASI FORM</h3>
<div class="card-toolbar gap-2">
<a href="{{ url('/registrasi/download/' . $registrasi->id) }}" class="btn btn-primary" target="_blank"
id="download_btn">Download</a>
<a href="{{ url('/registrasi') }}" class="btn btn-danger">Back</a>
</div>
</div>
<div class="card-body">
<h1 class="text-center fs-1 fw-bolder">{{ $registrasi->nomor_urut }}</h1>
<div class="row mt-10">
<div class="col-md-6">
<div class="row">
<div class="col-md-4">
<label class="fs-4" for="">PASIEN</label>
</div>
<div class="col-md-8">
<label class="fs-4" for="">: {{ $registrasi->pasien_name }}</label>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label class="fs-4" for="">TANGGAL REGISTRASI</label>
</div>
<div class="col-md-8">
<label class="fs-4" for="">: {{ $registrasi->registrasi_tanggal }}</label>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label class="fs-4" for="">ASURANSI</label>
</div>
<div class="col-md-8">
<label class="fs-4" for="">: {{ $registrasi->asuransi_name }}</label>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label class="fs-4" for="">NOMOR ASURANSI</label>
</div>
<div class="col-md-8">
<label class="fs-4" for="">: {{ $registrasi->asuransi_no }}</label>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-4">
<label class="fs-4" for="">DOKTER</label>
</div>
<div class="col-md-8">
<label class="fs-4" for="">: {{ $registrasi->pegawai_name }}</label>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label class="fs-4" for="">RUANG PELAYANAN</label>
</div>
<div class="col-md-8">
<label class="fs-4" for="">: {{ $registrasi->ruang_pelayanan_name }}</label>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('custom_js')
<script>
let validator = null;
$(document).ready(function() {
$('#download_btn').click(function() {
setTimeout(function() {
window.location.href = "{{ url('/registrasi') }}";
}, 2000);
})
});
</script>
@endsection

View File

@ -0,0 +1,331 @@
@extends('template.template')
@section('title', 'Dashboard')
@section('content')
<div class="card shadow-sm">
<div class="card-header">
<h3 class="card-title">REGISTRASI FORM</h3>
<div class="card-toolbar gap-2">
<a href="{{ url('/registrasi') }}" class="btn btn-danger">Back</a>
</div>
</div>
<div class="card-body">
<div class="row d-flex justify-content-center">
<div class="col-md-8">
<form action="" id="form">
<div class="fv-row mb-10">
<label for="nik" class="required form-label">NIK</label>
<input type="hidden" name="registrasi_id" id="registrasi_id" value="{{$registrasi->id}}">
<input type="text" name="nik" id="nik" class="form-control" placeholder="NIK"
oninput="numericOnly(this)" onfocus="numericOnly(this)" maxlength="16" value="{{ $registrasi->pasien_nik }}" />
<span id="status_nik"></span>
</div>
<div class="fv-row mb-10">
<label for="name" class="required form-label">Nama Pasien</label>
<input type="text" name="pasien_name" id="pasien_name" class="form-control"
placeholder="Nama Pasien" readonly value="{{ $registrasi->pasien_name }}" />
<input type="hidden" name="pasien_id" id="pasien_id" value="{{ $registrasi->pasien_id }}" />
</div>
<div class="fv-row mb-10">
<label for="tanggal_lahir" class="required form-label">Tanggal Lahir Pasien</label>
<input type="date" name="tanggal_lahir" id="tanggal_lahir" class="form-control"
placeholder="Tanggal Lahir Pasien" readonly value="{{ $registrasi->tanggal_lahir }}" />
</div>
<div class="fv-row mb-10">
<label for="jenis_kelamin" class="required form-label">Jenis Kelamin</label>
<input type="text" name="jenis_kelamin" id="jenis_kelamin" class="form-control"
placeholder="Jenis Kelamin Pasien" readonly value="{{ $registrasi->jenis_kelamin }}" />
</div>
<div class="fv-row mb-10">
<label for="tanggal_berobat" class="required form-label">Tanggal Berobat</label>
<input type="date" name="tanggal_berobat" id="tanggal_berobat" class="form-control"
placeholder="Tanggal Berobat" value="{{ $registrasi->registrasi_tanggal }}" />
</div>
<div class="fv-row mb-10">
<label for="asuransi_id" class="form-label">Asuransi</label>
<select name="asuransi_id" id="asuransi_id" class="form-select" data-control="select2"
data-placeholder="Select an option">
<option value="-1" {{ $registrasi->asuransi_id == -1 ? 'selected' : '' }}>Tidak Asuransi</option>
@foreach ($asuransi as $item)
@php
$selected = '';
if($item->id == $registrasi->asuransi_id){
$selected = 'selected';
}
@endphp
<option value="{{ $item->id }}" {{$selected}}>{{ $item->asuransi_name }}</option>
@endforeach
</select>
</div>
<div class="fv-row mb-10">
<label for="asuransi_no" class="form-label">Nomor Asuransi</label>
<input type="text" name="asuransi_no" id="asuransi_no" class="form-control"
placeholder="Asuransi Nomor" value="{{ $registrasi->asuransi_no }}" />
</div>
<div class="fv-row mb-10">
<label for="pegawai_id" class="required form-label">Dokter</label>
<select name="pegawai_id" id="pegawai_id" class="form-select" data-control="select2"
data-placeholder="Select an option">
<option value="" disabled selected>Pilih Dokter</option>
@foreach ($pegawai as $item)
@php
$selected = '';
if($item->id == $registrasi->pegawai_id){
$selected = 'selected';
}
@endphp
<option value="{{ $item->id }}" data-ruang="{{ $item->ruang_pelayanan_id }}" {{$selected}}>
{{ $item->pegawai_name }}</option>
@endforeach
</select>
</div>
<div class="fv-row mb-10">
<label for="ruang_pelayanan_name" class="required form-label">Ruang Pelayanan</label>
<input type="text" name="ruang_pelayanan_name" id="ruang_pelayanan_name" class="form-control"
placeholder="Ruang Pelayanan" readonly value="{{ $registrasi->ruang_pelayanan_name }}" />
<input type="hidden" name="ruang_pelayanan_id" id="ruang_pelayanan_id" value="{{ $registrasi->ruang_pelayanan_id }}" />
</div>
<div class="d-flex justify-content-end">
<button id="submit" class="btn btn-success">
<span class="indicator-label">
Submit
</span>
<span class="indicator-progress">
Please wait... <span class="spinner-border spinner-border-sm align-middle ms-2"></span>
</span>
</button>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
@section('custom_js')
<script>
let validator = null;
$(document).ready(function() {
const form = document.getElementById('form');
validator = FormValidation.formValidation(
form, {
fields: {
'nik': {
validators: {
notEmpty: {
message: 'NIK Name is required'
}
}
},
'pasien_name': {
validators: {
notEmpty: {
message: 'Pasien Name is required'
}
}
},
'tanggal_berobat': {
validators: {
notEmpty: {
message: 'Tanggal Berobat is required'
},
callback: {
message: 'Tanggal tidak boleh ke tanggal sebelumnya',
callback: function(input) {
if (input.value === '') {
return true; // biar validasi kosong ditangani notEmpty
}
var selectedDate = new Date(input.value);
var today = new Date();
// Bikin hari ini jam 00:00 biar adil bandinginnya
today.setHours(0, 0, 0, 0);
return selectedDate >= today;
}
}
}
},
'asuransi_no': {
validators: {
callback: {
message: 'Asuransi Nomor is required',
callback: function(input) {
const selectedValue = $('#asuransi_id').val();
if (selectedValue != -1) {
return input.value !== '';
}
return true;
}
}
}
},
'pegawai_id': {
validators: {
notEmpty: {
message: 'Dokter is required'
}
}
},
'ruang_pelayanan_name': {
validators: {
notEmpty: {
message: 'Ruang Pelayanan is required'
}
}
},
},
plugins: {
trigger: new FormValidation.plugins.Trigger(),
bootstrap: new FormValidation.plugins.Bootstrap5({
rowSelector: '.fv-row',
eleInvalidClass: '',
eleValidClass: ''
})
}
}
);
var today = new Date().toISOString().split('T')[0];
// Set atribut min ke input tanggal
$('#tanggal_berobat').attr('min', today);
$('#nik').change(function() {
get_data_by_nik();
});
$('#pegawai_id').change(function() {
get_ruang_pelayanan_by_pegawai();
});
$('#submit').click(function(e) {
e.preventDefault();
submit();
});
});
function numericOnly(el) {
el.value = el.value.replace(/[^0-9]/g, "");
}
function get_data_by_nik() {
const nik = $('#nik').val();
$('#status_nik').removeClass(['text-danger', 'text-success']);
$('#status_nik').html(
`<div class="spinner-border spinner-border-sm" role="status"><span class="visually-hidden">Loading...</span></div> cek nip`
);
$.ajax({
url: "{{ url('/pasien/get_by_nik') }}",
type: "POST",
data: {
nik: nik,
_token: "{{ csrf_token() }}"
},
dataType: 'JSON',
success: function(response) {
if (response.status) {
$('#status_nik').html(``);
const data = response.data;
$('#pasien_id').val(data.id);
$('#pasien_name').val(data.pasien_name);
$('#tanggal_lahir').val(data.tanggal_lahir);
$('#jenis_kelamin').val(data.jenis_kelamin);
}
},
error: function(xhr) {
$('#status_nik').addClass('text-danger');
$('#status_nik').html(`NIK Tidak Terdaftar`);
}
});
}
function get_ruang_pelayanan_by_pegawai() {
const ruang_id = $('#pegawai_id option:selected').data('ruang');
$.ajax({
url: "{{ url('/registrasi/get_ruang_pelayanan_by_pegawai') }}",
type: "POST",
data: {
ruang_id: ruang_id,
_token: "{{ csrf_token() }}"
},
dataType: 'JSON',
success: function(response) {
if (response.status) {
const data = response.data;
$('#ruang_pelayanan_id').val(data.id);
$('#ruang_pelayanan_name').val(data.ruang_pelayanan_name);
}
},
error: function(xhr) {
console.log(xhr);
}
});
}
function submit() {
if (validator) {
validator.validate().then(function(status) {
if (status == 'Valid') {
$('#submit').attr("data-kt-indicator", "on");
$('#submit').attr("disabled", "true");
var data = {_token: "{{ csrf_token() }}"};
$.each($('#form').serializeArray(), function(_, field) {
data[field.name] = field.value;
});
$.ajax({
url: "{{ url('/registrasi/update') }}",
type: "POST",
data: data,
dataType: 'JSON',
success: function(response) {
if (response.status) {
Swal.fire({
icon: "success",
text: "Data Berhasil Diupdate",
buttonsStyling: false,
confirmButtonText: "close",
customClass: {
confirmButton: "btn btn-danger"
}
}).then(() => {
window.location.href = "{{ url('/registrasi') }}";
});
}
},
error: function(xhr) {
var errorMessage = xhr.responseJSON ? xhr.responseJSON.msg :
"Terjadi kesalahan!";
Swal.fire({
icon: "error",
text: errorMessage,
buttonsStyling: false,
confirmButtonText: "Close",
customClass: {
confirmButton: "btn btn-danger"
}
});
},
complete: function() {
$('#submit').removeAttr("data-kt-indicator");
$('#submit').removeAttr("disabled");
}
});
}
});
}
}
</script>
@endsection

View File

@ -0,0 +1,13 @@
@extends('template.template_no_auth')
@section('title', 'Dashboard')
@section('content')
<div class="d-flex justify-content-center align-items-center gap-3 vh-100">
<a href="{{url('/guest/registrasi/create_pasien')}}" class="btn btn-primary btn-lg">DAFTAR PASIEN BARU</a>
<a href="{{url('/guest/registrasi/create')}}" class="btn btn-primary btn-lg">REGISTRASI BEROBAT</a>
</div>
@endsection
@section('custom_js')
@endsection

View File

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Struk Belanja</title>
<style>
body {
font-family: Arial, sans-serif;
}
.header, .footer {
text-align: center;
}
.items {
width: 100%;
margin-top: 20px;
border-top: 1px solid #000;
border-bottom: 1px solid #000;
}
.items th, .items td {
padding: 8px;
text-align: left;
}
.total {
font-weight: bold;
font-size: 18px;
}
</style>
</head>
<body>
<div class="header">
<h2>{{$registrasi->nomor_urut}}</h2>
<p>{{ $registrasi->registrasi_tanggal }}</p>
</div>
<table class="items">
<thead>
</thead>
<tbody>
<tr>
<td>DOKTER</td>
<td>{{ $registrasi->pegawai_name }}</td>
</tr>
<tr>
<td>RUANG PELAYANAN</td>
<td>{{ $registrasi->ruang_pelayanan_name }}</td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -0,0 +1,118 @@
<!DOCTYPE html>
<!--
Author: Keenthemes
Product Name: Metronic
Product Version: 8.2.0
Purchase: https://1.envato.market/EA4JP
Website: http://www.keenthemes.com
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
License: For each use you must have a valid license purchased only from above link in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>
<base href="" />
<title>{{ $title ?? 'SIM RS' }}</title>
<meta charset="utf-8" />
<meta name="description" content="SIM RS" />
<meta name="keywords" content="SIM RS" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="article" />
<meta property="og:title" content="SIM RS" />
<meta property="og:url" content="" />
<meta property="og:site_name" content="Keenthemes | Metronic" />
<link rel="canonical" href="" />
<link rel="shortcut icon" href="assets/media/logos/favicon.ico" />
<!--begin::Fonts(mandatory for all pages)-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,400,500,600,700" />
<!--end::Fonts-->
<!--begin::Vendor Stylesheets(used for this page only)-->
<link href="{{ asset('metronic/assets/plugins/custom/fullcalendar/fullcalendar.bundle.css') }}" rel="stylesheet"
type="text/css" />
<link href="{{ asset('metronic/assets/plugins/custom/datatables/datatables.bundle.css') }}" rel="stylesheet"
type="text/css" />
<!--end::Vendor Stylesheets-->
<!--begin::Global Stylesheets Bundle(mandatory for all pages)-->
<link href="{{ asset('metronic/assets/plugins/global/plugins.bundle.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('metronic/assets/css/style.bundle.css') }}" rel="stylesheet" type="text/css" />
<!--end::Global Stylesheets Bundle-->
<script>
// Frame-busting to prevent site from being loaded within a frame without permission (click-jacking) if (window.top != window.self) { window.top.location.replace(window.self.location.href); }
</script>
</head>
<style>
</style>
<!--end::Head-->
<!--begin::Body-->
<body id="kt_app_body" data-kt-app-header-fixed="true" data-kt-app-header-fixed-mobile="true"
data-kt-app-sidebar-enabled="true" data-kt-app-sidebar-fixed="true" data-kt-app-sidebar-push-toolbar="true"
data-kt-app-sidebar-push-footer="true" data-kt-app-sidebar-stacked="true"
data-kt-app-sidebar-secondary-enabled="true" class="app-default bg-dark">
<!--begin::Theme mode setup on page load-->
<script>
var defaultThemeMode = "light";
var themeMode;
if (document.documentElement) {
if (document.documentElement.hasAttribute("data-bs-theme-mode")) {
themeMode = document.documentElement.getAttribute("data-bs-theme-mode");
} else {
if (localStorage.getItem("data-bs-theme") !== null) {
themeMode = localStorage.getItem("data-bs-theme");
} else {
themeMode = defaultThemeMode;
}
}
if (themeMode === "system") {
themeMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
}
document.documentElement.setAttribute("data-bs-theme", themeMode);
}
</script>
<!--end::Theme mode setup on page load-->
<!--begin::App-->
<div class="d-flex flex-column flex-root app-root" id="kt_app_root">
<div class="container-fluid">
<div class="mt-5">
@yield('content')
</div>
</div>
</div>
<!--end::App-->
<!--begin::Javascript-->
<script>
var hostUrl = "assets/";
</script>
<!--begin::Global Javascript Bundle(mandatory for all pages)-->
<script src="{{ asset('metronic/assets/plugins/global/plugins.bundle.js') }}"></script>
<script src="{{ asset('metronic/assets/js/scripts.bundle.js') }}"></script>
<!--end::Global Javascript Bundle-->
<!--begin::Vendors Javascript(used for this page only)-->
<script src="{{ asset('metronic/assets/plugins/custom/fullcalendar/fullcalendar.bundle.js') }}"></script>
<script src="{{ asset('metronic/assets/plugins/custom/datatables/datatables.bundle.js') }}"></script>
<!--end::Vendors Javascript-->
<!--begin::Custom Javascript(used for this page only)-->
<script src="{{ asset('metronic/assets/js/widgets.bundle.js') }}"></script>
<script src="{{ asset('metronic/assets/js/custom/widgets.js') }}"></script>
<script src="{{ asset('metronic/assets/js/custom/apps/chat/chat.js') }}"></script>
<script src="{{ asset('metronic/assets/js/custom/utilities/modals/upgrade-plan.js') }}"></script>
<script src="{{ asset('metronic/assets/js/custom/utilities/modals/new-target.js') }}"></script>
<script src="{{ asset('metronic/assets/js/custom/utilities/modals/new-address.js') }}"></script>
<script src="{{ asset('metronic/assets/js/custom/utilities/modals/users-search.js') }}"></script>
<script>
$(document).ready(function(){
});
</script>
@yield('custom_js')
<!--end::Custom Javascript-->
<!--end::Javascript-->
</body>
<!--end::Body-->
</html>

View File

@ -7,6 +7,7 @@ use App\Http\Controllers\DokterController;
use App\Http\Controllers\PasienController;
use App\Http\Controllers\PegawaiController;
use App\Http\Controllers\RegistrasiController;
use App\Http\Controllers\RegistrasiNoAuthController;
use App\Http\Controllers\RuangPelayananController;
use App\Http\Controllers\TindakanController;
use App\Http\Controllers\TransaksiController;
@ -94,6 +95,20 @@ Route::middleware([CheckSession::class])->group(function () {
});
//registrasi_no_auth
Route::get('/guest/registrasi/', [RegistrasiNoAuthController::class, 'index']);
Route::post('/guest/registrasi/get_by_nik', [RegistrasiNoAuthController::class, 'get_data_by_nik']);
Route::get('/guest/registrasi/create_pasien', [RegistrasiNoAuthController::class, 'create_pasien']);
Route::get('/guest/registrasi/create', [RegistrasiNoAuthController::class, 'create']);
Route::post('/guest/registrasi/get_ruang_pelayanan_by_pegawai', [RegistrasiNoAuthController::class, 'get_ruang_pelayanan_by_pegawai']);
Route::post('/guest/registrasi/store_pasien', [RegistrasiNoAuthController::class, 'store_pasien']);
Route::post('/guest/registrasi/store', [RegistrasiNoAuthController::class, 'store']);
Route::get('/guest/registrasi/detail/{id}', [RegistrasiNoAuthController::class, 'detail']);
Route::get('/guest/registrasi/download/{id}', [RegistrasiNoAuthController::class, 'download_pdf']);
Route::get('/guest/registrasi/edit/{id}', [RegistrasiNoAuthController::class, 'edit']);
Route::post('/guest/registrasi/update', [RegistrasiNoAuthController::class, 'update']);
Route::post('/guest/registrasi/void', [RegistrasiNoAuthController::class, 'destroy']);
Route::get('/login', [AuthController::class, 'login']);
Route::post('/do_login', [AuthController::class, 'do_login']);
Route::get('/logout', [AuthController::class, 'logout']);