<?php
require_once GTFWConfiguration::GetValue( 'application', 'docroot') . 'module/gedung/business/AppGedung.class.php';
require_once GTFWConfiguration::GetValue( 'application', 'docroot') . 'module/gedung/business/AppGedungAkademik.class.php';

class ProcessGedung {
   
   var $pageView;
   var $errmsg;
   
   function __contruct ()
   {
      $this->pageView = Dispatcher::Instance()->GetUrl('gedung', 'Gedung', 'view', 'html', true);
      if (!isset($_POST['imb'])) $_POST['imb'] = 'Tidak';
      if (!isset($_POST['listrik'])) $_POST['listrik'] = 'Tidak';
      if (!isset($_POST['air'])) $_POST['air'] = 'Tidak';
      if (!isset($_POST['telepon'])) $_POST['telepon'] = 'Tidak';
   }
   
   function InsertGedung() {
      $_POST = $_POST->AsArray();
      $Obj = new AppGedung();
      $Obj2 = new AppGedungAkademik();
      if(!empty($_POST['btnbalik'])) {
         $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'Gedung', 'view', 'html');
      }else{
         if(empty($_POST['aset_id']) || empty($_POST['gedung_kode']) || empty($_POST['gedung_nama']) || empty($_POST['thn_pemerolehan']) || empty($_POST['unitkerjaId']) || ($this->CheckUploadedImage('denah') === false) || ($this->CheckUploadedImage('foto') === false)) {
            //messanger ngirim data yang udah keisi
            $msg = array($_POST,'Field bertanda bintang tidak boleh kosong!'.$this->errmsg,'');
            Messenger::Instance()->Send('gedung', 'inputGedung', 'view', 'html', $msg, Messenger::NextRequest);
            $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'inputGedung', 'view', 'html');
         }else{
            #cek duplikasi kode gedung
            $kode_gedung = $Obj->CekGedung($_POST['gedung_kode']);
            if(!empty($kode_gedung)) {
               $msg = array($_POST,'Kode gedung sudah ada didalam databse, silahkan gunakan kode lain.','');
               Messenger::Instance()->Send('gedung', 'inputGedung', 'view', 'html', $msg, Messenger::NextRequest);
               $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'inputGedung', 'view', 'html');
            }else{
               $userId = trim(Security::Instance()->mAuthentication->GetCurrentUser()->GetUserId());
               
               $_POST['thn_pemerolehan'] = date('Y-m-d H:i:s', strtotime($_POST['thn_pemerolehan']."-1-1"));
               $denah = $this->UploadImage('denah');
               $foto = $this->UploadImage('foto');
               
                if ($denah === false) $return |= 8;
      			if ($denah == false) $denah = $_POST['olddenah'];
      			if ($foto === false) $return |= 8;
      			if ($foto == false) $foto = $_POST['oldfoto'];
               
               $arr_data = array(
                  $_POST['aset_id'],
                  $_POST['gedung_kode'],
                  $_POST['gedung_nama'],
                  $_POST['thn_pemerolehan'],
                  $_POST['sbr_dana'],
                  $_POST['luas_tanah'],
                  $_POST['luas_bangunan'],
                  $_POST['sifat_bangunan'],
                  $_POST['imb'],
                  $_POST['peruntukan_bangunan'],
                  $_POST['kepemilikan'],
                  $_POST['penguasaan'],
                  $_POST['kondisi'],
                  $_POST['lokasi_kampus'],
                  $_POST['keterangan']   ,
                  $denah,
                  $foto,						
                  $_POST['biaya_pembangunan'],
                  $_POST['umur_ekonomis'],
                  $_POST['umur_teknis'],
                  $_POST['nilai_residu'],						
                  $_POST['nilai_perolehan'],
						$_POST['unitkerjaId'],
                  $userId
               );
						
               $insert = $Obj->DoAdd($arr_data);
               if($insert){						
                  #insert penyusutan_brg_mst
                  if($_POST['umur_ekonomis'] == 0)
                     $nilai_penyusutan = 0;
                  else
                     $nilai_penyusutan = ($_POST['nilai_perolehan']-$_POST['nilai_residu'])/$_POST['umur_ekonomis'];
                  $arr_penyusutan = array(
                     $Obj->GetMaxIdGedung(),
                     $_POST['nilai_perolehan'],
                     $_POST['nilai_residu'],
                     $_POST['umur_ekonomis'],
                     $_POST['nilai_perolehan'],
                     $nilai_penyusutan
                  );
                  $insert_penyusutan = $Obj->DoAddPenyusutan($arr_penyusutan);
                  if(!empty($_POST['id_biaya'])) {
                     for($b=0; $b<sizeof($_POST['id_biaya']); $b++) {
                        $insert_biaya_gedung = $Obj->DoAddBiayaGedung($_POST['id_biaya'][$b], $Obj->GetMaxIdGedung(), $_POST['biaya_gedung'][$b]);
                     }
                  }
                  
                  for($j=0; $j<sizeof($_POST['fasjml_']); $j++) {
                     if(!empty($_POST['fasjml_'][$j]))
                        $arr_jumlah[] = $_POST['fasjml_'][$j];
                  }
                  if(!empty($_POST['fasjml_'])) {
                     for($f =0; $f<sizeof($_POST['fasjml_']); $f++) {
                        if(!empty($arr_jumlah[$f])) {
                           $insert_fas = $Obj->DoAddFasilitasGedung($Obj->GetMaxIdGedung(), $_POST['fas_id'][$f], $arr_jumlah[$f]);
                        }
                     }
                  }
                  $msg = array(1=>'Proses penambahan data berhasil dilakukan!','notebox-done');
						
						#insert data ke sia e_gedung
						if(GTFWConfiguration::GetValue('application', 'sia')===true){
							$dataLastId = $Obj->GetDataGedungLastId();
							$insertGedungSia = $Obj2->addEgedung($dataLastId);
							if($insertGedungSia===false){
								$msg = array(1=>"Proses penambahan data gedung pada aplikasi SIA gagal!","notebox-warning");
								$urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'Gedung', 'view', 'html');
								Messenger::Instance()->Send('gedung', 'gedung', 'view', 'html', $msg, Messenger::NextRequest);	
							}
						}
               }else
                  $msg = array(1=>"Proses penambahan gagal!","notebox-warning");
               $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'Gedung', 'view', 'html');
               Messenger::Instance()->Send('gedung', 'gedung', 'view', 'html', $msg, Messenger::NextRequest);
            }
         }
      }
      return $urlRedirect;
   }
   
   function UpdateGedung() {
      $_POST = $_POST->AsArray();
      $Obj = new AppGedung();
		$Obj2 = new AppGedungAkademik();
      if(!empty($_POST['btnbalik'])) {
         $urlRedirect = $this->pageView;
      }elseif(!empty($_POST['btnsimpan'])){
         if (empty($_POST['aset_id']) || empty($_POST['gedung_kode']) || empty($_POST['gedung_nama']) || empty($_POST['thn_pemerolehan']) || ($this->CheckUploadedImage('denah') === false) || (false === $this->CheckUploadedImage('foto'))) {
            //messanger ngirim data yang udah keisi
            $msg = array($_POST,'Field bertanda bintang tidak boleh kosong!'.$this->errmsg,'');
            Messenger::Instance()->Send('gedung', 'inputGedung', 'view', 'html', $msg, Messenger::NextRequest);
            $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'inputGedung', 'view', 'html');
         }else{
            $userId = trim(Security::Instance()->mAuthentication->GetCurrentUser()->GetUserId());
            $_POST['thn_pemerolehan'] = date('Y-m-d H:i:s', strtotime($_POST['thn_pemerolehan']."-1-1"));
            
            $denah = $this->UploadImage('denah');
            $foto = $this->UploadImage('foto');
            
            if ($denah === false) $return |= 8;
            if ($denah == false) $denah = $_POST['olddenah'];
            if ($foto === false) $return |= 8;
            if ($foto == false) $foto = $_POST['oldfoto'];
               
            $arr_data_update = array(
               $_POST['aset_id'],
               $_POST['gedung_kode'],
               $_POST['gedung_nama'],
               $_POST['thn_pemerolehan'],
               $_POST['sbr_dana'],
               $_POST['luas_tanah'],
               $_POST['luas_bangunan'],
               $_POST['sifat_bangunan'],
               $_POST['imb'],
               $_POST['peruntukan_bangunan'],
               $_POST['kepemilikan'],
               $_POST['penguasaan'],
               $_POST['kondisi'],
               $_POST['lokasi_kampus'],
               $_POST['keterangan'],
               $denah,
               $foto,
               $_POST['biaya_pembangunan'],
               $_POST['umur_ekonomis'],
               $_POST['umur_teknis'],
               $_POST['nilai_residu'],
               $_POST['nilai_perolehan'],
					$_POST['unitkerjaId'],
               $userId,
               $_POST['gedung_id']
            );
            
            //post biaya gedung
            if(!empty($_POST['id_biaya'])) {
               for($b=0; $b<sizeof($_POST['id_biaya']); $b++) {
                  if(!empty($_POST['id_gedung_biaya'][$b])) {
                     $update_biaya_gedung = $Obj->DoUpdateBiayaGedung($_POST['biaya_gedung'][$b], $_POST['id_gedung_biaya'][$b]);
                  }else{
                     #echo 'sini'; exit;
                     $insert_biaya_gedung = $Obj->DoAddBiayaGedung($_POST['id_biaya'][$b], $_POST['gedung_id'], $_POST['biaya_gedung'][$b]);
                  }
               }
            }
            
            //post fasilitas gedung
            //delete untuk updare
            if(!empty($_POST['id_fas_'])) {
               for($d=0; $d<sizeof($_POST['id_fas_']); $d++){
                  if(!empty($_POST['id_fas_'][$d]))
                     $Obj->DoDeleteFasilitasGedung($_POST['id_fas_'][$d]);
               }
            }
            
            for($j=0; $j<sizeof($_POST['fasjml_']); $j++) {
               if(!empty($_POST['fasjml_'][$j]))
                  $arr_jumlah[] = $_POST['fasjml_'][$j];
            }
            
            for($f =0; $f<sizeof($_POST['fasjml_']); $f++) {
               if(!empty($arr_jumlah[$f])) {
                  $insert_fas = $Obj->DoAddFasilitasGedung($_POST['gedung_id'], $_POST['fas_id'][$f], $arr_jumlah[$f]);
               }
            }
            
            $update = $Obj->DoUpdate($arr_data_update);
            if($update) {
               if($_POST['umur_ekonomis'] == 0)
                  $nilai_penyusutan = 0;
               else
                  $nilai_penyusutan = ($_POST['nilai_perolehan']-$_POST['nilai_residu'])/$_POST['umur_ekonomis'];
               $arr_penyusutan_update = array(
                  $_POST['nilai_perolehan'],
                  $_POST['nilai_residu'],
                  $_POST['umur_ekonomis'],
                  $_POST['nilai_perolehan'],
                  $nilai_penyusutan,
                  $_POST['gedung_id']
               );
               $update_penyusutan_gedung = $Obj->DoUpdatePenyusutan($arr_penyusutan_update);
               $msg = array(1=>'Proses pengubahan data berhasil dilakukan!','notebox-done');
					#insert data ke sia e_gedung
					if(GTFWConfiguration::GetValue('application', 'sia')===true){
						$insertGedungSia = $Obj2->updateEgedung($_POST);
						if($insertGedungSia===false){
							$msg = array(1=>"Proses perubahan data gedung pada aplikasi SIA gagal!","notebox-warning");
							$urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'Gedung', 'view', 'html');
							Messenger::Instance()->Send('gedung', 'gedung', 'view', 'html', $msg, Messenger::NextRequest);	
						}
					}
            }
            else $msg = array(1=>"Pengubahan data gagal!","notebox-warning");
            $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'Gedung', 'view', 'html');
            Messenger::Instance()->Send('gedung', 'gedung', 'view', 'html', $msg, Messenger::NextRequest);
         }
      }
      return $urlRedirect;
   }
   
   function Delete() {
      $_POST = $_POST->AsArray();
      $Obj = new AppGedung();
      $arr_delete = $_POST['idDelete'];
      $id_deletes = implode(",", $arr_delete);
		
		$result = 0;
		if(GTFWConfiguration::GetValue('application', 'sia')===true){
			$Obj2 = new AppGedungAkademik();
			$result = $Obj2->deleteEgedung($arr_delete);
		}
		
		if($result === 0){
			$delete = $Obj->DoDelete($id_deletes);
			if($delete) {
				$msg = array(1=>'Proses penghapusan data berhasil!','notebox-done');
			} else {
				$msg = array(1=>'Proses penghapusan data gagal!','notebox-warning');
			}
      } else { $msg = array(1=>'Proses penghapusan data gedung pada aplikasi SIA gagal!','notebox-warning');}
      Messenger::Instance()->Send('gedung', 'gedung', 'view', 'html', $msg, Messenger::NextRequest);
      $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'Gedung', 'view', 'html'). '&err=' . Dispatcher::Instance()->Encrypt('del');
      return $urlRedirect;
   }
   
   function CheckUploadedImage($image,$fileChange=false)
   {
      $maxSize = GTFWConfiguration::GetValue('application','max_upload_size');
   	  $fileName = strrev($_FILES[$image]['name']);
      $fileExtPos = strpos($fileName, '.');
      $fileExt = strtolower(strrev(substr($fileName, 0, $fileExtPos)));
      if($fileChange){
      	$_FILES[$image]['name']= strrev(substr($fileName, $fileExtPos + 1));
      	$_FILES[$image]['ext']= $fileExt;
      }
      if
      (
         $_FILES[$image]['error'] !== 0 ||
         strpos($_FILES[$image]['type'], 'image') !== 0 ||
      	 ($_FILES[$image]['size']/pow(1024,2)) > $maxSize ||
         !in_array($fileExt, array('gif','jpg','jpeg','png','bmp')) AND
         $fileName !== ''
      ){
        if (($_FILES[$image]['size']/pow(1024,2)) > $maxSize) $this->errmsg = '<br>Ukuran file tidak boleh lebih dari '.$maxSize.' MB';
      	return false;
      }else return true;
   }
   
   function UploadImage($image)
   {
      if (!$this->CheckUploadedImage($image,true)) return false;
      $fileName = $_FILES[$image]['name'];
      if ($fileName === '') return '';
      $fileExt = $_FILES[$image]['ext'];
      $fileName .= "-".dechex(mt_rand(65536,1048575)).".$fileExt";
      if (move_uploaded_file($_FILES[$image]['tmp_name'], GTFW_APP_DIR."/images/gedung/$fileName")) // Note: dirname tempat upload ini dipakai oleh verifikasi_pengadaan/business/Verifikasi.class.php :: mImageGedungPath
         return $fileName;
      else return false;
   }
   
   function PenyesuaianGedung() {
      $_POST = $_POST->AsArray();
      $Obj = new AppGedung();
      if(!empty($_POST['btnbalik'])) {
         $urlRedirect = $this->pageView;
      }elseif(!empty($_POST['btnsimpan'])){
         if (empty($_POST['umur_ekonomis_baru']) || empty($_POST['umur_teknis_baru']) || empty($_POST['nilai_residu_baru']) || empty($_POST['nilai_perolehan_baru'])) {
            //messanger ngirim data yang udah keisi
            $msg = array($_POST,'Field bertanda bintang tidak boleh kosong!','');
            Messenger::Instance()->Send('gedung', 'PenyesuaianGedung', 'view', 'html', $msg, Messenger::NextRequest);
            $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'PenyesuaianGedung', 'view', 'html');
         }else{
            $userId = trim(Security::Instance()->mAuthentication->GetCurrentUser()->GetUserId());
            $arr_data_penyesuaian = array(
               $_POST['umur_ekonomis_baru'],
               $_POST['umur_teknis_baru'],
               $_POST['nilai_residu_baru'],
               $_POST['nilai_perolehan_baru'],
               $userId,
               $_POST['gedung_id']
            );
            
            $update = $Obj->DoPenyesuaian($arr_data_penyesuaian);
            if($update) {
               $nilai_penyusutan = ($_POST['nilai_perolehan_baru']-$_POST['nilai_residu_baru'])/$_POST['umur_ekonomis_baru'];
               $arr_penyusutan_update = array(
                  $_POST['nilai_perolehan_baru'],
                  $_POST['nilai_residu_baru'],
                  $_POST['umur_ekonomis_baru'],
                  $_POST['nilai_perolehan_baru'],
                  $nilai_penyusutan,
                  $_POST['gedung_id']
               );
               $update_penyusutan_gedung = $Obj->DoUpdatePenyusutan($arr_penyusutan_update);
               $msg = array(1=>'Proses Penyesuaian data berhasil dilakukan!','notebox-done');
            }
            else 
               $msg = array(1=>"Pengubahan data gagal!","notebox-warning");
            
            $urlRedirect = Dispatcher::Instance()->GetUrl('gedung', 'Gedung', 'view', 'html');
            Messenger::Instance()->Send('gedung', 'Gedung', 'view', 'html', $msg, Messenger::NextRequest);
         }
      }
      return $urlRedirect;
   }
}
?>
