<?php
require_once GTFWConfiguration::GetValue( 'application', 'docroot') . 
   'module/mahasiswa/business/AppMahasiswa.class.php';
   
require_once GTFWConfiguration::GetValue( 'application', 'docroot') . 
   'module/mahasiswa/business/AppMahasiswaToFinansi.class.php';

require_once GTFWConfiguration::GetValue( 'application', 'docroot') . 
   'module/mahasiswa/business/AppMahasiswaSia.class.php';

require_once GTFWConfiguration::GetValue( 'application', 'docroot') . 
   'module/mahasiswa/business/AppMahasiswaUm.class.php';
     
require_once GTFWConfiguration::GetValue( 'application', 'gtfw_base') . 
   'main/lib/ExcelReader/ExcelReader.class.php';
   
require_once GTFWConfiguration::GetValue( 'application', 'docroot') .
   'main/function/date.php';

class ProcessMahasiswa {
   var $_POST;
   var $Obj;
   var $pageView;
   var $pageInput;
   //css hanya dipake di view
   var $cssDone = "notebox-done";
   var $cssFail = "notebox-warning";

   var $return;
   var $decId;
   var $encId;
   var $totalKuota;
   var $confirm;
   
   function __construct($asService = false){
	   if($asService)return true;

      $this->mhsObjAdmisi=new AppMahasiswa();
      $this->mhsObjFinansi=new AppMahasiswaToFinansi();
      $this->mhsObjSia=new AppMahasiswaSia();
      $this->mhsObjUm=new AppMahasiswaUm();
      $this->_POST = $_POST->AsArray();
      $this->useUm=GTFWConfiguration::GetValue( 'application', 'use_gtum');
      // awalnya ini menggunakan $_REQUEST['dataId'], tapi ternyata form yg di-post akan mereplace form yang di-get
      // sehingga ketika di get ada nilai dan di post null, maka yg tertangkap adalah null,
      // jadi jika menggunakan request harus ada jaminan data yg ada di get dan post keduanya terisi
      if (isset($_GET['dataId']))
         $dataId = $_GET['dataId'];
      else
         $dataId = $_POST['dataId'];
      $this->decId = Dispatcher::Instance()->Decrypt($dataId);
      $this->encId = Dispatcher::Instance()->Encrypt($this->decId);
      $this->pageView = Dispatcher::Instance()->GetUrl('mahasiswa', 'mahasiswa', 'view', 'html');
      $this->pageInput = Dispatcher::Instance()->GetUrl('mahasiswa', 'inputMahasiswa', 'view', 'html');
      $this->pageImport = Dispatcher::Instance()->GetUrl('mahasiswa', 'importMahasiswa', 'view', 'html');
	  
	  $tgl_daftar=$this->_POST ['mhs_tanggal_daftar_year'].'-' .
                  $this->_POST ['mhs_tanggal_daftar_mon'].'-'.
                  $this->_POST ['mhs_tanggal_daftar_day'] ;
                  
      if ($tgl_daftar=='0000-00-00'){
         $this->_POST['mhs']['mhs_tgl_daftar']=NULL;
      }else{
         $this->_POST['mhs']['mhs_tgl_daftar']= $tgl_daftar;
      }
      
      $tgl_lahir= $this->_POST ['mhs_tanggal_lahir_year'].'-'.
                  $this->_POST ['mhs_tanggal_lahir_mon'] .'-'.
                  $this->_POST ['mhs_tanggal_lahir_day'] ;
                  
      if ($tgl_lahir=='0000-00-00'){         
         $this->_POST['mhs']['mhs_tgl_lahir']=  NULL;
      }else{
         $this->_POST['mhs']['mhs_tgl_lahir']=$tgl_lahir;
      }                                       
      
      $tgl_ijazah_smta= $this->_POST ['mhs_tgl_ijazah_smta_year'].'-'.
                        $this->_POST ['mhs_tgl_ijazah_smta_mon'].'-'.
                        $this->_POST ['mhs_tgl_ijazah_smta_day'];
                        
      if ($tgl_ijazah_smta=='0000-00-00'){                       
         $this->_POST['mhs']['mhs_tgl_ijazah_smta']=  NULL;
      }else{
         $this->_POST['mhs']['mhs_tgl_ijazah_smta']= $tgl_ijazah_smta;
      }                                             
  
      $this->_POST['mhs']['mhs_user_pengubah']=$_SESSION['username'];
   
   
      $tgl_lahir_ayah= $this->_POST['ortu_tgl_lahir_ayah_year'].'-'.
                       $this->_POST['ortu_tgl_lahir_ayah_mon'].'-'.
                       $this->_POST['ortu_tgl_lahir_ayah_day'];
                       
      if ($tgl_lahir_ayah=='0000-00-00'){                     
         $this->_POST['ortu']['ortu_tgl_lahir_ayah']= NULL;
      }else{
         $this->_POST['ortu']['ortu_tgl_lahir_ayah']= $tgl_lahir_ayah;
      }          
      
      $tgl_byr_ipp= $this->_POST['mhs_tgl_bayar_ipp_year'].'-'.
                       $this->_POST['mhs_tgl_bayar_ipp_mon'].'-'.
                       $this->_POST['mhs_tgl_bayar_ipp_day'];
                       
      if ($tgl_byr_ipp=='0000-00-00'){                     
         $this->_POST['mhs']['mhs_tgl_bayar_ipp']= NULL;
      }else{
         $this->_POST['mhs']['mhs_tgl_bayar_ipp']= $tgl_byr_ipp;
      }     
      
      $tgl_lahir_ibu= $this->_POST['ortu_tgl_lahir_ibu_year'].'-'.
                       $this->_POST['ortu_tgl_lahir_ibu_mon'].'-'.
                       $this->_POST['ortu_tgl_lahir_ibu_day'];
                       
      if ($tgl_lahir_ibu=='0000-00-00'){                     
         $this->_POST['ortu']['ortu_tgl_lahir_ibu']= NULL;
      }else{
         $this->_POST['ortu']['ortu_tgl_lahir_ibu']= $tgl_lahir_ibu;
      }     
      
      $tgl_ayah_meninggal=$this->_POST['ortu_tgl_ayah_meninggal_year'].'-'.
                          $this->_POST['ortu_tgl_ayah_meninggal_mon'].'-'.
                          $this->_POST['ortu_tgl_ayah_meninggal_day'];
                          
      if ($tgl_ayah_meninggal=='0000-00-00'){                     
         $this->_POST['ortu']['ortu_tgl_ayah_meninggal']=NULL;
      }else{
         $this->_POST['ortu']['ortu_tgl_ayah_meninggal']=$tgl_ayah_meninggal;
      }
      
      $tgl_ibu_meninggal=$this->_POST['ortu_tgl_ibu_meninggal_year'].'-'.
                          $this->_POST['ortu_tgl_ibu_meninggal_mon'].'-'.
                          $this->_POST['ortu_tgl_ibu_meninggal_day'];
                          
      if ($tgl_ibu_meninggal=='0000-00-00'){                     
         $this->_POST['ortu']['ortu_tgl_ibu_meninggal']=NULL;
      }else{
         $this->_POST['ortu']['ortu_tgl_ibu_meninggal']=$tgl_ibu_meninggal;
      }  
                                                      
      $tgl_lahir_wali= $this->_POST['ortu_tgl_lahir_wali_year'].'-'.
                       $this->_POST['ortu_tgl_lahir_wali_mon'].'-'.
                       $this->_POST['ortu_tgl_lahir_wali_day'];
                       
      if ($tgl_lahir_wali=='0000-00-00'){                     
         $this->_POST['ortu']['ortu_tgl_lahir_wali']= NULL;
      }else{
         $this->_POST['ortu']['ortu_tgl_lahir_wali']= $tgl_lahir_wali;
      }       
      
      $tgl_wali_meninggal_wali=$this->_POST['ortu_tgl_wali_meninggal_year'].'-'.
                              $this->_POST['ortu_tgl_wali_meninggal_mon'].'-'.
                              $this->_POST['ortu_tgl_wali_meninggal_day'];
                              
      if ($tgl_lahir_wali=='0000-00-00'){                         
         $this->_POST['ortu']['ortu_tgl_wali_meninggal_wali']= NULL;
      }else{
         $this->_POST['ortu']['ortu_tgl_wali_meninggal_wali']= $tgl_wali_meninggal_wali;
      }                                                     
                                                            
      if($this->_POST['mhs']['mhs_nama_angkatan']==''){
         $this->_POST['mhs']['mhs_nama_angkatan']=$this->_POST['mhs']['mhs_thn_masuk'];
      }
      
     //print_r($this->_POST['mhs']);
   }
   
