<?php
require_once GTFWConfiguration::GetValue( 'application', 'docroot') .'module/verifikasi/business/AppVerifikasi.class.php';
require_once GTFWConfiguration::GetValue( 'application', 'docroot') .'module/verifikasi/business/AppMahasiswa.class.php';
require_once GTFWConfiguration::GetValue( 'application', 'docroot') .'module/verifikasi/business/AppMahasiswaToSia.class.php';
class ProcessVerifikasi{
   var $_POST;
   var $Obj;
   var $pageView;
   var $cssDone = "notebox-done";
   var $cssFail = "notebox-warning";
   var $cssInfo = "notebox-info";
   var $cssAlert = "notebox-alert";
   var $return;
   var $decId;
   var $encId;

   var $tahunMasuk;
   var $semesterMasuk;
   var $prodiKode;
   var $nim;
   var $nama;

   function __construct() {
      $this->Obj = new AppVerifikasi();
      $this->mhsObj = new AppMahasiswa();
      $this->siaObj = new AppMahasiswaToSia();
      $this->_POST = $_POST->AsArray();
      $this->decId = Dispatcher::Instance()->Decrypt($_REQUEST['dataId']);
      $this->encId = Dispatcher::Instance()->Encrypt($this->decId);
      $this->pageView = Dispatcher::Instance()->GetUrl('verifikasi', 'verifikasi', 'view', 'html');
   }

   function SendToSia(){      
      $dataMhs=$this->mhsObj->GetDataMahasiswaById($this->decId);
      $dataOrtu=$this->mhsObj->GetDataOrtuById($this->decId);
      // print_r($dataMhs);exit();
      $this->tahunMasuk = $dataMhs[0]['mhs_thn_masuk'];
      if (empty($dataMhs[0]['mhs_sem_masuk']))
         $dataMhs[0]['mhs_sem_masuk'] = '1';
      $this->semesterMasuk = $dataMhs[0]['mhs_sem_masuk'];
      $this->prodiKode = $dataMhs[0]['mhs_prodi_kode'];
      $this->nim = $dataMhs[0]['mhs_niu'];
      $this->nama = $dataMhs[0]['mhs_nama'];
      
      $dataMhs[0]['mhs_nama'] = addslashes($dataMhs[0]['mhs_nama']);
      $dataMhs[0]['mhs_tempat_lahir'] = addslashes($dataMhs[0]['mhs_tempat_lahir']);
      $dataMhs[0]['mhs_alamat'] = addslashes($dataMhs[0]['mhs_alamat']);
      $dataMhs[0]['mhs_alamat_smta'] = addslashes($dataMhs[0]['mhs_alamat_smta']);
      $dataMhs[0]['mhs_almt_tempat_kerja'] = addslashes($dataMhs[0]['mhs_almt_tempat_kerja']);
      $dataMhs[0]['mhs_hobi'] = addslashes($dataMhs[0]['mhs_hobi']);
      $arrDataMhs=$dataMhs[0];
      foreach($dataMhs[0] as $k => $v){
         $arrDataMhs[$k.'_2'] = $dataMhs[0][$k];
      }

      $dataOrtu[0]['ortu_nama_ayah'] = addslashes($dataOrtu[0]['ortu_nama_ayah']);
      $dataOrtu[0]['ortu_nama_ibu'] = addslashes($dataOrtu[0]['ortu_nama_ibu']);
      $dataOrtu[0]['ortu_nama_wali'] = addslashes($dataOrtu[0]['ortu_nama_wali']);
      $dataOrtu[0]['ortu_alamat'] = addslashes($dataOrtu[0]['ortu_alamat']);
      $arrDataOrtu=$dataOrtu[0];
      $arrDataOrtu['ortu_mhs_id'] = $arrDataMhs['mhs_niu']; // di sia relasi mhs_ortu dengan mhs menggunakan nim
      foreach($dataOrtu[0] as $k => $v){
         $arrDataOrtu[$k.'_2'] = $dataOrtu[0][$k];
      }
      // print_r($arrDataMhs);
      // print_r($arrDataOrtu);exit();
      $addMhsToSia=$this->siaObj->DoAddMahasiswaToSia($arrDataMhs);
      $addOrtuToSia=$this->siaObj->DoAddOrangTuaMahasiswaToSia($arrDataOrtu);   

      $addData = $addMhsToSia && $addOrtuToSia;
      /**
      var_dump($addMhsToSia);
      var_dump($addOrtuToSia);
      var_dump($addData);
      exit;
      **/
      
      return $addData;
   }

   function SendAlert($alert, $sub_modul, $css='') {
      Messenger::Instance()->Send('verifikasi', $sub_modul, 'view', 'html', array($this->_POST, $alert, $css),Messenger::NextRequest);
   }

