<?php
require_once GTFWConfiguration::GetValue( 'application', 'docroot').
   'module/pengadaan/business/Komponen.class.php';

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

	var $return;

	function __construct() {
		$this->Obj = new Komponen;
		$this->_POST = $_POST->AsArray();
		$this->pageView = Dispatcher::Instance()->GetUrl('pengadaan', 'komponenList', 'view', 'html');
		$this->pageInput = Dispatcher::Instance()->GetUrl('pengadaan', 'komponenInput', 'view', 'html');
	}
   
   function CheckUploadedImage($name)
   {
      $fileName = strrev(basename($_FILES[$name]['name']));
      $fileExtPos = strpos($fileName, '.');
      $fileExt = strtolower(strrev(substr($fileName, 0, $fileExtPos)));
      $_FILES[$name]['name']= strrev(substr($fileName, $fileExtPos + 1));
      $_FILES[$name]['ext']= $fileExt;
      if
      (
         $_FILES[$name]['error'] !== 0 ||
         strpos($_FILES[$name]['type'], 'image') !== 0 ||
         !in_array($fileExt, array('gif','jpg','jpeg','png','bmp')) AND
         $fileName !== ''
      )
         return false;
      else return true;
   }
   
   function Check ()
   {
      // update form ketika barcode di isi
      if (isset($_GET['barcode']))
      {
         $result = $this->Obj->GetDataByBarcode($this->_POST['pengadaanDetBarcode']);
         if ($result != false) $this->_POST = $result + $this->_POST;
         
         $return = $this->pageInput;
         if (isset($_GET['id'])) $return .= "&id=".$_GET['id'];
         Messenger::Instance()->Send('pengadaan', 'komponenInput', 'view', 'html', array($this->_POST), Messenger::NextRequest);
         return $return;
      }
      // ---------
      
      if (isset($this->_POST['btnbalik'])) return $this->pageView;
      if (!isset($this->_POST['pengadaanDetBrg'])) return $this->pageInput;
      unset($this->_POST['btnsimpan']);
      
      $msg = array();
      
      // check sisa dana pengadaan
      $sisa = $this->Obj->GetSisaDanaPengadaan();
      if (isset($_GET['id']))
      {
         $tmp = $this->Obj->GetPengadaanDetById($_GET['id']->Integer()->Raw());
         $sisa += $tmp['pengadaanDetTotalPerolehan'];
      }
      if ($this->_POST['pengadaanDetTotalPerolehan'] > $sisa)
         $msg[] = "Total perolehan lebih besar dari sisa dana pengadaan yang hanya sebesar Rp.&nbsp;".number_format($sisa, 2, ',', '.');
      // ---------
      
      $KibList = $this->Obj->ConvertCombo($this->Obj->GetCbxJenisKib());
      $KIB = $KibList[$this->_POST['golbrgId']];
      $tmp = $this->Obj->GetPengadaanDetail();
      
      if ($tmp['jenis_pengadaan'] == 'BHP') // KIB E: Aset Lainnya (BHP)
         $MustExists = array
         (
            'pengadaanDetBrg' => 'Kode Aset',
            'pengadaanDetLabel' => 'Label Aset',
            'pengadaanDetNilaiPerolehan' => 'Nilai Perolehan per Satuan'
         );
      elseif(strpos($KIB, 'KIB A:') === 0) // KIB A: Tanah
         $MustExists = array
         (
            'pengadaanDetBrg' => 'Kode Aset',
            'pengadaanDetLabel' => 'Label Aset',
            'pengadaanDetLuasTanah' => 'Luas Tanah',
            'pengadaanDetNilaiPerolehan' => 'Nilai Perolehan per Meter',
            'pengadaanDetHargaFaktur' => 'Nilai Faktur',
            'pengadaanDetNJOP' => 'NJOP'
         );
      elseif(strpos($KIB, 'KIB B:') === 0) // KIB B: Peralatan dan Mesin
         $MustExists = array
         (
            'pengadaanDetBrg' => 'Kode Aset',
            'pengadaanDetLabel' => 'Label Aset',
            'pengadaanDetUmrEko' => 'Umur Ekonomis',
            'pengadaanDetHargaFaktur' => 'Nilai Faktur',
            'pengadaanDetNilaiResidu' => 'NilaiResidu'
         );
      elseif(strpos($KIB, 'KIB C:') === 0) // KIB C: Gedung dan Bangunan
         $MustExists = array
         (
            'pengadaanDetBrg' => 'Kode Aset',
            'pengadaanDetUmrEko' => 'Umur Ekonomis',
            'pengadaanDetLuasTanah' => 'Luas Tanah',
            'pengadaanDetLuasGedung' => 'Luas Bangunan',
            'pengadaanDetHargaFaktur' => 'Nilai Faktur',
            'pengadaanDetNilaiResidu' => 'NilaiResidu'
         );
      elseif(strpos($KIB, 'KIB E:') === 0) // KIB E: Aset Lainnya
         $MustExists = array
         (
            'pengadaanDetBrg' => 'Kode Aset',
            'pengadaanDetLabel' => 'Label Aset',
            'pengadaanDetUmrEko' => 'Umur Ekonomis',
            'pengadaanDetNilaiPerolehan' => 'Nilai Perolehan per Satuan',
            'pengadaanDetNilaiResidu' => 'NilaiResidu'
         );
      
      $MustNumeric = array
      (
         'pengadaanDetJmlAset' => 'Jumlah Aset',
         'pengadaanDetLuasTanah' => 'Luas Tanah',
         'pengadaanDetLuasGedung' => 'Luas Bangunan',
         'pengadaanDetUmrEko' => 'Umur Ekonomis',
         'pengadaanDetNilaiPerolehan' => 'Nilai Perolehan per Satuan',
         'pengadaanDetHargaFaktur' => 'Nilai Faktur',
         'pengadaanDetNilaiResidu' => 'Nilai Residu',
         'pengadaanDetNJOP' => 'NJOP'
      );
      
      foreach ($MustExists as $key=>$val) if ($this->_POST[$key] == '')
         {$msg[] = 'Isian bertanda * (bintang) tidak boleh kosong!'; break;}
      
      foreach ($MustNumeric as $key=>$val)
         if ($this->_POST[$key] != '' AND !is_numeric($this->_POST[$key]))
            $list[] = $val;
      foreach ($this->_POST['biaya_lain'] as $val)
         if (!is_numeric($this->_POST[$val]) AND $this->_POST[$val] != '')
            {$list[] = "Biaya lain"; break;}
      if (isset($list))
      {
         $tmp = "Field berikut harap diisi dengan bilangan numeris!\n";
         foreach ($list as $val)
            $tmp .= "\t\t<li style='margin-left: 2em; list-style: circle'>$val</li>\n";
         $msg[] = "$tmp\t";
      }
      
      // cuma ngecek validitas dan sukses tidaknya data diupload, proses move_upload_file ada di business
      if (!$this->CheckUploadedImage('denah'))
         $msg[] = "Gambar denah bangunan tidak terupload atau tidak valid.";
      if (!$this->CheckUploadedImage('foto'))
         $msg[] = "Gambar foto tidak terupload atau tidak valid.";
      // ---------
      
      if (count($msg) > 0)
      {
         $msg = array($this->_POST, $msg, 'notebox-alert');
         Messenger::Instance()->Send('pengadaan', 'komponenInput', 'view', 'html', $msg, Messenger::NextRequest);
         
         $return = $this->pageInput;
         if (isset($_GET['id'])) $return .= "&id=".$_GET['id'];
         return $return;
      }
      
		// Penyesuaian data input
		$proxy =& $this->_POST;
		if ($proxy['isSertifikat'] != 'checked') $proxy['pengadaanDetSertifikat'] = '';
		if ($proxy['isAkta'] != 'checked') $proxy['pengadaanDetAkta'] = '';
		if ($proxy['isBPKB'] != 'checked') $proxy['pengadaanDetBPKB'] = '';
		if ($proxy['isSTNK'] != 'checked') $proxy['pengadaanDetSTNK'] = '';
		// ---------
		
      return true;
   }
   
   function Add()
   {
      $check = $this->Check();
      if ($check !== true) return $check;
      
      $result = $this->Obj->Add($this->_POST);
      if ($result === 0)
         $msg = array(1=>'Penambahan Data Berhasil Dilakukan.', $this->cssDone);
      else $msg = array(1=>'Proses Penambahan Data Gagal!'.$result, $this->cssFail);
      Messenger::Instance()->Send('pengadaan', 'komponenList', 'view', 'html', $msg, Messenger::NextRequest);
      
      return $this->pageView;
   }
   
   function Update()
   {
      $check = $this->Check();
      if ($check !== true) return $check;
		
      $result = $this->Obj->Update($this->_POST, $_GET['id']->Integer()->Raw());
      if ($result === 0)
         $msg = array(1=>'Perubahan Data Berhasil Dilakukan.', $this->cssDone);
      else $msg = array(1=>"Tidak Berhasil Mengubah Data!$result", $this->cssFail);
      Messenger::Instance()->Send('pengadaan', 'komponenList', 'view', 'html', $msg, Messenger::NextRequest);
      
      return $this->pageView;
   }
   
   function Delete()
   {
      $result = $this->Obj->Delete($this->_POST['idDelete']);
      if ($result === 0)
         $msg = array(1=>'Penghapusan Data Berhasil Dilakukan.', $this->cssDone);
      else $msg = array(1=>"Ada $result data yang tidak bisa dihapus.", $this->cssFail);
      Messenger::Instance()->Send('pengadaan', 'komponenList', 'view', 'html', $msg, Messenger::NextRequest);
      
      return $this->pageView;
   }
}
?>