Advertisement
dweialim

Konfirmasi Antrian

Dec 2nd, 2022 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.03 KB | None | 0 0
  1. <?php
  2. public function konfirmasiAntrian(Request $request){
  3.         Log::info("Konfirm Android Starter");
  4.         $hariIni = date('Y-m-d');
  5.         if(!isset($request->kode_booking) && !isset($request->token)){
  6.             return ['status'=> 'error', 'code'=>500 , 'message'=>'Ada Data Yang Tidak Terkirim, Silahkan Coba Lagi'];
  7.         }
  8.         //data request
  9.         $kodeBooking = $request->kode_booking;
  10.         $token = $request->token;
  11.         //mencocokan data
  12.         $dataBooking = DB::connection('mysql')->table('pasien_baru_temporary')
  13.             ->where('kodeUnik',$kodeBooking)
  14.             ->where('masukMaster',"belum")
  15.             ->where('tanggalPeriksa', date('Y-m-d'))
  16.             ->orderBy('id_pas', 'DESC')
  17.             ->first();
  18.         $dataToken = DB::connection('mysql')->table('token_konfirmasi')
  19.             ->where('token',$token)
  20.             ->where('status',0)
  21.             ->first();
  22.         if(!empty($dataBooking) && !empty($dataToken)){
  23.             //validasi antrian
  24.             if($dataBooking->tanggalPeriksa > $hariIni){
  25.                 return ['status'=> 'error', 'code'=>500 , 'message'=>'Antrian Harus Dikonfirmasi Sesuai Tanggal('. $dataBooking->tanggalPeriksa .')'];
  26.             }elseif($dataBooking->tanggalPeriksa < $hariIni){
  27.                 return ['status'=> 'error', 'code'=>500 , 'message'=>'Antrian Sudah Kadaluarsa Silahkan Ambil Ulang'];
  28.             }
  29.  
  30.             //setup data BPJS
  31.             $noKodeBooking = $this->generateNoKodeBooking($dataBooking->isPasienBaru, $dataBooking->tanggalPeriksa);
  32.             $generateReqAntreanBPJS = $this->generateReqAntrean($dataBooking, $noKodeBooking["kode_booking"], $noKodeBooking['nomor_antrian'], "toBpjs");
  33.             // $generateReqUpdateWaktuBPJS = $this->generateReqUpdateWaktuBpjs($dataBooking, $noKodeBooking["kode_booking"]);
  34.             //setup data local
  35.             $generateReqAntreanLocal = $this->generateReqAntrean($dataBooking, $noKodeBooking["kode_booking"], $noKodeBooking['nomor_antrian']);
  36.            
  37.             //validasi agar pasien tidak bisa mengambil 2x nomor
  38.             $cekDataAntrian = DB::connection('mysql')->table('antrian')
  39.             ->where('nik',$dataBooking->nik)
  40.             ->where('tgl_periksa', date('Y-m-d'))
  41.             ->first();
  42.             if(!empty($cekDataAntrian)){
  43.                 return ['status'=> 'error', 'code'=>500 , 'message'=>'NIK Telah Mengambil Antrian dengan Nomor Antrian '.$cekDataAntrian->no_antrian];
  44.             }
  45.  
  46.             $validasiBpjs = 0;
  47.             //hit to BPJS antreanAdd and updateWaktu
  48.             try {
  49.                 $antreanBpjs = new BridgBpjsController();
  50.                 $postAntreanBpjs =  $antreanBpjs->antreanAdd(new Request($generateReqAntreanBPJS));
  51.                 if ($postAntreanBpjs['metaData']->code != 200 ){
  52.                     if($postAntreanBpjs['metaData']->message != "Terdapat duplikasi Kode Booking"){
  53.                         //hit to table antrian dan antrian_tracer
  54.                         $postAntrian =  DB::connection('mysql')->table('antrian')->insertGetId($generateReqAntreanLocal);
  55.                         $generateReqAntreanTracer = $this->generateReqAntreanTracer($postAntrian, $dataBooking);
  56.                         $postAntrianTracer =  DB::connection('mysql')->table('antrian_tracer')->insert($generateReqAntreanTracer);
  57.                         $validasiBpjs = 1;
  58.                     }else{
  59.                         throw new \Exception($postAntreanBpjs['metaData']->message, (int)$postAntreanBpjs['metaData']->code);
  60.                     }
  61.                 }
  62.                 Log::info("POST BPJS SUCESS (SIMAPAN : ", [
  63.                     'data' => $generateReqAntreanBPJS,
  64.                     'response' => $postAntreanBpjs
  65.                 ]);
  66.             } catch (\Exception $e) {
  67.                 Log::info("POST BPJS ERROR (SIMAPAN) : ", [
  68.                     'data' => $generateReqAntreanBPJS,
  69.                     'messageErr' => $e->getMessage()
  70.                 ]);
  71.                 return ['status'=> 'error', 'code'=>$e->getCode() , 'message'=>$e->getMessage()];
  72.             }
  73.  
  74.             //hit to table antrian dan antrian_tracer
  75.             if($validasiBpjs == 0){
  76.                 try {
  77.                     $postAntrian =  DB::connection('mysql')->table('antrian')->insertGetId($generateReqAntreanLocal);
  78.                     $generateReqAntreanTracer = $this->generateReqAntreanTracer($postAntrian, $dataBooking);
  79.                     $postAntrianTracer =  DB::connection('mysql')->table('antrian_tracer')->insert($generateReqAntreanTracer);
  80.                 } catch (\Exception $th) {
  81.                     Log::info("konfirmasiAntrian - Error - ", $th->getMessage());
  82.                     return ['status'=> 'error', 'code'=>500 , 'message'=>$th->getMessage()];
  83.                 }
  84.             }
  85.  
  86.             // if($postAntreanBpjs && $postUpdateWaktuBpjs && $postAntrianTracer){
  87.             if($postAntreanBpjs && $postAntrianTracer){
  88.                 //menempatkan pasien_baru_temporary ke table token_konfirmasi dan memasukan pasien temporary ke master
  89.                 try {
  90.                     //update pasien ke token_konfirmasi
  91.                     DB::connection('mysql')->table('token_konfirmasi')->where('token',$token)->update([
  92.                         'pasien_baru_temporary_id' => $dataBooking->id_pas,
  93.                         'status' => 1
  94.                     ]);
  95.  
  96.                     //update status pasien
  97.                     DB::connection('mysql')->table('pasien_baru_temporary')
  98.                     ->where('id_pas', $dataBooking->id_pas)
  99.                     ->update(['masukMaster'=>'sudah']);
  100.  
  101.                     //generate newToken
  102.                     $generateNewQr = $this->generateQrCode();
  103.  
  104.                     //delete old svg token
  105.                     unlink(public_path('aset/images/tokenQR/'.$generateNewQr['data']->token.'.svg'));
  106.                 } catch (\Exception $e) {
  107.                     Log::info("konfirmasiAntrian - Error - ", $e->getMessage());
  108.                     return ['status'=> 'error', 'code'=>500 , 'message'=>'Kesalahan Konfirmasi, Silahkan Coba Lagi'];
  109.                 }
  110.                 //log untuk jaga2 data
  111.                 $logs = [
  112.                     "data" => [
  113.                         "dataBpjs" => [
  114.                             "antreanAdd" => $generateReqAntreanBPJS,
  115.                         ],
  116.                         "dataLocal" => [
  117.                             "antrian" => $generateReqAntreanLocal,
  118.                             "antrian_tracer" => $generateReqAntreanTracer
  119.                         ]
  120.                     ],
  121.                     "responseBpjs" => [
  122.                         "antreanAdd" => $postAntreanBpjs,
  123.                     ],
  124.                     "metodeKonfirmasi" => "SCAN"
  125.                 ];
  126.                 Log::info("konfirmasiAntrian - Success - ", $logs);
  127.                 //return success
  128.                 return ['status' => 'success', 'code'=>200, 'message'=> 'Berhasil Konfirmasi Antrian '. $noKodeBooking['nomor_antrian'] .', Silahkan Ambil Nomor Antrian'];
  129.             }
  130.         }elseif(empty($dataBooking)){
  131.             return ['status'=> 'error', 'code'=>500 , 'message'=>'Data Pasien Tidak Ditemukan, Silahkan Cek Kembali / Ambi Ulang Antrian'];
  132.         }elseif(empty($dataToken)){
  133.             return ['status'=> 'error', 'code'=>500 , 'message'=>'Token QR Sudah Digunakan, Silahkan Refresh Halaman QR'];
  134.         }
  135.  
  136.         return ['status'=> 'error', 'code'=>500 , 'message'=>'Data Tidak Ditemukan, Silahkan Coba Lagi'];
  137.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement