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

class info_perkara extends CI_Model{

	function getInfoPerkaraTilang($idperkara){
		try {
			$sql=("SELECT 
					perkara_id,
					ditilang_oleh AS ditilang_id,
					(CASE WHEN ditilang_oleh='1' THEN 'Polisi' WHEN ditilang_oleh='2' THEN 'Dinas Perhubungan' WHEN ditilang_oleh='3' THEN 'Lainya' ELSE '' END) AS ditilang_oleh,
					nomor_tilang,
					A.jenis_kendaraan_id,
					C.nama AS nama_kendaraan,
					nomor_polisi,
					A.bukti_tilang_id,
					B.nama AS nama_bukti,
					D.nama_instansi AS kejaksaan,
					A.form_tilang AS jenis_tilang,
					A.tanggal_penindakan,
					A.nomor_pembayaran
					FROM perkara_lalulintas AS A
					LEFT JOIN bukti_tilang AS B ON B.id=A.bukti_tilang_id
					LEFT JOIN jenis_kendaraan AS C ON C.id=A.jenis_kendaraan_id
					LEFT JOIN (SELECT CONCAT(kode_kejati,'.',kode_kejari) AS kodeKejari, nama_instansi,id FROM kejaksaan_negeri) AS D ON D.kodeKejari=A.kode_satker_kejaksaan
					WHERE A.perkara_id='".$idperkara."'");
			$query=$this->db->query($sql);
			return $query;
		} catch (Exception $e) {
			echo "KESALAHAN".$e;
			return false;
		}
	}


	function getBarangBuktiTilang(){
		try{
			return $this->db->get('bukti_tilang');
		} catch (Exception $e) {
			echo "KESALAHAN".$e;
			return false;
		}
	}

	function getJenisKendaraanTilang(){
		try{
			return $this->db->get('jenis_kendaraan');
		} catch (Exception $e) {
			echo "KESALAHAN".$e;
			return false;
		}	
	}


	function getInfoPerkara($idperkara){
		try {
			
			return $this->db->query('SELECT nomor_perkara,jenis_perkara_id,jenis_perkara_nama,alur_perkara_id,
			tanggal_pendaftaran,tanggal_putusan,tanggal_minutasi,amar_putusan,
			pihak1_text,pihak2_text,nomor_urut_register,tanggal_surat,nomor_surat,pihak_dipublikasikan,
			is_mediasi,keputusan_mediasi,petitum,posita,nilai_sengketa, petitum_dok,prodeo, tanggal_penuntutan, tanggal_putusan_sela, dakwaan, dakwaan_dok,
			tahapan_terakhir_id, tahapan_terakhir_text,proses_terakhir_id, proses_terakhir_text,
			matra,berkas_dari,tanggal_kejadian,tempat_kejadian,tanggal_kejadian,tanggal_skeppera,nomor_skeppera,pejabat_skeppera,tanggal_surat_dakwaan,nomor_surat_dakwaan, pasal_dakwaan, tanggal_bht,
			penyidik_mil,no_bap_penyidik_mil,tgl_penyidik_mil,tanggal_dakwaan,nomor_dakwaan,
			(SELECT COUNT(*) FROM perkara_putusan WHERE perkara_id='.$idperkara.') AS jumperkaraputusan
				FROM v_perkara 
				WHERE perkara_id='.$idperkara.';');
			
		} catch (Exception $e) {
			return '';
		}
	}
	
	function get_barang_bukti($perkara_id){
		try {
			$sql=("Select id from perkara_barang_bukti where perkara_id=".$perkara_id." limit 1;");
			$query=$this->db->query($sql);
			$res=false;
			if ($query->num_rows()>0){
				$res=true;
			}
			return $res;
		} catch (Exception $e) {
			return false;
		}
	}
	
	function getInfoPihakPertama($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('id,pihak_id,nama,alamat,urutan');
			$this->db->order_by('urutan', "ASC");
			return $this->db->get('perkara_pihak1');
		} catch (Exception $e) {
			return '';
		}
	}
	function getKlasifikasiPerkara($idalurperkara){
		if(empty($idalurperkara)) return '';
		if($idalurperkara<0) return '';
		try {
			$query = $this->db->query("SELECT alur_perkara_id, jenis_perkara_id AS id,nama_lengkap AS nama
				FROM jenis_alur_perkara AS j, jenis_perkara AS p
				WHERE j.jenis_perkara_id = p.id AND j.alur_perkara_id = ".$idalurperkara."
				ORDER BY nama_lengkap ASC");
			return $query;
		} catch (Exception $e) {
			log_message('error', $e);
		}
	}
	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 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 getInfoPengacara($idperkara,$pihakke,$idalurperkara){
		try {
			if(!is_numeric($idperkara) OR !is_numeric($pihakke)){
				return "";
			}
	
			if($idalurperkara<100 OR $idalurperkara==119)
				$kuasa = 'Kuasa Hukum';
			else
				$kuasa = 'Penasihat Hukum';
			return $this->db->query("SELECT pen.id,perkara_id,pihak_ke,pengacara_id,urutan,
				CONCAT(pen.nama, '<br/> ".$kuasa." Dari: <br/>',p.nama) AS nama, pen.alamat, aktif, pihak_id
				FROM perkara_pengacara AS pen, pihak AS p 
				WHERE perkara_id = ".$idperkara." AND pihak_ke =".$pihakke." AND pen.pihak_id = p.id;
				");
		} catch (Exception $e) {
		}
	}
	function getInfoPerkaraAnak($idperkara){
		try {
			return $this->db->query("SELECT pp.id AS id, pp.urutan, pp.perkara_id, pp.nama,pp.pihak_id AS pihak_id, pp.alamat,ortu.id_orang_tua,p.nama AS wali
					FROM perkara_pihak2 AS pp
					LEFT JOIN 
					(SELECT * FROM perkara_pihak_orang_tua  WHERE jenis_pihak_anak = 0) AS ortu
					ON pp.pihak_id = ortu.id_anak AND pp.perkara_id = ortu.perkara_id
					LEFT JOIN
					pihak AS p
					ON p.id = ortu.id_orang_tua
					WHERE pp.perkara_id=".$idperkara." ORDER BY pp.urutan ASC;");
		} catch (Exception $e) {
		}
	}
	function getInfoKorbanAnak($idperkara){
		try {
			return $this->db->query("SELECT pp.id AS id, pp.urutan, pp.perkara_id, pp.nama,pp.pihak_id AS pihak_id, pp.alamat,ortu.id_orang_tua,p.nama AS wali
					FROM perkara_pihak_korban AS pp
					LEFT JOIN 
					(SELECT * FROM perkara_pihak_orang_tua  WHERE jenis_pihak_anak = 1) AS ortu
					ON pp.pihak_id = ortu.id_anak AND pp.perkara_id = ortu.perkara_id
					LEFT JOIN
					pihak AS p
					ON p.id = ortu.id_orang_tua
					WHERE pp.perkara_id=".$idperkara." ORDER BY pp.urutan ASC;");
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoPihakKedua($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('id,pihak_id,nama,alamat,urutan,perkara_id,nrp,jabatan,pangkat,kesatuan');
			$this->db->order_by('urutan', "ASC");
			return $this->db->get('perkara_pihak2');
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoPihakKeempat($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('id,pihak_id,nama,alamat,urutan');
			$this->db->order_by('urutan', "ASC");
			return $this->db->get('perkara_pihak4');
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoJadwalSidang($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_jadwal_sidang');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoIntervensi($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_pihak3');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoDiversi($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_diversi');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}

	function getStatusDiversi($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->where('dibuka_kembali',1);
			$this->db->select('perkara_id');
			$this->db->from('perkara_diversi');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}

	function getHasilDiversi($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->where('hasil_diversi',1);
			$this->db->select('perkara_id');
			$this->db->from('perkara_diversi');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}

	function getInfoEksekusi($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_eksekusi');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoBanding($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_banding');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoKasasi($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_kasasi');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoPK($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_pk');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoGrasi($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_grasi');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoVerzet($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_verzet');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoVerstek($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->where('putusan_verstek','Y');
			$this->db->select('perkara_id');
			$this->db->from('perkara_putusan');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoKeberatan($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_keberatan');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}

	function getInfoPenetapanPP($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$this->db->from('perkara_panitera_pn');
			return $this->db->get()->num_rows();
		} catch (Exception $e) {
			return '';
		}
	}

	function getHasilPutusanSela($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('is_keberatan_diterima');
			$result = $this->db->get('perkara_putusan_sela');
			if($result->num_rows>0){
				return $result->row()->is_keberatan_diterima;
			}else{
				return 0;
			}
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoPutusan($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('status_putusan_id');
			$result = $this->db->get('perkara_putusan');
			if($result->num_rows>0){
				return $result->row()->status_putusan_id;
			}else{
				return 0;
			}
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoTerdakwaTidakHadir($idperkara, $keberatan=0){
		try {
			if ($keberatan==0){
				$sql=('SELECT perkara_id FROM perkara_jadwal_sidang WHERE perkara_id = '.$idperkara.' AND urutan <4 AND dihadiri_oleh = 2;');
				$result = $this->db->query($sql);
			return $result->num_rows();
			}else{
				$sql=('SELECT dihadiri_oleh FROM perkara_jadwal_sidang WHERE perkara_id = '.$idperkara.';');
				$result = $this->db->query($sql);
				if($result->num_rows>0){
					return $result->row()->dihadiri_oleh;
				}else{
					return 0;
				}
			}
		} catch (Exception $e) {
			return '';
		}
	}

	function cekStatusPihakHadir($idperkara){
		try {
				$sql=('SELECT dihadiri_oleh FROM perkara_jadwal_sidang WHERE perkara_id = '.$idperkara.' AND dihadiri_oleh IS NOT NULL;');
				$result = $this->db->query($sql);
				return $result;
		} catch (Exception $e) {
			return '';
		}
	}
	function getInfoKehadiranPihak($idperkara){
		try {						
			$sql=('SELECT dihadiri_oleh FROM perkara_jadwal_sidang WHERE perkara_id = '.$idperkara.' ORDER BY urutan DESC LIMIT 1;');
			$result = $this->db->query($sql);
			if($result->num_rows>0){
				return $result->row()->dihadiri_oleh;
			}else{
				return 0;
			}			
		} catch (Exception $e) {
			return '';
		}
	}
	
	function getInfoRekonvensi($idperkara){
		try {
			$this->db->where('perkara_id',$idperkara);
			$this->db->select('perkara_id');
			$result = $this->db->get('perkara_rekonvensi');
			if($result->num_rows>0){
				return 1;
			}else{
				return 0;
			}
		} catch (Exception $e) {
			return 0;
		}
	}
	
	function updt_data($idperkara,$data){
		try {
			$this->db->where('perkara_id', $idperkara);
			$this->db->update('perkara', $data);
			$title = "UPDATE Data Umum [perkara_id=<b>".$idperkara."</b>]<br />UPDATE table <b>perkara</b> dari halaman <b>EDIT DATA UMUM</b> dengan Primary Key [id=".$idperkara."]";
			$descrip = $this->fetch_description($title,$data);
			$this->add_audittrail("UPDATE",$title,$descrip,'perkara');
			return TRUE;
		} catch (Exception $e) {
			return FALSE;
		}
	}


	function updt_data_tilang($idperkara,$data){
		try {
			$this->db->where('perkara_id', $idperkara);
			$this->db->update('perkara_lalulintas', $data);
			$title = "UPDATE Data Lalu Lintas [perkara_id=<b>".$idperkara."</b>]<br />UPDATE table <b>perkara_lalulintas</b> dari halaman <b>EDIT DATA UMUM</b> dengan Primary Key [id=".$idperkara."]";
			$descrip = $this->fetch_description($title,$data);
			$this->add_audittrail("UPDATE",$title,$descrip,'perkara_lalulintas');
			return TRUE;
		} catch (Exception $e) {
			return FALSE;
		}
	}

	
	// ========= unknown dipakai untuk hapus perkara=========
	function hapus_perkara_pn($idperkara){
		 try {
			$this->db->simple_query("CALL perkara_Delete(".$idperkara.");");				
			$data = array(
				'datetime' => date("Y-m-d H:i:s"),
				'ipaddress' => $this->input->ip_address(),
				'username' => $this->session->userdata('username'),
				'tablename' => perkara,
				'formname' => 'Detil Perkara',
				'action' => DELETE,
				'title' => "HAPUS PERKARA dari halaman <b>DETIL PERKARA</b> dengan Primary Key [id=".$idperkara."]",
				'description' => ''
			);
			$this->db->insert('sys_audittrail', $data);
			return TRUE;
		 } catch (Exception $e) {
			return FALSE;
		 }
	}
	//============================

	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 Pihak',
				'action' => $action,
				'title' => $title,
				'description' => $descrip
			);
			$this->db->insert('sys_audittrail', $data);
		} catch (Exception $e) {
		}
	}
	// === digunakan untuk upload file melalui edit data umum ==
	// function get_detil_data_utama($perkara_id){
		// if(empty($perkara_id)){
				// return '';
		// }
		// try{
			// $where="A.perkara_id = C.perkara_id AND A.perkara_id = $perkara_id";
			// $this->db->select('A.perkara_id,A.nomor_perkara,A.tanggal_pendaftaran,MIN(C.tanggal_sidang) as tanggal_sidang,');
			// $this->db->from('perkara A, perkara_jadwal_sidang C');
			// $this->db->where($where);
			// $query=$this->db->get();
			// return $query->result();
		// } 
			// catch (Exception $e) {
			// log_message('error', $e);
		// }
	// }
	// function get_nama_dok($perkara_id,$kolom){
		// if(empty($perkara_id)){
				// return '';
		// }
		// try{
			// $this->db->where('perkara_id',$perkara_id);
			// $query=$this->db->get('perkara')->row();
			// return $query->$kolom;
		// } 
			// catch (Exception $e) {
			// log_message('error', $e);
		// }
	// }
	// function update_dataumum($perkara_id,$datadiupdate){
		// if(empty($perkara_id)){
			// return '';
		// }
		
		// try{
			// $this->db->where('perkara_id',$perkara_id);
			// $this->db->update('perkara',$datadiupdate);
			// return TRUE;
		// } 
			// catch (Exception $e) {
			// return FALSE;
		// }
	// }
	// ======================================
	function repair_riwayat_perkara_sidang_pertama($idperkara){
		$qry1="SELECT COUNT(*) AS adaprocsidang FROM perkara_proses WHERE proses_id='80' AND perkara_id=$idperkara";
		$adaprocsidang=$this->db->query($qry1)->row()->adaprocsidang;
		$qry2="SELECT penetapan_hari_sidang,sidang_pertama,diinput_oleh,diinput_tanggal,diperbaharui_oleh, diperbaharui_tanggal FROM perkara_penetapan WHERE penetapan_hari_sidang IS NOT NULL AND perkara_id=$idperkara";
		$runqry2=$this->db->query($qry2);
		if ($runqry2->result()){
			$tanggal=$runqry2->row()->penetapan_hari_sidang;
			$tanggalspertama=$runqry2->row()->sidang_pertama;
			$penginput=$runqry2->row()->diperbaharui_oleh;
			$tglinput=$runqry2->row()->diperbaharui_tanggal;
			if (empty($penginput)||$penginput==NULL){
				$penginput=$runqry2->row()->diinput_oleh;
				$tglinput=$runqry2->row()->diinput_tanggal;
			}

			$adapensidang=count($tanggal);
			if (($adapensidang==1) && ($adaprocsidang==0)){
				$qry3="SELECT A.id AS tahapan_id, A.nama as tahapan_text, B.id AS proses_id, B.nama AS proses_text FROM tahapan_proses A, proses B WHERE A.id=B.tahapan_id AND B.id='80';";
				$hasil=$this->db->query($qry3);

				$data_insert['perkara_id']=$idperkara;
				$data_insert['tahapan_id']=$hasil->row()->tahapan_id;
				$data_insert['tahapan_nama']=$hasil->row()->tahapan_text;
				$data_insert['proses_id']=$hasil->row()->proses_id;
				$data_insert['proses_nama']=$hasil->row()->proses_text;
				$data_insert['tanggal']=$tanggal;
				$data_insert['diinput_oleh']=$penginput;
				$data_insert['diinput_tanggal']=$tglinput;

				$this->db->insert('perkara_proses',$data_insert);
				
				$qry4="SELECT A.id AS tahapan_id, A.nama as tahapan_text, B.id AS proses_id, B.nama AS proses_text FROM tahapan_proses A, proses B WHERE A.id=B.tahapan_id AND B.id='81';";
				$hasil2=$this->db->query($qry4);

				$data_insert2['perkara_id']=$idperkara;
				$data_insert2['tahapan_id']=$hasil2->row()->tahapan_id;
				$data_insert2['tahapan_nama']=$hasil2->row()->tahapan_text;
				$data_insert2['proses_id']=$hasil2->row()->proses_id;
				$data_insert2['proses_nama']=$hasil2->row()->proses_text;
				$data_insert2['tanggal']=$tanggalspertama;
				$data_insert2['diinput_oleh']=$penginput;
				$data_insert2['diinput_tanggal']=$tglinput;

				$this->db->insert('perkara_proses',$data_insert2);
			}
		}
	}
	function get_jumlah_saksi($idperkara){
		if(empty($idperkara)){ 
				return '';
		}
		try{
			$qry="SELECT COUNT(*) AS jumsaksi FROM perkara_pihak5 WHERE perkara_id=$idperkara";
			$query=$this->db->query($qry)->row()->jumsaksi;
			return $query;
			} catch (Exception $e) {
			log_message('error', $e);
		}
	}
	function update_mil($datamil){
		try {
			$this->db->where('perkara_id', $datamil['perkara_id']);
			$result=$this->db->get('perkara_matra');
			if (!empty($result)){
				if($result->num_rows()>0){
					$this->db->where('perkara_id', $datamil['perkara_id']);
					$this->db->update('perkara_matra', $datamil);			
				}else{
					$this->db->insert('perkara_matra', $datamil);
				}
				return true;
			}else{
				return false;
			}
		} catch (Exception $e) {
			return false;
		}
	}
	function update_bht($tanggal_bht,$perkara_id){
		try {
			$sql="update perkara_putusan set tanggal_bht='".$tanggal_bht."' where perkara_id=".$perkara_id;
			return $this->db->query($sql);
		} catch (Exception $e) {
			return false;
		}
	}
	function hapus_bht($perkara_id){
		try {
			$sql="update perkara_putusan set tanggal_bht=NULL where perkara_id=".$perkara_id;
			return $this->db->query($sql);
		} catch (Exception $e) {
			return false;
		}
	}
	function resultbanding($perkara_id){
		try {
			$sql="select * from perkara_banding where perkara_id=".$perkara_id;
			return $this->db->query($sql);
		} catch (Exception $e) {
			return false;
		}
	}
	function resultkasasi($perkara_id){
		try {
			$sql="select * from perkara_kasasi where perkara_id=".$perkara_id;
			return $this->db->query($sql);
		} catch (Exception $e) {
			return false;
		}
	}
}
/* End of file info_perkara.php */
/* Location: ./application/models/perkara/info_perkara.php */