   function Check(){
      //tambahan untuk mengecek waktu kuliah yang digunakan normal atau menggunkan sesi
      if($this->_POST['sesiAktif']==1){
         //ketika waktu kuliah normal
         if($this->decId==''){
            if((trim($this->_POST['mhs']['mhs_no_tes']) == "") or (trim($this->_POST['mhs']['mhs_nama']) == "") or (trim($this->_POST['mhs']['mhs_thn_masuk']) == "") or (trim($this->_POST['mhs']['mhs_sems_masuk']) == "") or (trim($this->_POST['mhs']['mhs_jalur_masuk']) == "")or (trim($this->_POST['mhs']['mhs_prodi']) == "")or (trim($this->_POST['mhs']['mhs_gel_daftar']) == "") or (trim($this->_POST['mhs']['mhs_status_masuk']) == "")){
               return "empty";
            }else{
               return true;
            }
            return false;
         }else{
            if( (trim($this->_POST['mhs']['mhs_nama']) == "") or (trim($this->_POST['mhs']['mhs_thn_masuk']) == "") or (trim($this->_POST['mhs']['mhs_sems_masuk']) == "") or (trim($this->_POST['mhs']['mhs_jalur_masuk']) == "") or (trim($this->_POST['mhs']['mhs_prodi']) == "")or (trim($this->_POST['mhs']['mhs_gel_daftar']) == "") or (trim($this->_POST['mhs']['mhs_status_masuk']) == "")){
               return "empty";
            }else{
               return true;
            }
            return false;
         }
      } else {
         //ketika menggunakan sesi
         if($this->decId==''){
            if((trim($this->_POST['mhs']['mhs_no_tes']) == "") or (trim($this->_POST['mhs']['mhs_nama']) == "") or (trim($this->_POST['mhs']['mhs_thn_masuk']) == "") or (trim($this->_POST['mhs']['mhs_sems_masuk']) == "") or (trim($this->_POST['mhs']['mhs_jalur_masuk']) == "")or (trim($this->_POST['mhs']['mhs_prodi']) == "")or (trim($this->_POST['mhs']['mhs_gel_daftar']) == "") or (trim($this->_POST['mhs']['mhs_sesi_kuliah']) == "") or (trim($this->_POST['mhs']['mhs_status_masuk']) == "")){
               return "empty";
            }else{
               $idSesiKuliah = $this->_POST['mhs']['mhs_sesi_kuliah'];
               $tahunAjaran = $this->_POST['mhs']['mhs_thn_masuk'];
               $kodeProdi = $this->_POST['mhs']['mhs_prodi'];
            
               $kuotaTerisi = $this->mhsObjAdmisi->GetCurrentJumlahPesertaSesi($idSesiKuliah, $tahunAjaran, $kodeProdi);
               $kuotaTotal = $this->mhsObjAdmisi->GetTotalKuotaKelas($idSesiKuliah, $tahunAjaran, $kodeProdi);
               
               $ses_name = 'confirm'.$idSesiKuliah.'-'.$tahunAjaran.'-'.$kodeProdi;
            
               if($kuotaTerisi[0]['total']==NULL){
                  $total = 0;
               }else{
                  $total = $kuotaTerisi[0]['total'];
               }
               
               if($kuotaTotal[0]['maksimal']==NULL){
                  $max = 0;
               }else{
                  $max = $kuotaTotal[0]['maksimal'];
               }
                              
               if($total<$max){
                  return true;
               } else {
                  if($_SESSION[$ses_name] == 'YES'){
                     unset ($_SESSION[$ses_name]);
                     return true;
                  } else {
                     $this->totalKuota = $max;
                     $_SESSION[$ses_name] = 'YES';
                     return "full";
                  }
               }
            }
            return false;
            
         }else{
            if( (trim($this->_POST['mhs']['mhs_nama']) == "") or (trim($this->_POST['mhs']['mhs_thn_masuk']) == "") or (trim($this->_POST['mhs']['mhs_sems_masuk']) == "") or (trim($this->_POST['mhs']['mhs_jalur_masuk']) == "") or (trim($this->_POST['mhs']['mhs_prodi']) == "")or (trim($this->_POST['mhs']['mhs_gel_daftar']) == "") or (trim($this->_POST['mhs']['mhs_sesi_kuliah']) == "") or (trim($this->_POST['mhs']['mhs_status_masuk']) == "")){
               return "empty";
            }else{
               return true;
            }
            return false;
         }
      }
   }
   
   function UploadFile($file){
      if (isset($_POST['btnimport'])){
         $_FILES['file']['name'] = preg_replace(
            '/[^a-zA-Z0-9\.\$\%\'\`\-\@\{\}\~\!\#\(\)\&\_\^]/'
            ,'',str_replace(array(' ','%20'),array('_','_'),$_FILES['file']['name']));
   
         $files = explode(".", $_FILES['file']['name']);
         
         if (strtolower($files[count($files) - 1]) != "xls" ){
            $return=false;
         }else {
            move_uploaded_file($_FILES['file']['tmp_name'], $file);
            $return=true;
         }
      }
      return $return;
   }
   
   function ReadFile($file){
      if (file_exists($file)) {
         $xls = new Spreadsheet_Excel_Reader();
         $xls->setOutputEncoding('CP1251');
         $xls->read($file);
         $return=$xls;
      
      }
      return $return;
   }
   
   function SaveData($arrData){
	  
      for($i=0;$i<sizeof($arrData);$i++){

         for($j=0;$j<sizeof($arrData[$i]);$j++){
         
            if($j<=40){
               $arrDataMhs[$j]=$arrData[$i][$j];
            }elseif($j>=41){
               $arrDataOrtuMhs[$j]=$arrData[$i][$j];
            }
         }
         

         $arrDataMhs=array_values($arrDataMhs);
         $arrDataMhs[41]=$_POST['tahun_masuk'];
         $arrDataMhs[42]=$_POST['sems_masuk'];
         $arrDataMhs[43]=$this->_POST['mhs']['mhs_user_pengubah'];
         
         
         for($k=0;$k<sizeOf($arrDataMhs);$k++)
            $arrDataMhs[$k] = mysql_escape_string($arrDataMhs[$k]);
		 
         
         $this->mhsObjAdmisi->StartTrans();
         $this->mhsObjFinansi->StartTrans();
		 
         $mhsFieldLength=$this->mhsObjAdmisi->GetFieldLengthTableMhs();
          //print_r($arrDataMhs);
          //print_r($mhsFieldLength); exit;
                   
         for($l=0;$l<sizeof($mhsFieldLength);$l++) {
            /*if(strlen($arrDataMhs[$l])>$mhsFieldLength[$l]){
                $arrDataMhs[$l]=substr($arrDataMhs[$l], 0, $mhsFieldLength[$l]);
            }*/                     
         }
         //print_r($arrDataMhs);
         
         //import data mahasiswa ke gt admisi                  
         $importMhs=$this->mhsObjAdmisi->DoImportMahasiswa($arrDataMhs);
         
         //mulai ambil data yang dibutuhkan untuk insert data mhs ke gt finansi
         $mhs=$this->mhsObjAdmisi->GetMhsId();

         $userId=$this->mhsObjAdmisi->GetUserIdByUserName($arrDataMhs[41]);
        // print_r($userId);
         if($this->_POST['sems_masuk']=="GANJIL"){
           $periodeJenisId="1";
         }else{
         
           $periodeJenisId="2";  
         }
         
         $periodeId=$this->mhsObjFinansi->GetPeriodeId($this->_POST['tahun_masuk'],$periodeJenisId);
         //print_r($periodeId);
         $prodiId=$this->mhsObjFinansi->GetProdiId($arrDataMhs[6]);
         $idJalur=$this->mhsObjFinansi->GetIdJalur($arrDataMhs[3]);
         //end ambil data
         
         //import data mhs ke gt finansi
         $importMhsToFinansi=$this->mhsObjFinansi->DoImportMahasiswa($mhs[0]['mhs_id'],$arrDataMhs[0],$arrDataMhs[1],$arrDataMhs[2],$prodiId[0]['prodi_id'],$arrDataMhs[5],$arrDataMhs[4],$idJalur[0]['jalur_id'], $periodeId[0]['periodeId'],$userId[0]['UserId']);
/**
var_dump($importMhs);
var_dump($importMhsToFinansi);
exit;
**/
         $arrDataOrtuMhs[75]=$mhs[0]['mhs_id'];
         
         for($m=0;$l<sizeOf($arrDataOrtuMhs);$m++)
          $arrDataOrtuMhs[$m] = mysql_escape_string($arrDataOrtuMhs[$m]); 
         
         $ortuFieldsLength=$this->mhsObjAdmisi->GetFieldLengthTableOrtuMhs();
         
         for($n=0;$n<sizeof($ortuFieldsLength);$n++){
            /*if(strlen($arrDataOrtuMhs[$n])>$ortuFieldsLength[$n])
                $arrDataOrtuMhs[$n]=substr($arrDataOrtuMhs[$n], 0, $ortuFieldsLength[$n]);   */
         }
         //print_r($arrDataOrtuMhs);
         $importOrtuMhs=$this->mhsObjAdmisi->DoImportOrtu($arrDataOrtuMhs);

         $importData=$importOrtuMhs && $importMhs && $importMhsToFinansi;
         
         /*var_dump($importOrtuMhs);
         var_dump($importMhs);
         var_dump($importMhsToFinansi);
         exit;*/
         
         
         $this->mhsObjAdmisi->EndTrans($importData);
         $this->mhsObjFinansi->EndTrans($importData);
         
         if($importData===true){
            $berhasil++;
         }elseif($importData===false){
            $gagal++;
            
            $g=$i-1;
            if($g<0)
               $g=0;
            $_SESSION['arrDataMhsFail'][$g]=$arrData[$i];
         }
         
      
      }
      $return ['berhasil']=$berhasil;
      $return ['gagal']=$gagal;
      
      return $return;
   }
   
   function ImportFile($response=''){
   
      if (isset($_POST['btnbalik'])) {
      
         unset($_SESSION['countMhsExist']);
         unset($_SESSION['countMhsNotExist']);
         unset($_SESSION['arrDataMhsExist']);
         unset($_SESSION['countMhsNotExist']);
         
         if ($response == 'json')
            return Dispatcher::Instance()->GetUrl('mahasiswa', 'mahasiswa', 'view', 'html', true);
         else
            return Dispatcher::Instance()->GetUrl('mahasiswa', 'mahasiswa', 'view', 'html');
      }
      
      //mulai upload file xls
      $fileName=date('Ymd') . '_' . $_FILES['file']['name'];
      $dir = dirname(realpath($_SERVER['SCRIPT_FILENAME']));
      $file = $dir . "/file/tmp_import/" . $fileName;
      
      $uploadFile=$this->UploadFile($file);      
      
      //mulai baca file xls
      if($uploadFile==true){
      
         $dataFile=$this->ReadFile($file);

         if($dataFile==true){
            for ($i=2;$i <=$dataFile->sheets[0]['numRows'];$i++) {
            
               for ($j=1;$j<=$dataFile->sheets[0]['numCols'];$j++) {
               
                  if (isset($dataFile->sheets[0]['cells'][$i][$j]))
                     $arrData[$j-1] = $dataFile->sheets[0]['cells'][$i][$j];
                  else if($dataFile->sheets[0]['cells'][$i][$j]=='')
                     if(($j==1)or($j==3))
                        $arrData[$j-1] = '';
                     elseif(($j==54)or($j==56)or($j==68)or($j==71))
                        $arrData[$j-1] = 0;
                     else
                        $arrData[$j-1] = null;
                   
               }
               
                 
               //print_r($arrData);exit;
               $mhsExist=$this->mhsObjAdmisi->CheckMhsIsExist($arrData[1],$arrData[6]);
               
               if ($mhsExist===true){
                  $countMhsExist++;
                  $arrDataMhsExist[$countMhsExist-1]=$arrData;

               }else{
                  $countMhsNotExist++;
                  $arrDataMhsNotExist[$countMhsNotExist-1]=$arrData;                  
               }
            }
            
            Messenger::Instance()->Send('mahasiswa', 'importMahasiswa', 'view', 'html', 
            array($this->_POST),Messenger::NextRequest);
            
            //drop hasil import to session
            $_SESSION['arrDataMhsExist']=$arrDataMhsExist;
            $_SESSION['arrDataMhsNotExist']=$arrDataMhsNotExist;
            $_SESSION['countMhsExist']=$countMhsExist;
            $_SESSION['countMhsNotExist']=$countMhsNotExist;

         }
         
         unlink($file);
      
      if ($response == 'json')
         return Dispatcher::Instance()->GetUrl('mahasiswa', 'importMahasiswa', 'view', 'html', true);
      else
         return Dispatcher::Instance()->GetUrl('mahasiswa', 'importMahasiswa', 'view', 'html');
         
      }elseif ($uploadFile===false){   
      
            Messenger::Instance()->Send('mahasiswa', 'importMahasiswa', 'view', 'html', 
            array($this->_POST,'File XLS Tidak Valid'),Messenger::NextRequest);
            
            if ($response == 'json')
               return Dispatcher::Instance()->GetUrl('mahasiswa', 'importMahasiswa', 'view', 'html', true);
            else
               return Dispatcher::Instance()->GetUrl('mahasiswa', 'importMahasiswa', 'view', 'html');  
      }
      
      //mulai meyimpan hasil import kedalam Db
      if (isset($_POST['btnsimpan'])){
        $cekPeriodeFinansi=$this->mhsObjFinansi->CekPeriodeAktif($_POST['sems_masuk'],$_POST['tahun_masuk']);
        if($cekPeriodeFinansi>0){
           if( (isset($_POST['check_exist']) )and (!isset($_POST['check_not_exist']))){
           
              $arrDataImport=$_SESSION['arrDataMhsExist'];
  
           }else if((!isset($_POST['check_exist'])) and (isset($_POST['check_not_exist']))){
              
              $arrDataImport=$_SESSION['arrDataMhsNotExist'];
  
           }else if((isset($_POST['check_exist'])) and (isset($_POST['check_not_exist']))){
           
              $arrDataImport=array_merge($_SESSION['arrDataMhsExist'],$_SESSION['arrDataMhsNotExist']);
              
           }else{
           
              Messenger::Instance()->Send('mahasiswa', 'importMahasiswa', 'view', 'html', 
              array($this->_POST,'Hasil import harus dipilih salah satu'),Messenger::NextRequest);
              
              if ($response == 'json')
                 return Dispatcher::Instance()->GetUrl('mahasiswa', 'importMahasiswa', 'view', 'html', true);
              else
                 return Dispatcher::Instance()->GetUrl('mahasiswa', 'importMahasiswa', 'view', 'html');  
           }
           //print_r($arrDataImport[1]);exit;           
           $importData=$this->SaveData($arrDataImport);
           
           if($importData){
              if($importData['berhasil']>0){   
                  $psn['berhasil']=$importData['berhasil'].' data berhasil di import';                 
              }
             // print_r($importData);
              if($importData['gagal']>0){
               $psn['gagal']=$importData['gagal'].' data gagal di Import';

              }
                 Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
                 array($this->_POST,$psn, 
                 $this->cssFail),Messenger::NextRequest);  
              //hapus data dari session
              unset($_SESSION['countMhsExist']);
              unset($_SESSION['countMhsNotExist']);
              unset($_SESSION['arrDataMhsExist']);
              unset($_SESSION['countMhsNotExist']);
              
              if ($response == 'json')
                 return Dispatcher::Instance()->GetUrl('mahasiswa', 'mahasiswa', 'view', 'html');
              else
                 return Dispatcher::Instance()->GetUrl('mahasiswa', 'mahasiswa', 'view', 'html');  
            }
         }else{
            unset($_SESSION['countMhsExist']);
            unset($_SESSION['countMhsNotExist']);
            unset($_SESSION['arrDataMhsExist']);
            unset($_SESSION['countMhsNotExist']);
            $sems=$_POST['sems_masuk'];
            $thn=$_POST['tahun_masuk'] -> raw();
            $thn2= (int) ($thn + 1);
            //var_dump($thn2);exit;
            $psn="Penambahan Gagal Dilakukan<br /> Periode " . $sems . " " . $thn ."/". $thn2.' Tidak Ditemukan Di Gt Finansi';
           
            Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
            array($this->_POST,$psn,$this->cssFail),Messenger::NextRequest);
            
            if ($response == 'json')
               return Dispatcher::Instance()->GetUrl('mahasiswa', 'mahasiswa', 'view', 'html', true);
            else
               return Dispatcher::Instance()->GetUrl('mahasiswa', 'mahasiswa', 'view', 'html');  

          }    
      }      
   }
   
   function Add(){
      //print_r($this->_POST);
      $cek = $this->Check();
      if (isset($_POST['btnbalik'])) {
         return $this->pageView;
      }
      
      if($cek === true) {
         $cekPeriodeFinansi=$this->mhsObjFinansi->CekPeriodeAktif($this->_POST['mhs']['mhs_sems_masuk'],$this->_POST['mhs']['mhs_thn_masuk']);
         //print_r($cekPeriodeFinansi);
                     
            if($cekPeriodeFinansi>0){
               $this->mhsObjAdmisi->StartTrans();
               $this->mhsObjFinansi->StartTrans();
                              
               //saring data lainnya (perguruan tinggi dan program studi pindahan) start
               if($this->_POST['mhs']['nama_pt'] == ''){
                  $this->_POST['mhs']['nama_pt'] = $this->_POST['mhs']['nama_pt_lainnya'];
                  unset($this->_POST['mhs']['nama_pt_lainnya']);
               }else{
                  unset($this->_POST['mhs']['nama_pt_lainnya']);
               }
               
               unset($this->_POST['mhs']['nama_prodi_tampil']);
               if($this->_POST['mhs']['nama_prodi'] == ''){
                  $this->_POST['mhs']['nama_prodi'] = $this->_POST['mhs']['nama_prodi_lainnya'];
                  unset($this->_POST['mhs']['nama_prodi_lainnya']);
               }else{
                  unset($this->_POST['mhs']['nama_prodi_lainnya']);
               }
               //saring data lainnya (perguruan tinggi dan program studi pindahan) end                              
               
               //print_r($this->_POST);exit();               
               //echo '<pre>'; print_r($this->_POST['mhs']); exit;
               $arrDataMhs=$this->_POST['mhs'];
               //print_r($arrDataMhs);exit();                              
               
               //add data to admisi
               $addMhs = $this->prosesAddMahasiswa($arrDataMhs);                              
               
               //mulai ambil data yang di butuhkan untuk input ke table mahasiswa di Gt finansi
               $mhs=$this->mhsObjAdmisi->GetMhsId();
               
               //add data status keluarga
               $postStsKlrgaId = $this->_POST['status_keluarga'];
               if (!empty($postStsKlrgaId[0]) and (count($postStsKlrgaId) >= 1)) {
                  for($i=0;$i<count($postStsKlrgaId);$i++){
                     $addStatusKeluarga = $this->mhsObjAdmisi->DoAddStatusKeluarga($mhs[0]['mhs_id'],$postStsKlrgaId[$i]);
                  }
               } else {
                  $addStatusKeluarga = true;
               }
               
               // status keluarga di finansi hanya bisa 1 dan not null
               if (!empty($postStsKlrgaId))
                  $stat_klrg_finansi = $postStsKlrgaId[0];
               else
                  $stat_klrg_finansi = 1;
               
               $userId=$this->mhsObjAdmisi->GetUserIdByUserName($this->_POST['mhs']['mhs_user_pengubah']);
               
               $prodiId=$this->mhsObjFinansi->GetProdiId($this->_POST['mhs']['mhs_prodi']);
               
               if($this->_POST['mhs']['mhs_sems_masuk']=="GANJIL"){
                 $periodeJenisId="1";
               }else{               
                 $periodeJenisId="2";  
               }
               
               $periodeId=$this->mhsObjFinansi->GetPeriodeId($this->_POST['mhs']['mhs_thn_masuk'],$periodeJenisId);
               
               $idJalur=$this->mhsObjFinansi->GetIdJalur($this->_POST['mhs']['mhs_jalur_masuk']);
               
               //End Ambil data
               
               
               //add Data To Gt Finansi
               $addMhsToFinansi=$this->mhsObjFinansi->DoAddMahasiswa($mhs[0]['mhs_id'],
                                                                    $this->_POST['mhs']['mhs_no_tes'],
                                                                    $this->_POST['mhs']['mhs_nama'],
                                                                    $prodiId[0]['prodi_id'],
                                                                    $this->_POST['mhs']['mhs_nama_angkatan'],
                                                                    $this->_POST['mhs']['mhs_gel_daftar'],
                                                                    $idJalur[0]['jalur_id'],
                                                                    $periodeId[0]['periodeId'],
                                                                    $userId[0]['UserId'],
                                                                    $stat_klrg_finansi);
                                                                  
               $idPeng=$this->mhsObjAdmisi->GetMaxIdPengalamanOrganisasi();
               $idRiwayat=$this->mhsObjAdmisi->GetMaxIdRiwayatPendidikan();
               
               if(isset($this->_POST['peng'])){
                 $dataPengalaman=$this->_POST['peng'];
                 for($i=1;$i<=sizeOf($dataPengalaman);$i++){
                    $idPeng[$i]=$idPeng[0]['id_riwayat']+$i;
                 }
                 foreach($dataPengalaman as $i => $data){
                    $addpengOrg=$this->mhsObjAdmisi->DoAddPengalamanOrganisasi($idPeng[$i],
                                                                      $data['tempat'],
                                                                      $data['organisasi'],
                                                                      $mhs[0]['mhs_id']);
                 
                    if($addpengOrg==false)
                          $pengGagal++;
                 }
                 
                 if($pengGagal>0){
                    $addpengOrg=false;
                 }else{
                    $addpengOrg=true;
                 }
               }else{
                 $addpengOrg=true;
               }         
               
               //print_r($this->_POST['riwayat']);
               if(isset($this->_POST['riwayat'])){
                 $dataRiwayat=$this->_POST['riwayat'];
                 for($i=1;$i<=sizeOf($dataRiwayat);$i++){
                    $idRiwayat[$i]=$idRiwayat[0]['id_riwayat']+$i;
                 }
                 foreach($dataRiwayat as $i => $data){
                    $addRiwayat=$this->mhsObjAdmisi->DoAddRiwayatPendidikan($idRiwayat[$i],
                                                                      $data['pendidikan'],
                                                                      $data['sekolah'],
                                                                      $data['tahun_lulus'],
                                                                      $mhs[0]['mhs_id']);
                 
                    if($addRiwayat==false)
                          $riwGagal++;
                 }
                 if($riwGagal>0){
                    $addRiwayat=false;
                 }else{
                    $addRiwayat=true;
                 }
               }else{
                 $addRiwayat=true;
               }
               
               
               $this->_POST['ortu']['mhs_id']=$mhs[0]['mhs_id'];
               
               $arrDataOrtu=array_values($this->_POST['ortu']);
               
               $addOrtu=$this->mhsObjAdmisi->DoAddOrangTuaMahasiswa($arrDataOrtu);
               
               $addData=$addMhs && $addStatusKeluarga && $addOrtu && $addMhsToFinansi && $addpengOrg && $addRiwayat;
               /**
               var_dump($addMhs);
               var_dump($addStatusKeluarga);
               var_dump($addOrtu);
               var_dump($addMhsToFinansi);
               var_dump($addpengOrg);
               var_dump($addRiwayat);
               exit;
               /**/
               $this->mhsObjAdmisi->EndTrans($addData);
               $this->mhsObjFinansi->EndTrans($addData);

               if ($addData==true){
                  $psn['berhasil']='Penambahan data Berhasil Dilakukan';
                 Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
                 array($this->_POST,$psn, 
                 $this->cssDone),Messenger::NextRequest);
                 
               } else {
                 $psn['gagal']='Penambahan Gagal Dilakukan';
                 Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
                 array($this->_POST,$psn, 
                 $this->cssFail),Messenger::NextRequest);
               }
            }else{
               $sems=$this->_POST['mhs']['mhs_sems_masuk'];
               $thn=$this->_POST['mhs']['mhs_thn_masuk'];
               $thn2=$this->_POST['mhs']['mhs_thn_masuk']+1;
               $psn['gagal']="Penambahan Gagal Dilakukan<br /> Periode " . $sems . " " . $thn ."/". $thn2.' Tidak Ditemukan Di Gt Finansi';
               Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
               array($this->_POST,$psn, 
               $this->cssFail),Messenger::NextRequest);
            }
      }elseif($cek==="empty"){
         Messenger::Instance()->Send('mahasiswa', 'inputMahasiswa', 'view', 'html', 
         array($this->_POST,'Lengkapi Isian Data'),
         Messenger::NextRequest);
         return $this->pageInput . "&dataId=" . $this->encId;
      }elseif($cek==="full"){
         Messenger::Instance()->Send('mahasiswa', 'inputMahasiswa', 'view', 'html', 
         array($this->_POST,'Kuota Kelas Penuh, Kuota Maksimal '.$this->totalKuota.' orang
                           <br /> Klik <b>Simpan</b> untuk melanjutkan penyimpanan melebihi kuota 
                           <br /> Klik <b>Batal</b> untuk membatalkan penyimpanan'),
         Messenger::NextRequest);
         return $this->pageInput . "&dataId=" . $this->encId;
      }

      return $this->pageView;
   }
   
   function prosesAddMahasiswa($arrDataMhs){      
      //kasih nilai null untuk yang kosong
      $tempArrDataMhs = $arrDataMhs;
      foreach($arrDataMhs as $key => $value){
         if($value == ''){
            $tempArrDataMhs[$key] = NULL;
         }
      }
      $arrDataMhs = $tempArrDataMhs;      
      $addMhs=$this->mhsObjAdmisi->DoAddMahasiswa($arrDataMhs);
      return $addMhs;
   }
   
   function Update(){   
      if (isset($_POST['btnbalik'])) {         
         return $this->pageView;
      }
      
      $cek =$this->Check();
      
      if($cek === true) {
        $cekPeriodeFinansi=$this->mhsObjFinansi->CekPeriodeAktif($this->_POST['mhs']['mhs_sems_masuk'],$this->_POST['mhs']['mhs_thn_masuk']);
    //    print_r($cekPeriodeFinansi);
        if($cekPeriodeFinansi>0){
           $this->mhsObjAdmisi->StartTrans();   
           $this->mhsObjFinansi->StartTrans();   
           $statusMhs=$this->mhsObjAdmisi->CekStatusMhs($this->decId);
                      
           //saring data lainnya (perguruan tinggi dan program studi pindahan) start
            if($this->_POST['mhs']['nama_pt'] == ''){
               $this->_POST['mhs']['nama_pt'] = $this->_POST['mhs']['nama_pt_lainnya'];
               unset($this->_POST['mhs']['nama_pt_lainnya']);
            }else{
               unset($this->_POST['mhs']['nama_pt_lainnya']);
            }
            
            unset($this->_POST['mhs']['nama_prodi_tampil']);
            if($this->_POST['mhs']['nama_prodi'] == ''){
               $this->_POST['mhs']['nama_prodi'] = $this->_POST['mhs']['nama_prodi_lainnya'];
               unset($this->_POST['mhs']['nama_prodi_lainnya']);
            }else{
               unset($this->_POST['mhs']['nama_prodi_lainnya']);
            }
            //saring data lainnya (perguruan tinggi dan program studi pindahan) end            
            //echo '<pre>'; print_r($this->_POST['mhs']); exit;
            
           if($statusMhs[0]['status_mhs']==0){
              //jika isCalon = 0 maka update data di gtAkademik
              $arrDataMhsToSia= $this->_POST['mhs'];
              
              unset($arrDataMhsToSia['mhs_nama_angkatan']);
              unset($arrDataMhsToSia['mhs_gel_daftar']);
              unset($arrDataMhsToSia['mhs_is_calon']);
              unset($arrDataMhsToSia['mhs_kelas_masuk_smta']);
              
              $nim=$this->mhsObjAdmisi->GetNimMhsById($this->decId);
              
              $arrDataMhsToSia['id_mhs']=$nim[0]['mhs_niu'];
             // print_r($$arrDataMhsToSia);
              
              //$arrDataMhsToSia=array_values($arrDataMhsToSia);                                                   
              $updateMhsSia=$this->mhsObjSia->DoUpdateMahasiswa($arrDataMhsToSia);   
              $this->_POST['ortu']['decId']=$this->decId;
              
              $arrDataOrtusia=$this->_POST['ortu'];
              $arrDataOrtusia['decId']=$nim[0]['mhs_niu'];
              $arrDataOrtusia=array_values($arrDataOrtusia);
              $updateOrtuMhsToSia=$this->mhsObjSia->DoUpdateOrangTuaMahasiswa($arrDataOrtusia);
           }else{
              $updateMhsSia=true;
              $updateOrtuMhsToSia=true;
           }
           
           $this->_POST['mhs']['decId']=$this->decId->Raw();
           
           $arrDataMhs=$this->_POST['mhs'];
           $updateMhs=$this->mhsObjAdmisi->DoUpdateMahasiswa($arrDataMhs);   
           
           //sebelum update data status keluarga, hapus dulu semua datanya berdasarkan id mhs yang lagi edit
           $hapusStatusKeluarga = $this->mhsObjAdmisi->DoDeleteStatusKeluarga($this->decId->Raw());
           //add lagi data status keluarga
            $postStsKlrgaId = $this->_POST['status_keluarga'];
            if (!empty($postStsKlrgaId)) {
               for($i=0;$i<count($postStsKlrgaId);$i++){
                  $addStatusKeluarga = $this->mhsObjAdmisi->DoAddStatusKeluarga($this->decId->Raw(),$postStsKlrgaId[$i]);
               }
            } else {
               $addStatusKeluarga = true;
            }
            
            // status keluarga di finansi hanya bisa 1 dan not null
            if (!empty($postStsKlrgaId))
               $stat_klrg_finansi = $postStsKlrgaId[0];
            else
               $stat_klrg_finansi = 1;
           
            //mulai ambil data yang di butuhkan untuk update ke table mahasiswa di Gt finansi
           //$mhs=$this->mhsObjAdmisi->GetMhsId();
           
           $userId=$this->mhsObjAdmisi->GetUserIdByUserName($this->_POST['mhs']['mhs_user_pengubah']);
           
           $prodiId=$this->mhsObjFinansi->GetProdiId($this->_POST['mhs']['mhs_prodi']);
           
           if($this->_POST['mhs']['mhs_sems_masuk']=="GANJIL"){
              $periodeJenisId="1";
           }else{
  
              $periodeJenisId="2";  
           }
           
           $periodeId=$this->mhsObjFinansi->GetPeriodeId($this->_POST['mhs']['mhs_thn_masuk'],$periodeJenisId);
  
           $idJalur=$this->mhsObjFinansi->GetIdJalur($this->_POST['mhs']['mhs_jalur_masuk']);
          
           //End Ambil data
           
           //update data mhs di Db gtFinansi
           $updateMhsToFinansi=$this->mhsObjFinansi->DoUpdateMahasiswa($this->_POST['mhs']['mhs_no_tes'],
                                                             $this->_POST['mhs']['mhs_nama'],
                                                             $prodiId[0]['prodi_id'],
                                                             $this->_POST['mhs']['mhs_nama_angkatan'],
                                                             $this->_POST['mhs']['mhs_gel_daftar'],
                                                             $idJalur[0]['jalur_id'],
                                                             $periodeId[0]['periodeId'],
                                                             $userId[0]['UserId'],
                                                             $this->decId,
                                                             $stat_klrg_finansi); 
                                                                
                                                                
           $this->_POST['ortu']['decId']=$this->decId;
            // print_r($this->_POST['ortu']);
           $arrDataOrtu=array_values($this->_POST['ortu']);           
  
           $updateOrtuMhs=$this->mhsObjAdmisi->DoUpdateOrangTuaMahasiswa($arrDataOrtu);
           $idPeng=$this->mhsObjAdmisi->GetMaxIdPengalamanOrganisasi();
           $idRiwayat=$this->mhsObjAdmisi->GetMaxIdRiwayatPendidikan();
  
           if(isset($this->_POST['peng'])){
              $deleteData=$this->mhsObjAdmisi->DoDeletePengalamanOrganisasiByMhsId($this->decId);
              if($deleteData){
                 $dataPengalaman=$this->_POST['peng'];
                 for($i=1;$i<=sizeOf($dataPengalaman);$i++){
                    $idPeng[$i]=$idPeng[0]['id_riwayat']+$i;
                 }
                 foreach($dataPengalaman as $i => $data){
                    $updatePengOrg=$this->mhsObjAdmisi->DoAddPengalamanOrganisasi($idPeng[$i],
                                                                      $data['tempat'],
                                                                      $data['organisasi'],
                                                                      $this->decId);
                 
                 if($updatePengOrg==false)
                       $pengGagal++;
                 }
              }
              if($pengGagal>0){
                 $updatePengOrg=false;
              }else{
                 $updatePengOrg=true;
              }
           }else{
                 $updatePengOrg=true;
              }
           
           if(isset($this->_POST['riwayat'])){
              $deleteData=$this->mhsObjAdmisi->DoDeleteRiwayatPendidikanByMhsId($this->decId);
              if($deleteData){
                 $dataRiwayat=$this->_POST['riwayat'];
                    for($i=1;$i<=sizeOf($dataRiwayat);$i++){
                       $idRiwayat[$i]=$idRiwayat[0]['id_riwayat']+$i;
                    }
                    foreach($dataRiwayat as $i => $data){
                       $updateRiwayat=$this->mhsObjAdmisi->DoAddRiwayatPendidikan($idRiwayat[$i],
                                                                         $data['pendidikan'],
                                                                         $data['sekolah'],
                                                                         $data['tahun_lulus'],
                                                                         $this->decId);
                    
                    if($updateRiwayat==false)
                          $pengGagal++;
                    }
              }
              if($pengGagal>0){
                 $updateRiwayat=false;
              }else{
                 $updateRiwayat=true;
              }
           }else{
                 $updateRiwayat=true;
              }
           
           $updateData=$updateMhs && $addStatusKeluarga && $hapusStatusKeluarga && $updateOrtuMhs && $updateMhsSia && $updateOrtuMhsToSia && $updateMhsToFinansi && $updatePengOrg && $updateRiwayat;
           /**
           var_dump($updateMhs);
           var_dump($addStatusKeluarga);
           var_dump($hapusStatusKeluarga);
           var_dump($updateOrtuMhs);
           var_dump($updateMhsSia);
           var_dump($updateOrtuMhsToSia);
           var_dump($updateMhsToFinansi);
           var_dump($updatePengOrg);
           var_dump($updateRiwayat);
           exit;
           /**/
           $this->mhsObjAdmisi->EndTrans($updateData);
           $this->mhsObjFinansi->EndTrans($updateData);
           
           if ($updateData==true){
           //print('adad');exit;
              $psn['berhasil']='Pengubahan data Berhasil Dilakukan';
              Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
              array($this->_POST,$psn, 
              $this->cssDone),Messenger::NextRequest);
              
            } else {
              $psn['gagal']='Pengubahan Gagal Dilakukan';
              Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
              array($this->_POST,$psn, 
              $this->cssFail),Messenger::NextRequest);
            }
          }else{
            $sems=$this->_POST['mhs']['mhs_sems_masuk'];
            $thn=$this->_POST['mhs']['mhs_thn_masuk'];
            $thn2=$this->_POST['mhs']['mhs_thn_masuk']+1;
            $psn['gagal']="Pengubahan Gagal Dilakukan<br /> Periode " . $sems . " " . $thn ."/". $thn2.' Tidak Ditemukan Di Gt Finansi';
            Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
            array($this->_POST,$psn, 
            $this->cssFail),Messenger::NextRequest);
          }      
      }elseif($cek==="empty"){
      //print('aa');
         Messenger::Instance()->Send('mahasiswa', 'inputMahasiswa', 'view', 'html', 
         array($this->_POST,'Lengkapi Isian Data'),Messenger::NextRequest);
         
         return $this->pageInput . "&dataId=" . $this->encId;
      }
      return $this->pageView;
     
   }
   
   function UpdatePhoto($ret){
   
	  if($ret == "json"){
         $pageView = Dispatcher::Instance()->GetUrl('mahasiswa','mahasiswa','view','html',true);
      }else{
         $pageView = Dispatcher::Instance()->GetUrl('mahasiswa','mahasiswa','view','html');
        }
   
      if (isset($_POST['btnbalik'])) {
         return $pageView;
      }
      if (isset($_POST['btnsimpan'])){
      if (!empty($this->_POST['dataIdMhs'])){
         $niu = $this->_POST['dataIdMhs'];
         $niu2= $this->_POST['dataId'];
      }else{
         $niu = $this->_POST['dataId'];
      }
      $file_lama=$this->_POST['datmhsFoto'];
      $files = explode(".", $_FILES['file']['name']);
      $ext = $files[count($files)-1];
      if ((strtolower($ext) == 'jpg') OR (strtolower($ext) == 'png') AND ($_FILES['file']['size']<=200999)){
      if ($_FILES["file"]["tmp_name"]!==''){
            $nama_file = $niu.$_FILES["file"]["name"];
		    }else{
		 	   $nama_file = $file_lama;
		 	}
		//print_r($nama_file);
		if ($_FILES["file"]["name"]!==''){
  			       @unlink(GTFWConfiguration::GetValue( 'application', 'photo_move_path').$this->POST['datmhsFoto']);
  			       move_uploaded_file($_FILES['file']['tmp_name'], GTFWConfiguration::GetValue( 'application', 'photo_move_path').$nama_file);
  	         }
      if (!empty($this->_POST['dataIdMhs'])){
         $addphoto = $this->mhsObjSia->DoUpdatePhotoMahasiswa($nama_file,$niu);
         $addphoto = $this->mhsObjAdmisi->DoUpdatePhotoMahasiswa($nama_file,$niu2);
      }else{
         $addphoto = $this->mhsObjAdmisi->DoUpdatePhotoMahasiswa($nama_file,$niu);
      }         	  
      
      if($addphoto == true){
          $psn['berhasil']='Penambahan Foto Berhasil Dilakukan';
              Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
              array($this->_POST,$psn, 
              $this->cssDone),Messenger::NextRequest);
              return $pageView;
       }else{
          $psn['gagal']='Penambahan Foto Gagal Dilakukan';
              Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
              array($this->_POST,$psn, 
              $this->cssFail),Messenger::NextRequest);
              return $pageView;
       }
       
      }else {
      $psn['gagal']='Foto harus berupa file .jpg atau .png dan ukuran file maksimal 200 KB';
              Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
              array($this->_POST,$psn, 
              $this->cssFail),Messenger::NextRequest);
              return $pageView;
      }
     }
   }
   
   function Delete(){
   
      $arrId = $this->_POST['idDelete'];
     // print_r($arrId);
      if(($this->mhsObjFinansi->addConn)and($this->mhsObjSia->addConn)){
      
         $this->mhsObjAdmisi->StartTrans();   
         $this->mhsObjFinansi->StartTrans();

         $deleteMhsDataByIdAdmisi=$this->mhsObjAdmisi->DoDeleteMahasiswaById($arrId);

         $deleteMhsDataByIdFinansi=$this->mhsObjFinansi->DoDeleteMahasiswaById($arrId);

         $deleteMhsDataById=$deleteMhsDataByIdAdmisi && $deleteMhsDataByIdFinansi ;
         
         $this->mhsObjAdmisi->EndTrans($deleteMhsDataById);
         $this->mhsObjFinansi->EndTrans($deleteMhsDataById);
         
         if($deleteMhsDataById==false){ 
   		   if(is_array($arrId)==false)
               $arr[0]=$arrId;
            else
               $arr=$arrId;
            $this->mhsObjAdmisi->StartTrans();   
            $this->mhsObjFinansi->StartTrans(); 
            
            $deleteArrDataMhsAdmisi = $this->mhsObjAdmisi-> DoDeleteMahasiswaByArrayId($arr);
            $deleteArrDataMhsFinansi = $this->mhsObjFinansi-> DoDeleteMahasiswaByArrayId($arr);
            
            $deleteArrDataMhs=$deleteArrDataMhsAdmisi && $deleteArrDataMhsFinansi;
            
            $this->mhsObjAdmisi->EndTrans($deleteArrDataMhs);
            $this->mhsObjFinansi->EndTrans($deleteArrDataMhs);     
         }

         if($deleteArrDataMhs === true) {
              $psn['berhasil']='Penghapusan Data Berhasil Dilakukan';
              Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
              array($this->_POST,$psn, 
              $this->cssDone),Messenger::NextRequest);
              

         }elseif($deleteMhsDataById===true){
              $psn['berhasil']='Penghapusan Data Berhasil Dilakukan';
              Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
              array($this->_POST,$psn, 
              $this->cssDone),Messenger::NextRequest);
         }else{
   
            for($i=0;$i<sizeof($arr);$i++) {
               $deleteDataMhs = false;
               
               $this->mhsObjAdmisi->StartTrans();   
               $this->mhsObjFinansi->StartTrans(); 
               
               $deleteDataMhsAdmisi = $this->mhsObjAdmisi->DoDeleteMahasiswaById($arr[$i]);
               $deleteDataMhsFinansi = $this->mhsObjFinansi->DoDeleteMahasiswaById($arr[$i]);
               /*
               var_dump($deleteDataMhsAdmisi);
               var_dump($deleteDataMhsFinansi); exit;
               */
               $deleteDataMhs=$deleteDataMhsAdmisi && $deleteDataMhsFinansi;
               
               $this->mhsObjAdmisi->EndTrans($deleteDataMhs);
               $this->mhsObjFinansi->EndTrans($deleteDataMhs); 
               
               if($deleteDataMhs === true) {
                  $suksesMhs += 1;
               }
               else {
                  $gagalMhs += 1;
               }      
               
               if($deleteDataOrtu === true) {
                  $suksesOrtu += 1;
               }
               else {
                  $gagalOrtu += 1;
               }
            }
            $psn['gagal']=$gagalMhs . ' Data Mahasiswa Tidak Dapat Dihapus.';
              
            Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', 
            array($this->_POST, $psn, $this->cssFail),
            Messenger::NextRequest);

         }
      }elseif((!$this->mhsObjFinansi->addConn)){
         $psn['gagal']='<h4>Gagal Menghapus Data</h4>Gagal Menghubungi SI Finansi ';

         Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html', array($this->_POST,$psn , $this->cssFail),Messenger::NextRequest);
      }
      return $this->pageView;
   
   }
   
   #tambahan iqbal untuk integrasi dengan Um
   function ImportFromUm(){
      if (isset($_POST['btnbalik'])) {
         return $this->pageView;
      }
      if(trim($this->_POST['tahun_masuk'])!=='' && trim($this->_POST['sems_masuk'])!==''){
         $dataMhsLulusFromUm=$this->mhsObjUm->GetDataMahasiswaLulus();
         #print_r($dataMhsLulusFromUm);
         $berhasil=0;
         $gagal=0;
         if(!empty($dataMhsLulusFromUm)){
         
            for($i=0;$i<sizeof($dataMhsLulusFromUm);$i++){
               $dataMhsLulus[$i]=array_values($dataMhsLulusFromUm[$i]);
               $dataOrtuMhs=null;
               $dataMhs=null;
               for($j=0;$j<sizeof($dataMhsLulus[$i]);$j++)
                  if($j<=17)$dataMhs[$j]=$dataMhsLulus[$i][$j]; else $dataOrtuMhs[]=$dataMhsLulus[$i][$j];
               
               $this->mhsObjAdmisi->StartTrans();
               $this->mhsObjFinansi->StartTrans();
               #Start import to sireg
               
               $dataMhs[18]=$this->_POST['sems_masuk'];
               $dataMhs[19]=$this->_POST['tahun_masuk'];
               $dataMhs[20]=$this->_POST['mhs']['mhs_user_pengubah'];
               
               $paramsMhsSireg=$dataMhs;
               $importMhsSireg=$this->mhsObjAdmisi->DoImportMahasiswaFromUm($paramsMhsSireg);
               // get max id harus dilakukan setelah insert ke mahasiswa
               $mhsId=$this->mhsObjAdmisi->GetMhsId();
               $dataOrtuMhs[5]=$mhsId[0]['mhs_id'];
               
               $paramsOrtuSireg=$dataOrtuMhs;

               $importOrtuSireg=$this->mhsObjAdmisi->DoImportMahasiswaOrtuFromUm($paramsOrtuSireg);
               $importSireg=$importMhsSireg && $importOrtuSireg;
               /*
               var_dump($importMhsSireg);
               var_dump($importOrtuSireg);
               exit;
               */
               #Stop import to sireg
               
               #Stop import to finansi
               #print_r($paramsMhsSireg);
               $userId=$this->mhsObjAdmisi->GetUserIdByUserName($this->_POST['mhs']['mhs_user_pengubah']);
               $prodiId=$this->mhsObjFinansi->GetProdiId($paramsMhsSireg[15]);
               
               if($this->_POST['sems_masuk']=="GANJIL") $periodeJenisId="1"; else $periodeJenisId="2";  
               
               $periodeId=$this->mhsObjFinansi->GetPeriodeId($this->_POST['tahun_masuk'],$periodeJenisId);
               $idJalur=$this->mhsObjFinansi->GetIdJalur($paramsMhsSireg[14]);
               
               $paramsMhsFinansi=array($mhsId[0]['mhs_id'],$paramsMhsSireg[1],$paramsMhsSireg[0],$prodiId[0]['prodi_id'],$periodeId[0]['periodeId'], 1,$idJalur[0]['jalur_id'], $periodeId[0]['periodeId'],$userId[0]['UserId']);
               $importFinansi=$this->mhsObjFinansi->DoImportFormUm($paramsMhsFinansi);  
               #stop import to finansi
               
               $importData=$importSireg && $importFinansi;
               /*
               var_dump($importSireg);
               var_dump($importFinansi);
               exit;
               */
               $this->mhsObjAdmisi->EndTrans($importData);
               $this->mhsObjFinansi->EndTrans($importData);
               
               if($importData==true) $berhasil=$berhasil+1; else $gagal=$gagal+1;
               
               
               
            }
            
            #start Send Msg Confirm
            if($berhasil>0) $psn['berhasil']=$importData['berhasil'].' data berhasil di import';                           
            if($gagal>0) $psn['gagal']=$importData['gagal'].' data gagal di Import';
            Messenger::Instance()->Send('mahasiswa', 'mahasiswa', 'view', 'html',array($this->_POST,$psn,$this->cssFail),Messenger::NextRequest);  
            #Stop Send Msg Confirm
           
            return $this->pageView;
         }else{
            return $this->pageView;
         }
      }else{
         Messenger::Instance()->Send('mahasiswa', 'importMahasiswaFromUm', 'view', 'html', 
         array($this->_POST,'Lengkapi Isian Data'),Messenger::NextRequest);
         return Dispatcher::Instance()->GetUrl('mahasiswa', 'importMahasiswaFromUm', 'view', 'html');
      }
   }
   
    /*Tambahan Input Nilai SMTA Mahasiswa
    * Proyek : PRODUK
    * Oleh : Edward Saputra
    */
   function AddNilaiSmta(){
      $params=$this->_POST['nilai'];
      //print_r($params);exit;
      $this->mhsObjAdmisi->StartTrans();
      $len=sizeOf($params);
      $insert=true;
      for($i=0;$i<$len;$i++){
         for($j=0;$j<sizeOf($params[$i]['periodeId']);$j++){
            #print($params[$i]['periodeId'][$j].'&nbsp;'.$params[$i]['matPelId'][$j].'&nbsp;'.$params[$i]['mhsId'][$j].'&nbsp;'.$params[$i]['nilaiMatPel'][$j].'<br />');
            if($params[$i]['nilaiMatPel'][$j]==''){
               $params[$i]['nilaiMatPel'][$j]='0';
            }
            $insert &= $this->mhsObjAdmisi->DoAddNilaiSmta($params[$i]['matPelId'][$j],$params[$i]['periodeId'][$j],$params[$i]['nilaiMatPel'][$j],$params[$i]['mhsId'][$j]);
         }
      }
      $this->mhsObjAdmisi->EndTrans($insert);
      if($insert==true){
         Messenger::Instance()->Send('mahasiswa', 'NilaiSmta', 'view', 'html', 
         array($this->_POST['mhsId'],'Perubahan Berhasil Dilakukan' , $this->cssDone),Messenger::NextRequest);
         return Dispatcher::Instance()->GetUrl('mahasiswa', 'NilaiSmta', 'view', 'html');  
      }else{
         Messenger::Instance()->Send('mahasiswa', 'NilaiSmta', 'view', 'html', 
         array($this->_POST['mhsId'],'Perubahan Gagal Dilakukan' , $this->cssFail),Messenger::NextRequest);
         return Dispatcher::Instance()->GetUrl('mahasiswa', 'NilaiSmta', 'view', 'html');
      }
	  }

	public function ServiceupdateStatusAktifMahasiswa($post){
		$mhsObjFinansi=new AppMahasiswaToFinansi();
		$mhsObjAdmisi=new AppMahasiswa();
		$mhsObjAdmisi->StartTrans();
		$mhsObjFinansi->StartTrans();
		
		$arg = array('status' => $post['status'], 'niu' => $post['niu']);
		$result = $mhsObjAdmisi->DoUpdateStatusAktifMahasiswa($arg) && $mhsObjFinansi->DoUpdateStatusAktifMahasiswa($arg);
		
		$mhsObjAdmisi->EndTrans($result);
		$mhsObjFinansi->EndTrans($result);
		echo $result;
		die;
	}
	
	public function ServiceupdateStatusAktifArrMahasiswa($post){
		$mhsObjFinansi=new AppMahasiswaToFinansi();
		$mhsObjAdmisi=new AppMahasiswa();
		$mhsObjAdmisi->StartTrans();
		$mhsObjFinansi->StartTrans();
		
		$arg = array('status' => $post['status'], 'niu' => $post['niu']);
		$result = $mhsObjAdmisi->DoUpdateStatusAktifArrMahasiswa($arg) && $mhsObjFinansi->DoUpdateStatusAktifArrMahasiswa($arg);
		
		$mhsObjAdmisi->EndTrans($result);
		$mhsObjFinansi->EndTrans($result);
		echo $result;
		die;
	}

	function UpdateFromAkademikPortal($arg=''){
		$admisiMhsId = $this->mhsObjAdmisi->ServiceGetIdMahasiswa($arg['niu']);
		$finansiMhsId = $this->mhsObjFinansi->ServiceGetIdMahasiswa($arg['niu']);
		
		$this->mhsObjAdmisi->StartTrans();
		$this->mhsObjFinansi->StartTrans();
		$this->mhsObjSia->StartTrans();
		
		$param = $arg;
		$param['id'] = $admisiMhsId;
		$admisiMahasiswa = $this->mhsObjAdmisi->ServiceDoUpdateMahasiswa($param);
		$admisiOrtu = $this->mhsObjAdmisi->ServiceDoUpdateOrtuMahasiswa($param);
		
		$param['id'] = $finansiMhsId;
		$finansiMahasiswa = $this->mhsObjFinansi->ServiceDoUpdateMahasiswa($param);
		
		$siaMahasiswa = $this->mhsObjSia->ServiceDoUpdateMahasiswa($param);
		$siaOrtu = $this->mhsObjSia->ServiceDoUpdateOrtuMahasiswa($param);
		
		$result = $admisiMahasiswa && $admisiOrtu && $finansiMahasiswa && $siaMahasiswa && $siaOrtu;
		
		/*
		var_dump($admisiMahasiswa);
		var_dump($admisiOrtu);
		var_dump($finansiMahasiswa);
		var_dump($siaMahasiswa);
		var_dump($siaOrtu);
		die;
		*/
		
		$this->mhsObjAdmisi->EndTrans($result);
		$this->mhsObjFinansi->EndTrans($result);
		$this->mhsObjSia->EndTrans($result);
		
		echo $result;
	}

	public function ServiceGetBiodataMahasiswa($arg=''){
		$mhsObjAdmisi=new AppMahasiswa();
		$id = $mhsObjAdmisi->ServiceGetIdMahasiswa($arg['niu']);
		$data = $mhsObjAdmisi->GetDataDetailMahasiswa($id);
		$dataPengOrg = $mhsObjAdmisi->GetPengalamanOrganisasiByIdMhs($id);
		return array_merge($data, array($dataPengOrg));
	}
	
	public function ServiceGetDataOrangTua($arg=''){
		$mhsObjAdmisi=new AppMahasiswa();
		$id = $mhsObjAdmisi->ServiceGetIdMahasiswa($arg['niu']);
		$data = $mhsObjAdmisi->ServiceGetDataOrtu($id);
		return $data;
	}
	
	public function ServiceGetDataSma($arg=''){
		$mhsObjAdmisi=new AppMahasiswa();
		$id = $mhsObjAdmisi->ServiceGetIdMahasiswa($arg['niu']);
		$data = $mhsObjAdmisi->ServiceGetDataSma($id);
		$dataRiwayat = $mhsObjAdmisi->GetRiwayatPendidikanByIdMhs($id);
		return array_merge($data, array($dataRiwayat));
	}
	
    public function ServiceGetReference($arg=''){	
		$mhsObjAdmisi=new AppMahasiswa();
		$arg = json_decode(stripslashes($arg['arg']),true);
		if($arg['mode']=='kota')
			$data = $mhsObjAdmisi->GetDataKota($arg['arg']);

		return $data;
	}
	
    public function ServiceGetListReferensiMahasiswa(){	
		$mhsObjAdmisi=new AppMahasiswa();
		$data['agama']= $mhsObjAdmisi->GetAgama();
		$data['warga_negara'] = $mhsObjAdmisi->GetWargaNegara();
		$data['status_nikah'] = $mhsObjAdmisi->GetStatusNikah();
		$data['status_rumah'] = $mhsObjAdmisi->GetStatusRumah();
		$data['negara'] = $mhsObjAdmisi->GetDataNegara();
		$data['hubungan_biaya'] = $mhsObjAdmisi->GetHubunganBiaya();
		$data['sumber_dana'] = $mhsObjAdmisi->GetSumberDana();
		$data['sumber_info'] = $mhsObjAdmisi->GetSumberInfo();
		$data['pekerjaan'] = $mhsObjAdmisi->GetPekerjaan();
		$data['propinsi'] = $mhsObjAdmisi->GetPropinsi();
		$data['golongan_darah'] = $mhsObjAdmisi->GetGolDarah();

		return $data;
	}
	
    public function ServiceGetListReferensiOrangTua(){	
		$mhsObjAdmisi=new AppMahasiswa();
		$data['agama']= $mhsObjAdmisi->GetAgama();
		$data['warga_negara'] = $mhsObjAdmisi->GetWargaNegara();
		$data['pendidikan'] = $mhsObjAdmisi->GetPendidikan();
		$data['pekerjaan'] = $mhsObjAdmisi->GetPekerjaan();
		$data['propinsi'] = $mhsObjAdmisi->GetPropinsi();
		$data['penghasilan'] = $mhsObjAdmisi->GetPenghasilan();

		return $data;
	}
	
    public function ServiceGetListReferensiSma(){	
		$mhsObjAdmisi=new AppMahasiswa();
		$data['status_smta']= $mhsObjAdmisi->GetStatusSmta();
		$data['jenis_smta'] = $mhsObjAdmisi->GetJenisSmta();
		$data['akreditasi'] = $mhsObjAdmisi->GetStatusAkreditasiSmta();
		$data['jurusan_smta'] = $mhsObjAdmisi->GetJurusanSmta();
		$data['propinsi'] = $mhsObjAdmisi->GetPropinsi();
		$data['kelas_masuk_smta'] = $mhsObjAdmisi->GetKelasMasukSmta();
		$data['pendidikan_pra'] = $mhsObjAdmisi->GetJenjangPendidikanDasar();

		return $data;
	}
	
	public function ServiceDoUpdateBiodataMahasiswa($arg=''){
		$param = json_decode(stripslashes($arg['arg']),true);
		$mhsObjAdmisi=new AppMahasiswa();
		$mhsObjSia=new AppMahasiswaSia();
		$param['mhs']['decId'] = $mhsObjAdmisi->ServiceGetIdMahasiswa($arg['niu']);
		$param['mhs']['niu'] = $arg['niu'];
		// print_r($param);die;
		$mhsObjAdmisi->StartTrans();   
		$mhsObjSia->StartTrans();
		if(!empty($param['peng'])){
			$deleteData=$mhsObjAdmisi->DoDeletePengalamanOrganisasiByMhsId($param['mhs']['decId']);
			$idPeng=$mhsObjAdmisi->GetMaxIdPengalamanOrganisasi();
			$idPeng=$idPeng[0]['id_peng'];
			if($deleteData){
				$dataPengalaman=$param['peng'];
				foreach($dataPengalaman as $i => $data){
					$mhsObjAdmisi->DoAddPengalamanOrganisasi(++$idPeng,$data['tempat'],$data['organisasi'],$param['mhs']['decId']);
				}
			}
		}
		$updateData=$mhsObjAdmisi->ServiceDoUpdateBiodataMahasiswa($param['mhs']);
		$updateData=$updateData && $mhsObjSia->ServiceDoUpdateMahasiswa($param['mhs']);
		$mhsObjAdmisi->EndTrans($updateData);
		$mhsObjSia->EndTrans($updateData);
		
		return array('status' => $updateData);
	}
	
	public function ServiceDoUpdateBiodataOrangTua($arg=''){
		$param = json_decode(stripslashes($arg['arg']),true);
		$mhsObjAdmisi=new AppMahasiswa();
		$mhsObjSia=new AppMahasiswaSia();
		$param['decId'] = $mhsObjAdmisi->ServiceGetIdMahasiswa($arg['niu']);
		$param['niu'] = $arg['niu'];
		$mhsObjAdmisi->StartTrans();   
		$mhsObjSia->StartTrans();
		$updateData=$mhsObjAdmisi->ServiceDoUpdateOrtuMahasiswa($param);
		$updateData=$updateData && $mhsObjSia->ServiceDoUpdateOrtuMahasiswa($param);
		$mhsObjAdmisi->EndTrans($updateData);
		$mhsObjSia->EndTrans($updateData);
		
		return array('status' => $updateData);
	}
	
	public function ServiceDoUpdateBiodataSmta($arg=''){
		$param = json_decode(stripslashes($arg['arg']),true);
		$mhsObjAdmisi=new AppMahasiswa();
		$mhsObjSia=new AppMahasiswaSia();
		$param['decId'] = $mhsObjAdmisi->ServiceGetIdMahasiswa($arg['niu']);
		$param['niu'] = $arg['niu'];
		$uan = array(
			'mhs_nilai_uan_mate' => array('1'),
			'mhs_nilai_uan_bing' => array('2'),
			'mhs_nilai_uan_fis' => array('3')
		);
		$raport = array(
			'mhs_nilai_rapor_mate' => array('21', '10'),
			'mhs_nilai_rapor_bing' => array('19', '10')
		);
		foreach($param['mhs'] as $key=>$data){
			if(isset($uan[$key])){
				$uan[$key][] = $data;
				$param['uan'][] = $uan[$key];
			}else{
				$raport[$key][] = $data;
				$param['raport'][] = $raport[$key];
			}
		}
		// print_r($param);die;
		$mhsObjAdmisi->StartTrans();   
		$mhsObjSia->StartTrans();
		if(!empty($param['riwayat'])){
			$deleteData=$mhsObjAdmisi->DoDeleteRiwayatPendidikanByMhsId($param['decId']);
			$id=$mhsObjAdmisi->GetMaxIdRiwayatPendidikan();
			$id=$id[0]['id_riwayat'];
			if($deleteData){
				$dataPengalaman=$param['riwayat'];
				foreach($dataPengalaman as $i => $data){
					$mhsObjAdmisi->DoAddRiwayatPendidikan(++$id,$data['pendidikan'],$data['sekolah'],$data['tahun_lulus'],$param['decId']);
				}
			}
		}
		$updateData=$mhsObjAdmisi->ServiceDoUpdateBiodataSmta($param);
		$updateData=$updateData && $mhsObjSia->ServiceDoUpdateSmtaMahasiswa($param);
		// die;
		$mhsObjAdmisi->EndTrans($updateData);
		$mhsObjSia->EndTrans($updateData);
		
		return array('status' => $updateData);
	}
}
?>