   function UpdateVerifikasi() {
         	
		//ambil data mahasiswa status bayar
		$dataMhsStatusBayar = $this->mhsObj->GetDataStatusBayarById($this->decId);      		
      
		// verifikasi
		$updateVerifikasi = $this->Obj->DoUpdateMahasiswaIsCalon($this->decId);
		
      
		// cek apakah nim sudah dibuat
		$no_nim = false;
		$get_nim = $this->Obj->GetNim($this->decId);
		$nim = $get_nim[0]['NIM'];
		$this->nama = $get_nim[0]['NAMA'];
		
		if (!empty($nim)) {			
			$this->Obj->StartTrans();
			$this->siaObj->StartTrans();
			$send_to_sia = $this->SendToSia();
			if ($send_to_sia) {
				$updateVerifikasi = $this->Obj->DoUpdateMahasiswaIsCalon($this->decId);
				$update_is_sent = $this->Obj->DoUpdateIsSent($this->decId);
				$insert_registrasi = $this->InsertRegistrasi();
				$insert_status_bayar = $this->InsertStatusBayar();
			}
			
			//cek data status bayar
			if(!empty($dataMhsStatusBayar)){
				$sent_data = $send_to_sia && $update_is_sent && $insert_registrasi && $insert_status_bayar;
			}else{
				$no_status_bayar = true;
			}
			
			/**
         	var_dump($send_to_sia);
			var_dump($update_is_sent);
			var_dump($insert_registrasi);
			var_dump($insert_status_bayar);
			var_dump($sent_data);
			exit;
			**/
				
			$this->Obj->EndTrans($sent_data);
			$this->siaObj->EndTrans($sent_data);
		} else {			
			$no_nim = true;
		}

	$arr_pesan = array();
	$arr_css = array();

	if ($updateVerifikasi === true) {
		$arr_pesan[] = array('Verifikasi Berhasil');
		$arr_css[] = array($this->cssDone);
	} else {
		$arr_pesan[] = array('Verifikasi Gagal');
		$arr_css[] = array($this->cssFail);
	}

	$aplikasi = 'Sistem Informasi Akademik';
	if ($sent_data === true) {
		$arr_pesan[] = array("Data mahasiswa dengan NIM \"$this->nim\" berhasil disimpan ke $aplikasi");
		$arr_css[] = array($this->cssDone);
	} else {
		if ($no_status_bayar === true){			//tambahan cek status bayar
			$arr_pesan[] = array("Data mahasiswa dengan nama \"$this->nama\" gagal disimpan ke $aplikasi karena data status bayar masih kosong");
			$arr_css[] = array($this->cssFail);
		}elseif ($no_nim === true) {
			$arr_pesan[] = array("Data mahasiswa dengan nama \"$this->nama\" belum dapat disimpan ke $aplikasi karena belum memiliki NIM");
			$arr_css[] = array($this->cssInfo);
		} else {
			$arr_pesan[] = array("Data mahasiswa dengan NIM \"$this->nim\" gagal disimpan ke $aplikasi");
			$arr_css[] = array($this->cssFail);
		}
	}

	$this->SendAlert($arr_pesan, 'verifikasi', $arr_css);

	return $this->pageView;
   }
   
   function InsertRegistrasi() {
      //--untuk insert tambahan field registrasi ke sia--//
      $dataMhsReg = $this->mhsObj->GetDataMhsRegById($this->decId);
		$kuitansi = $dataMhsReg[0]['mhs_reg_kuitansi'];
      $jml_bayar = $dataMhsReg[0]['mhs_reg_jml_bayar'];
      $tgl_bayar = $dataMhsReg[0]['mhs_reg_tgl_bayar'];
      //--end tambahan--//
      
      $sem_id = $this->tahunMasuk . $this->semesterMasuk;
      $prodi_kode = $this->prodiKode;
      // cek apakah semester prodi sudah dibuat
      $semester_prodi = $this->siaObj->GetCekSemesterProdi(array($sem_id, $prodi_kode));
      // jika sudah ada, insert jatah sks
      if (!empty($semester_prodi))
         $insert_jatah = $this->siaObj->DoInsertJatahSks(array($this->nim, $sem_id, $prodi_kode));
      // insert registrasi
      $insert_registrasi = $this->siaObj->DoInsertRegistrasi(array($this->nim, $kuitansi, $sem_id, $jml_bayar, $tgl_bayar));
      
      return $insert_registrasi;
   }
   
   //-- tambahan untuk insert data mhs ke mahasiswa_status_bayar di SIA --//
   function InsertStatusBayar(){
      $dataMhsStatusBayar = $this->mhsObj->GetDataStatusBayarById($this->decId);
      $idBayar = $dataMhsStatusBayar[0]['mhs_id_pembayaran'];
      $jnsBayar = $dataMhsStatusBayar[0]['mhs_jenis_pembayaran'];
      $isLunas = $dataMhsStatusBayar[0]['mhs_is_lunas'];
		
      $sem_id = $this->tahunMasuk . $this->semesterMasuk;
      
      //insert ke mahasiswa status bayar
      $insert_status_bayar = $this->siaObj->DoInsertStatusBayar(array($this->nim, $sem_id, $idBayar, $jnsBayar, $isLunas));
      
      return $insert_status_bayar;
   }

}
?>
