<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class New_Kasasi extends CI_Model{
	
	function getJenisPerkara($idalurperkara){
		if(empty($idalurperkara)) return 'ERROR';
		try {
			$this->db->where('id',$idalurperkara);
			$result = $this->db->get('alur_perkara');
			if($result->num_rows>0){
				return $result->row()->nama;
			}else{
				return '';
			}
		} catch (Exception $e) {
			return 'ERROR';
		}
	}

	function getTanggalPutusan($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('tanggal_putusan,tanggal_cabut');
			return $this->db->get('perkara_putusan');
		} catch (Exception $e) {
			return '';
		}
	}

	function getPermohonanBandingPihak($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('permohonan_kasasi');
			return $this->db->get('perkara_kasasi_detil');
		} catch (Exception $e) {
			return '';
		}
	}

	/*function getInfoPutusan($nomorperkara){
		try {
			$this->db->where('nomor_perkara',$nomorperkara);
			$this->db->select('tanggal_putusan,perkara_id,alur_perkara_id,jenis_perkara_id,proses_terakhir_id,tahapan_terakhir_id,tanggal_minutasi,tanggal_bht');
			return $this->db->get('v_perkara');
		} catch (Exception $e) {
			return '';
		}
	}*/
	function getInfoPutusan($nomorperkara){
		try {
			return $this->db->query("SELECT vp.tanggal_putusan,vp.perkara_id,vp.alur_perkara_id,vp.jenis_perkara_id,vp.proses_terakhir_id,vp.tahapan_terakhir_id,vp.tanggal_minutasi,vp.tanggal_bht,vb.putusan_banding
								FROM v_perkara AS vp
								LEFT JOIN v_perkara_banding AS vb
								ON vp.perkara_id=vb.perkara_id
								WHERE vp.nomor_perkara='".$nomorperkara."'");
		} catch (Exception $e) {
			log_message('error', $e);
		}
	}
	#-----cek pemberitahuan putusan utk validasi jangka waktu kasasi
	function getInfoPemberitahuanPtsBanding($idperkara){
		try {
			$result = $this->db->query('SELECT MAX(pemberitahuan_putusan_banding) AS tgl_pemberitahuan_pts FROM perkara_banding_detil WHERE perkara_id='.$idperkara);
			if($result->num_rows>0){
				return $result->row()->tgl_pemberitahuan_pts;;
			}else{
				return FALSE;
			}
		} catch (Exception $e) {
			return FALSE;
		}
	}

	function getPihak($idperkara,$pihakke){
		try {
			$tergabung_ke = '';
			if($this->session->userdata('jenis_pengadilan')==3 AND $pihakke==3)
				$tergabung_ke = 'tergabung_ke_pihak,';
			$sql ='SELECT p.pihak_id, p.nama,p.alamat, p.urutan AS urutan_pihak,'.$tergabung_ke.'
				permohonan_kasasi,status_pihak_id,pihak_asal,
				status_pihak_text,urutan_kasasi AS urutan
				FROM perkara_pihak'.$pihakke.' AS p
				LEFT JOIN perkara_kasasi_detil AS b
				ON p.pihak_id = b.pihak_id AND b.perkara_id = '.$idperkara.'
				WHERE p.perkara_id = '.$idperkara.'
				ORDER BY permohonan_kasasi;';
			return $this->db->query($sql);
		} catch (Exception $e) {
			return '';
		}
	}

	function getPemohon($idpihak){
		try {
			$this->db->where('id',$idpihak);
			$this->db->select('id,nama,alamat,pekerjaan');
			return $this->db->get('pihak');
		} catch (Exception $e) {
			return '';
		}
	}


	function getNomorPerkara($idperkara){
		try {
			$query = $this->db->query("SELECT nomor_perkara FROM perkara WHERE perkara_id = ".$idperkara);
			if($query->num_rows>0){
				foreach ($query->result() as $row) {
					return $row->nomor_perkara;
				}
	    	}else{
	    		return 0;
	    	}
		} catch (Exception $e) {
			log_message('error', $e);
		}
	}

	function getStatusPihak($idalurperkara){
		try {
			$this->db->where('tahapan_id',10);
			$this->db->where('aktif','Y');
			$this->db->where('alur_perkara_id',$idalurperkara);
			$this->db->select('pihak_ke,nama');
			return $this->db->get('status_pihak');
		} catch (Exception $e) {
			return '';
		}
	}

	function getBiayaPerkara($idalurperkara,$idtahapan){
		if(empty($idalurperkara)) return '';
		if($idtahapan<10) return '';
		try {
			return $this->db->query("SELECT id, kode,nama,b.jumlah 
				FROM biaya_perkara AS b, jenis_biaya AS j
				WHERE b.jenis_biaya_id = j.id AND b.alur_perkara_id IN (".$idalurperkara.") AND tahapan_id = 30 AND id IN (63,185);");
		} catch (Exception $e) {
			log_message('error', $e);
		}
	}

	
	
	function isPerkaraExist($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$query = $this->db->get('perkara_kasasi');
			if($query->num_rows>0){
				return TRUE;
			}else{
				return FALSE;
			}
		} catch (Exception $e) {
			log_message('error', $e);
			return -1;
		}
	}

	

	function getJenisPerkaraNama($id){
		if(empty($id)) return '';
		try {
			$this->db->where('id',$id);
			$this->db->select('kode,nama,nama_lengkap');
			return $this->db->get('jenis_perkara');
		} catch (Exception $e) {
			log_message('error', $e);
		}
	}

	function fetch_description($title,$data){
		$descrip = '<br><table style="vertical-align:top" cellspacing="0" cellpadding="1" border="1">';
		$descrip .= '<tr><th>Nama Kolom</th><th>Nilai</th></tr>';
		foreach ($data as $key => $value) {
			$descrip .= '<tr>';
			$descrip .= '<td>'.$key.'</td>';
			$descrip .= '<td>'.$value.'</td>';
			$descrip .= '</tr>';
		}
		$descrip .= '</table>';
		return $descrip;
	}

	function add_audittrail($action,$title,$descrip,$tablename){
		try {
			$data = array(
				'datetime' => date("Y-m-d H:i:s"),
				'ipaddress' => $this->input->ip_address(),
				'username' => $this->session->userdata('username'),
				'tablename' => $tablename,
				'formname' => 'Add Perkara Perdata',
				'action' => $action,
				'title' => $title,
				'description' => $descrip
			);
			$this->db->insert('sys_audittrail', $data);
		} catch (Exception $e) {
			
		}
	}

	function update_data($datapihak){
		try {
			foreach ($datapihak as $data) {
				$this->db->where('perkara_id',$data['perkara_id']);
				$this->db->where('pihak_id', $data['pihak_id']);
				$this->db->update('perkara_kasasi_detil', $data['pihak']);
			}
			return TRUE;
		} catch (Exception $e) {
			return FALSE;
		}
	}

	function insertNewData($datapihak){
		try {
			foreach ($datapihak as $data) {
				$this->db->insert('perkara_kasasi_detil', $data);
			}
			return TRUE;
		} catch (Exception $e) {
			return FALSE;
		}
	}
	
	function addDataKeuangan($datakeuangan,$nomorperkara){
		try {
			foreach ($datakeuangan as $data) {
				$id = $this->db->query("SELECT IFNULL(max(id)+1,1) as id FROM perkara_biaya;")->row()->id;
				if($id>0){
					$data['id'] = $id;
					$this->db->insert('perkara_biaya', $data);
				}
			}
			$title = "Tambah Data Keuangan Perkara [Nomor Perkara=<b>".$nomorperkara."</b>]<br />Tambah table <b>Perkara_Biaya</b> dari halaman <b>Jurnal Keuangan Perkara</b> dengan Primary Key [perkara_id=".$data['perkara_id']."]";
			$descrip = $this->fetch_description($title,$data);
			$this->add_audittrail("INSERT",$title,$descrip,'perkara_biaya');
			return TRUE;
		} catch (Exception $e) {
			return FALSE;
		}
	}

	function add_data($data,$datakeuangan,$datapihak){
		try {
			$this->db->insert('perkara_kasasi', $data);
			$title = "Tambah Data Permohonan Kasasi [Nomor Perkara=<b>".$data['nomor_perkara_pn']."</b>]<br />Tambah table <b>perkara_kasasi</b> dari halaman <b>Permohonan Kasasi</b> dengan Primary Key [perkara_id=".$data['perkara_id']."]";
			$descrip = $this->fetch_description($title,$data);
			$this->add_audittrail("INSERT",$title,$descrip,'perkara_kasasi');
			$nomor_perkara_pn = $data['nomor_perkara_pn'];
			$pemohon = $data['pemohon_kasasi'];
			if($data['alur_perkara_id']<100){
				foreach ($datakeuangan as $data) {
					$id = $this->db->query("SELECT IFNULL(max(id)+1,1) as id FROM perkara_biaya;")->row()->id;
					if($id>0){
						$data['id'] = $id;
						$this->db->insert('perkara_biaya', $data);
					}
					$tanggal = $data['tanggal_transaksi'];
				}
				$title = "Tambah Data Keuangan Perkara [Nomor Perkara=<b>".$nomor_perkara_pn."</b>]<br />Tambah table <b>Perkara_Biaya</b> dari halaman <b>Jurnal Keuangan Perkara</b> dengan Primary Key [perkara_id=".$data['perkara_id']."]";
				$descrip = $this->fetch_description($title,$data);
				$this->add_audittrail("INSERT",$title,$descrip,'perkara_biaya');
			}else{
				$tanggal = $data['permohonan_kasasi'];
			}
			
			foreach ($datapihak as $data) {
				if($data['status_pihak_id']==1 AND $data['pihak_diwakili']=='Y'){
					$data['pemohon_kasasi'] = $pemohon;
				}
				$this->db->insert('perkara_kasasi_detil', $data);
			}
			$this->db->simple_query("CALL perkara_proses_update(".$data['perkara_id'].", 30, 'Kasasi', 410, 'Permohonan Kasasi', '".$tanggal."', '', '".$this->session->userdata('username')."', '".date('Y-m-d H:i:s')."');");
			$this->db->simple_query("CALL perkara_update_status(".$data['perkara_id'].");");
			return TRUE;
		} catch (Exception $e) {
			return FALSE;
		}
	}

	function updatePerkaraStatus($idperkara){
		try {
			$this->db->query('UPDATE perkara SET tahapan_terakhir_id = 30,tahapan_terakhir_text = "Kasasi",
				proses_terakhir_id = 410,proses_terakhir_text = "Permohonan Kasasi" WHERE perkara_id ='.$idperkara);
		} catch (Exception $e) {
			
		}
	}

	function getTanggalPutusanBanding($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('putusan_banding');
			$result = $this->db->get('perkara_banding');
			if($result->num_rows>0){
				return $result->row()->putusan_banding;
			}else{
				return '';
			}
		} catch (Exception $e) {
			return 'ERROR';
		}
	}
	function getTanggalpbtPutusanBanding($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('pemberitahuan_putusan_banding');
			$result = $this->db->get('perkara_banding');
			if($result->num_rows>0){
				return $result->row()->pemberitahuan_putusan_banding;
			}else{
				return '';
			}
		} catch (Exception $e) {
			return 'ERROR';
		}
	}

	function getJenisPutusanTerdakwa($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->where('status_putusan_id',20);
			$this->db->select('pihak_id');
			return $this->db->get('perkara_putusan_terdakwa');
		} catch (Exception $e) {
			return '';
		}
	}

}