diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index c785db9..0c96777 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -6,15 +6,18 @@ use App\Mail\NotifikasiCustomer; use App\Mail\NotifikasiPembayaran; use App\Models\JadwalKonsul; use App\Models\Karbohidrat; +use App\Models\Karyawan; use App\Models\MasterMcu; use App\Models\Order; use App\Models\OrderDetail; +use App\Models\UnitInstalasi; use Carbon\Carbon; use Carbon\CarbonPeriod; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Str; +use Illuminate\Support\Facades\Validator; class CustomerController extends Controller { @@ -288,6 +291,10 @@ class CustomerController extends Controller 'alamat' => $biodataResult['alamat'], 'entry_at' => Carbon::now()->format('Y-m-d H:i:s.u'), ]; + if($jenisCustomer === "Karyawan RSAB Harapan Kita"){ + $nip_pns = Karyawan::where('namalengkap',$biodataResult['nama_pemesan'])->first()->nip_pns; + $payloadOrder['nip'] = $nip_pns ?? null; + } $order = Order::create($payloadOrder); foreach ($dataCart as $cart) { $payloadOrderDetail = [ @@ -555,4 +562,52 @@ class CustomerController extends Controller ]; return view('guest.success_page', $payload); } + + public function karyawan(Request $request) + { + $search = trim($request->input('search')); + + // 1. Validasi dulu + $validator = Validator::make( + ['search' => $search], + ['search' => 'required|string|min:2|max:50|regex:/^[a-zA-Z.\s]+$/'] + ); + if ($validator->fails()) { + return response()->json(['error' => 0, 'data' => []]); + } + + // 2. Baru query kalau ada keyword + $data =Karyawan::where('statusenabled', true) + ->where('namalengkap', 'ILIKE', "%{$search}%") + ->limit(5) + ->pluck('namalengkap') // langsung ambil string + ->map(fn($nama) => ['label' => $nama]); + + return response()->json(['error' => 0, 'data' => $data]); + } + + public function unitInstalasi(Request $request) + { + $search = trim($request->input('search')); + + // 1. Validasi dulu + $validator = Validator::make( + ['search' => $search], + ['search' => 'required|string|min:2|max:50|regex:/^[a-zA-Z.\s]+$/'] + ); + if ($validator->fails()) { + return response()->json(['error' => 0, 'data' => []]); + } + + // 2. Baru query kalau ada keyword + $data = UnitInstalasi::where('statusenabled', true) + ->select('name') + ->where('name', 'ILIKE', "%{$search}%") + ->limit(5) + ->get() + ->map(fn($row) => ['label' => $row->name]); + + return response()->json(['error' => 0, 'data' => $data]); + } } + diff --git a/app/Models/Karyawan.php b/app/Models/Karyawan.php new file mode 100644 index 0000000..7a3a0d4 --- /dev/null +++ b/app/Models/Karyawan.php @@ -0,0 +1,16 @@ + env('APP_TIMEZONE', 'utc' ), ], + 'dbKaryawan' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST_KARYAWAN', '127.0.0.1'), + 'port' => env('DB_PORT_KARYAWAN', '3306'), + 'database' => env('DB_DATABASE_KARYAWAN', 'laravel'), + 'username' => env('DB_USERNAME_KARYAWAN', 'root'), + 'password' => env('DB_PASSWORD_KARYAWAN', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + 'timezone' => env('APP_TIMEZONE', 'utc' ), + ], + + + ], /* diff --git a/env_prod b/env_prod index 73ddb2b..fc3d20d 100644 --- a/env_prod +++ b/env_prod @@ -27,12 +27,12 @@ DB_DATABASE_ORDER_GIZI = order_gizi DB_USERNAME_ORDER_GIZI = simrs DB_PASSWORD_ORDER_GIZI = @S1mrs.3205@ -DB_CONNECTION_ORDER_GIZI= pgsql -DB_HOST_ORDER_GIZI = 172.16.88.22 -DB_PORT_ORDER_GIZI = 5432 -DB_DATABASE_ORDER_GIZI = order_gizi -DB_USERNAME_ORDER_GIZI = simrs -DB_PASSWORD_ORDER_GIZI = @S1mrs.3205@ +DB_CONNECTION_AUTH_KARYAWAN = pgsql +DB_HOST_KARYAWAN = psql1.rsabhk.lan +DB_PORT_KARYAWAN = 5432 +DB_DATABASE_KARYAWAN = rsab_hk_production +DB_USERNAME_KARYAWAN = postgres +DB_PASSWORD_KARYAWAN = postgres DB_CONNECTION_AUTH_DEV = pgsql DB_HOST_AUTH_DEV = 172.16.88.22 diff --git a/public/cara_pesan/order_karyawan.png b/public/cara_pesan/order_karyawan.png new file mode 100644 index 0000000..037baaf Binary files /dev/null and b/public/cara_pesan/order_karyawan.png differ diff --git a/public/cara_pesan/order_keluarga_pasien.png b/public/cara_pesan/order_keluarga_pasien.png new file mode 100644 index 0000000..820f7ab Binary files /dev/null and b/public/cara_pesan/order_keluarga_pasien.png differ diff --git a/public/cara_pesan/order_masyarakat_umum.png b/public/cara_pesan/order_masyarakat_umum.png new file mode 100644 index 0000000..5299ae6 Binary files /dev/null and b/public/cara_pesan/order_masyarakat_umum.png differ diff --git a/public/js/checkout/index.js b/public/js/checkout/index.js index 9f0662f..7c49657 100644 --- a/public/js/checkout/index.js +++ b/public/js/checkout/index.js @@ -224,18 +224,38 @@ function showStep(index) { // ======================= function toggleCustomerFields() { const selected = $('input[name="jenis_customer"]:checked').val(); - if (selected === 'Karyawan RSAB Harapan Kita') { - $('.karyawan').show(); - $('.pasien, .umum').hide(); - } else if (selected === 'Keluarga Pasien / Penunggu Pasien') { - $('.pasien').show(); - $('.karyawan, .umum').hide(); - } else { - $('.umum').show(); - $('.karyawan, .pasien').hide(); + const $nama = $('#nama_pemesan'); + + // Sembunyikan semua section + $('.karyawan, .pasien, .umum').hide(); + + // Destroy jika sudah ada selectize + if ($nama[0] && $nama[0].selectize) { + $nama[0].selectize.destroy(); + } + + + switch (selected) { + case 'Karyawan RSAB Harapan Kita': + $('.karyawan').show(); + $nama.val('') + $nama.removeClass('form-control') + $("#help_nama_pemesan").removeClass('d-none') + selectKaryawan(); // inisialisasi ulang selectize + break; + case 'Keluarga Pasien / Penunggu Pasien': + $('.pasien').show(); + $nama.addClass('form-control') + $("#help_nama_pemesan").addClass('d-none') + break; + + default: // Masyarakat Umum + $('.umum').show(); + $nama.addClass('form-control') + $("#help_nama_pemesan").addClass('d-none') + break; } } - $('input[name="jenis_customer"]').on('change', toggleCustomerFields); toggleCustomerFields(); @@ -246,7 +266,9 @@ if (typeof checkout_biodata === 'object') { if(checkout_biodata.jenis_kelamin){ $(`input[name="jenis_kelamin"][value="${checkout_biodata.jenis_kelamin}"]`).prop('checked', true); } - $('#nama_pemesan').val(checkout_biodata.nama_pemesan); + if(checkout_biodata.jenis_customer !== 'Karyawan RSAB Harapan Kita'){ + $('#nama_pemesan').val(checkout_biodata.nama_pemesan); + } // $('#tanggal_lahir').val(checkout_biodata.tanggal_lahir); $('#tinggi_badan').val(checkout_biodata.tinggi_badan); $('#berat_badan').val(checkout_biodata.berat_badan); @@ -266,7 +288,7 @@ function isiKonfirmasi() { jenis_customer: $('input[name="jenis_customer"]:checked').val(), nama_pemesan: $('#nama_pemesan').val(), jenis_kelamin: $('input[name="jenis_kelamin"]:checked').val(), - // tanggal_lahir: $('#tanggal_lahir').val(), + id_karyawan: $('#id_karyawan').val(), tinggi_badan: $('#tinggi_badan').val(), berat_badan: $('#berat_badan').val(), no_whatsapp: $('#no_whatsapp').val(), @@ -293,6 +315,7 @@ function renderCartSummary() { container.innerHTML = ''; let totalKeseluruhan = 0; const carts = JSON.parse(sessionStorage.getItem('cart') || '[]'); + const checkout_biodata = JSON.parse(sessionStorage.getItem('checkout_biodata') || '[]'); carts.forEach((item) => { const pesananList = Array.isArray(item.pesanan) ? item.pesanan : []; @@ -438,31 +461,58 @@ function renderCartSummary() {
${item.deskripsi}
` : ''} -${item.deskripsi}
` : ''} + + +