<?php

   require_once $cfg->mValue['docroot'] . "module/sia_setting/business/sia_setting.class.php";
   class Init extends SiaSetting {
      
      function Init(&$configObject, $dataProceed) {
         SiaSetting::SiaSetting($configObject, $dataProceed);
         $this->AppendSqlQueries("module/init/business/init.sql.php");
      }

      function Insert(){
         $data = $this->GetProperty("DataProceed");//return $data;
         
         // jika tidak ada data, maka tidak ada proses insert
         if (count($data['result']) == 0) {
            return true;
         }
         
         // membaca struktur table dari data yang dikirim, data tertentu perlu perlakukan khusus, temuan baru di table mahasiswa
         foreach ($data['result'][0] as $k_nm_field => $v_value) {
            $arr_field_temp[] = $k_nm_field;
         }
         
         if ($data['jenis'] == 'data') {
            // field ini muncul di recordset tapi tidak ada di dict
            $data['dict']['last_sync'] = '';
            $data['dict']['last_update'] = '';
         }
         
         // membaca struktur table, fokus pada nama field
         // yang jadi acuan adalah dari dict ini, karena data yang dikembalikan ketambahan field lain diluar strukturnya
         foreach ($data['dict'] as $key => $val) {
            // jika field tidak ditemukan di data dari pddikti, maka lewati (ini pengecualian, temuan table mahasiswa ada field di dict tapi tidak ada di data)
            if (!in_array($key, $arr_field_temp)) {
               continue;
            }
            $arr_field[] = $key;
         }
         $field = implode(',', $arr_field);
         
         //return $field;
         //return $data['dict'];
         // membaca data, ambil data berdasarkan nama field, krn terdapat data yang bukan bagian dari table yg dimaksud
         foreach ($data['result'] as $val) {
            $arr_data2 = array();
            foreach ($data['dict'] as $nm_field => $ar_dict_field) {
               // jika field tidak ditemukan di data dari pddikti, maka lewati
               if (!in_array($nm_field, $arr_field_temp)) {
                  continue;
               }
               // mengatasi data dari pddikti yang strukturnya not null tapi datanya berisi null
               if (/*$val['id_jur'] == '76131     ' and*/ $ar_dict_field['not_null'] == 1){
                  if (!isset($val[$nm_field])) {// cek apakah nilainya NULL
                     $val[$nm_field] = "str_ksg"; // ubah dulu ke bentuk lain, agar tidak bentrok dengan data null yg juga berubah ke '', str_ksg singkatan dari string kosong
                  }
               }
               $arr_data2[] = $val[$nm_field];
            }
            /*if ($val['id_jur'] == '76131     ') {
               return $val;
            }*/
            // mengatasi penanganan petik yg sudah dihandle di database_connected, ubah dulu ke bentuk lain
            $arr_data1[] = '(^'.implode('^,^', $arr_data2).'^)';
         }
         $data1 = implode(',', $arr_data1);
         // mengatasi data null yg berubah jadi string kosong setelah dipindah ke array atau di-implode, kembalikan ke null
         $data1 = str_replace('^^', 'null', $data1);
         // kembalikan ke data aslinya
         $data1 = str_replace('^str_ksg^', '^^', $data1);
         //return $data1;
         //return array($data['table'],$field, $data1);
         $update = $this->ExecuteInsertQuery($this->mSqlQueries['do_insert'], array($data['jenis'].'_'.$data['table'],$field, $data1));
         if (false === $update) {
            $this->SetError("Insert gagal");
            return false;
         }
         else {
            return true;
         }      
      }
   }

?>