Advertisement
cahyadsn

test

Jan 9th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 149.51 KB | None | 0 0
  1. <?php
  2.  
  3. defined('BASEPATH') OR exit('No direct script access allowed');
  4.  
  5. ini_set('max_execution_time', 300); // 5 minutes
  6.  
  7. class Approval extends CI_Controller {
  8.  
  9. function __construct() {
  10. parent ::__construct();
  11. if (!$this->is_logged_in()) {
  12. $logout = $this->ion_auth->logout();
  13. $this->session->set_flashdata('message', $this->ion_auth->messages());
  14. redirect('', 'refresh');
  15. }
  16. $this->config->load('pdln', true);
  17. }
  18.  
  19. public function is_logged_in() {
  20. $user = $this->session->userdata('user_id');
  21. return isset($user);
  22. }
  23.  
  24. public function index() {
  25. $this->task();
  26. }
  27.  
  28. public function task() {
  29. $data['theme'] = 'pdln';
  30. $data['page'] = 'v_task';
  31. $data['title'] = 'Item Pekerjaan';
  32. $data['title_page'] = 'Item Pekerjaan';
  33. $data['breadcrumb'] = 'Item Pekerjaan';
  34. page_render($data);
  35. }
  36.  
  37. public function plh_task_status_pdln($jenis_plh) {
  38. $pdln_status = 0;
  39. if ($jenis_plh == LEVEL_ANALIS) {
  40. $pdln_status = 3;
  41. } else if ($jenis_plh == LEVEL_KASUBAG) {
  42. $pdln_status = 4;
  43. } else if ($jenis_plh == LEVEL_KABAG) {
  44. $pdln_status = 5;
  45. } else if ($jenis_plh == LEVEL_KARO) {
  46. $pdln_status = 6;
  47. } else if ($jenis_plh == LEVEL_SESMEN) {
  48. $pdln_status = 7;
  49. } else if ($jenis_plh == LEVEL_TUSESMEN) {
  50. $pdln_status = 8;
  51. } else if ($jenis_plh == LEVEL_MENSESNEG) {
  52. $pdln_status = 9;
  53. } else if ($jenis_plh == LEVEL_TUMENSESNEG) {
  54. $pdln_status = 10;
  55. }
  56. return $pdln_status;
  57. }
  58.  
  59. public function task_list() {
  60. $id_user = $this->session->user_id;
  61. $data_user = $this->db->get_where('m_user', array('UserID' => $id_user))->row();
  62. $level = $data_user->level;
  63. $is_plh = $data_user->is_plh;
  64. $task_plh = '';
  65. $jenis_plh = '';
  66. $is_active_plh = 0;
  67. if ($is_plh > 0) {
  68. $sekarang = date("Y-m-d");
  69. $this->db->select('*');
  70. $this->db->where('id_user_plh', $id_user);
  71. $this->db->limit(1);
  72. $this->db->order_by('id_plh', 'desc');
  73. $jenis = $this->db->get('t_log_plh')->row();
  74. if ($jenis) {
  75. $str_date = strtotime($jenis->start_date);
  76. $end_date = strtotime($jenis->end_date);
  77. $now_date = strtotime($sekarang);
  78. if (isset($jenis->jenis_plh) && ($now_date >= $str_date) && ($now_date <= $end_date)) {
  79. $task_plh = $this->plh_task_status_pdln($jenis->jenis_plh);
  80. $is_active_plh = 1;
  81. }
  82. }
  83. }
  84.  
  85. $where = "";
  86. $handle_negara = $this->get_handle_negara($id_user);
  87.  
  88. $this->crud_ajax->init('m_pdln', 'id_pdln', array('m_pdln.tgl_register' => 'asc'));
  89. $where = array('m_pdln.id_level_pejabat >' => '3');
  90.  
  91. if ($level == LEVEL_ANALIS) {
  92. $this->db->where_in('negara', $handle_negara);
  93. if ($is_plh) {
  94. $this->db->where("(m_pdln.status='3' OR m_pdln.status='$task_plh')", NULL, FALSE);
  95. } else {
  96. $where = array('m_pdln.status' => '3', 'm_pdln.id_level_pejabat >' => '2');
  97. }
  98. } else if ($level == LEVEL_KASUBAG) {
  99. $this->db->where_in('negara', $handle_negara);
  100. if ($is_plh && $is_active_plh > 0) {
  101. $this->db->where("(m_pdln.status='4' OR m_pdln.status='$task_plh')", NULL, FALSE);
  102. } else {
  103. $where = array('m_pdln.status' => '4', 'm_pdln.id_level_pejabat >' => '2');
  104. }
  105. } else if ($level == LEVEL_KABAG) {
  106. if ($is_plh && $is_active_plh > 0) {
  107. $this->db->where("(m_pdln.status='5' OR m_pdln.status='$task_plh')", NULL, FALSE);
  108. } else {
  109. $where = array('m_pdln.status' => '5', 'm_pdln.id_level_pejabat >' => '2');
  110. }
  111. } else if ($level == LEVEL_KARO) {
  112. if ($is_plh && $is_active_plh > 0) {
  113. $this->db->where("(m_pdln.status='6' OR m_pdln.status='$task_plh')", NULL, FALSE);
  114. } else {
  115. $where = array('m_pdln.status' => '6', 'm_pdln.id_level_pejabat >' => '2');
  116. }
  117. } else if ($level == LEVEL_SESMEN) {
  118. if ($is_plh && $is_active_plh > 0) {
  119. $this->db->where("(m_pdln.status='7' OR m_pdln.status='$task_plh')", NULL, FALSE);
  120. } else {
  121. $where = array('m_pdln.status' => '7', 'm_pdln.id_level_pejabat >' => '2');
  122. }
  123. } else if ($level == LEVEL_TUSESMEN) {
  124. $where = array('m_pdln.status' => '9', 'm_pdln.id_level_pejabat >' => '2');
  125. } else if ($level == LEVEL_MENSESNEG) {
  126. $where = array('m_pdln.status' => '8', 'm_pdln.id_level_pejabat >' => '2');
  127. } else if ($level == LEVEL_TUMENSESNEG) {
  128. $where = array('m_pdln.status' => '10', 'm_pdln.id_level_pejabat >' => '2');
  129. } else {
  130.  
  131. if ($is_plh) {
  132. $this->db->where("(m_pdln.status='$task_plh')", NULL, FALSE);
  133. } else {
  134. // $this->db->where_not_in('m_pdln.status', array('0','1','2','3','4','5','6','7','8','9','10','11','12'));
  135. }
  136. }
  137.  
  138. $this->crud_ajax->setExtraWhere($where);
  139. $this->crud_ajax->set_select_field('
  140. m_pdln.id_pdln,m_pdln.no_register,m_pdln.tgl_register,m_pdln.status,
  141. m_pdln.no_surat_usulan_fp,m_pdln.create_date,m_kegiatan.NamaKegiatan,
  142. unit_kerja.Name as unit_pemohon,unit_kerja2.Name as unit_fp,m_pdln.jenis_permohonan
  143. ');
  144. $join = array(
  145. 'm_user as user1' => array('user1.UserID = m_pdln.unit_pemohon', 'left'),
  146. 'm_unit_kerja_institusi as unit_kerja' => array('unit_kerja.ID = user1.unitkerja', 'left'),
  147. 'm_kegiatan' => array('m_kegiatan.ID = m_pdln.id_kegiatan', 'left'),
  148. 'm_user as user2' => array('user2.UserID = m_pdln.unit_fp', 'left'),
  149. 'm_unit_kerja_institusi as unit_kerja2' => array('unit_kerja2.ID = user2.unitkerja', 'left')
  150. );
  151. $this->crud_ajax->setJoinField($join);
  152. $list = $this->crud_ajax->get_datatables();
  153.  
  154. $data = array();
  155. $no = (isset($_POST['start'])) ? $_POST['start'] : 0;
  156. foreach ($list as $pdln) {
  157. $no++;
  158. $row = array();
  159. $row[] = $pdln->id_pdln;
  160. $row[] = str_pad($pdln->no_register, 8, '0', STR_PAD_LEFT);
  161. $row[] = date("d/m/Y", ($pdln->tgl_register));
  162. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/edit_task/' . $pdln->id_pdln . '"><button class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> View</button></a>';
  163. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/view_arsip/' . $pdln->id_pdln . '"><button class="btn btn-sm red btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> Arsip</button></a>';
  164. $row[] = $pdln->no_surat_usulan_fp;
  165. $row[] = $pdln->unit_pemohon;
  166. $row[] = $pdln->unit_fp;
  167. $row[] = '<span class="label label-' . setLabel($pdln->jenis_permohonan) . '">' . setJenisPermohonan($pdln->jenis_permohonan) . '</span>';
  168. $row[] = $pdln->NamaKegiatan;
  169. $row[] = '<span class="label label-danger">' . setStatus($pdln->status) . '</span>';
  170.  
  171. $row[] = $pdln->tgl_register;
  172. $data[] = $row;
  173. }
  174. $output = array(
  175. "draw" => (isset($_POST['draw']) ? $_POST['draw'] : null),
  176. "recordsTotal" => $this->crud_ajax->count_all(),
  177. "recordsFiltered" => $this->crud_ajax->count_filtered(),
  178. "data" => $data,
  179. );
  180. echo json_encode($output);
  181. }
  182.  
  183. public function task_list_express() {
  184. $id_user = $this->session->user_id;
  185. $data_user = $this->db->get_where('m_user', array('UserID' => $id_user))->row();
  186. $level = $data_user->level;
  187. $is_plh = $data_user->is_plh;
  188. $task_plh = '';
  189. $jenis_plh = '';
  190. $is_active_plh = 0;
  191. if ($is_plh > 0) {
  192. $sekarang = date("Y-m-d");
  193. $this->db->select('*');
  194. $this->db->where('id_user_plh', $id_user);
  195. $this->db->limit(1);
  196. $this->db->order_by('id_plh', 'desc');
  197. $jenis = $this->db->get('t_log_plh')->row();
  198. if ($jenis) {
  199. $str_date = strtotime($jenis->start_date);
  200. $end_date = strtotime($jenis->end_date);
  201. $now_date = strtotime($sekarang);
  202. if (isset($jenis->jenis_plh) && ($now_date >= $str_date) && ($now_date <= $end_date)) {
  203. $task_plh = $this->plh_task_status_pdln($jenis->jenis_plh);
  204. $is_active_plh = 1;
  205. }
  206. }
  207. }
  208.  
  209. $where = "";
  210. $handle_negara = $this->get_handle_negara($id_user);
  211.  
  212. $this->crud_ajax->init('m_pdln', 'id_pdln', array('m_pdln.tgl_register' => 'asc'));
  213.  
  214. if ($level == LEVEL_ANALIS) {
  215. $this->db->where_in('negara', $handle_negara);
  216. if ($is_plh && $is_active_plh > 0) {
  217. // $this->db->where("(m_pdln.status='3' OR m_pdln.status='$task_plh')", NULL, FALSE);
  218. $where = array("m_pdln.status='3' OR m_pdln.status='$task_plh'", 'm_pdln.id_level_pejabat < ' => '3');
  219. } else {
  220. $where = array('m_pdln.status' => '3', 'm_pdln.id_level_pejabat < ' => '3');
  221. }
  222. } else if ($level == LEVEL_KASUBAG) {
  223. $this->db->where_in('negara', $handle_negara);
  224. if ($is_plh && $is_active_plh > 0) {
  225. // $this->db->where("(m_pdln.status='4' OR m_pdln.status='$task_plh')", NULL, FALSE);
  226. $where = array("(m_pdln.status='4' OR m_pdln.status='$task_plh')", 'm_pdln.id_level_pejabat < ' => '3');
  227. } else {
  228. $where = array('m_pdln.status' => '4', 'm_pdln.id_level_pejabat < ' => '3');
  229. }
  230. } else if ($level == LEVEL_KABAG) {
  231. if ($is_plh && $is_active_plh > 0) {
  232. $where = array("(m_pdln.status='5' OR m_pdln.status='$task_plh')", 'm_pdln.id_level_pejabat < ' => '3');
  233. // $this->db->where("(m_pdln.status='5' OR m_pdln.status='$task_plh')", NULL, FALSE);
  234. } else {
  235. $where = array('m_pdln.status' => '5', 'm_pdln.id_level_pejabat < ' => '3');
  236. }
  237. } else if ($level == LEVEL_KARO) {
  238. if ($is_plh && $is_active_plh > 0) {
  239. // $this->db->where("(m_pdln.status='6' OR m_pdln.status='$task_plh')", NULL, FALSE);
  240. $where = array("(m_pdln.status='6' OR m_pdln.status='$task_plh')", 'm_pdln.id_level_pejabat < ' => '3');
  241. } else {
  242. $where = array('m_pdln.status' => '6', 'm_pdln.id_level_pejabat < ' => '3');
  243. }
  244. } else if ($level == LEVEL_SESMEN) {
  245. if ($is_plh && $is_active_plh > 0) {
  246. $this->db->where("(m_pdln.status='7' OR m_pdln.status='$task_plh')", NULL, FALSE);
  247. // $where = array("(m_pdln.status='7' OR m_pdln.status='$task_plh')",'m_pdln.id_level_pejabat < '=>'3');
  248. } else {
  249. $where = array('m_pdln.status' => '7', 'm_pdln.id_level_pejabat < ' => '3');
  250. }
  251. } else if ($level == LEVEL_TUSESMEN) {
  252. $where = array('m_pdln.status' => '9', 'm_pdln.id_level_pejabat < ' => '3');
  253. } else if ($level == LEVEL_MENSESNEG) {
  254. $where = array('m_pdln.status' => '8', 'm_pdln.id_level_pejabat < ' => '3');
  255. } else if ($level == LEVEL_TUMENSESNEG) {
  256. $where = array('m_pdln.status' => '10', 'm_pdln.id_level_pejabat < ' => '3');
  257. } else {
  258.  
  259. if ($is_plh) {
  260. $this->db->where("(m_pdln.status='$task_plh')", NULL, FALSE);
  261. } else {
  262. // $this->db->where_not_in('m_pdln.status', array('0','1','2','3','4','5','6','7','8','9','10','11','12'));
  263. }
  264. }
  265. // $where = array();
  266.  
  267. $this->crud_ajax->setExtraWhere($where);
  268. $this->crud_ajax->set_select_field('
  269. m_pdln.id_pdln,m_pdln.no_register,m_pdln.tgl_register,m_pdln.status,
  270. m_pdln.no_surat_usulan_fp,m_pdln.create_date,m_kegiatan.NamaKegiatan,
  271. unit_kerja.Name as unit_pemohon,unit_kerja2.Name as unit_fp,m_pdln.jenis_permohonan
  272. ');
  273. $join = array(
  274. 'm_user as user1' => array('user1.UserID = m_pdln.unit_pemohon', 'left'),
  275. 'm_unit_kerja_institusi as unit_kerja' => array('unit_kerja.ID = user1.unitkerja', 'left'),
  276. 'm_kegiatan' => array('m_kegiatan.ID = m_pdln.id_kegiatan', 'left'),
  277. 'm_user as user2' => array('user2.UserID = m_pdln.unit_fp', 'left'),
  278. 'm_unit_kerja_institusi as unit_kerja2' => array('unit_kerja2.ID = user2.unitkerja', 'left')
  279. );
  280.  
  281. $this->crud_ajax->setJoinField($join);
  282. $list = $this->crud_ajax->get_datatables();
  283. // var_dump($this->crud_ajax->last_query());
  284.  
  285. $data = array();
  286. $no = (isset($_POST['start'])) ? $_POST['start'] : 0;
  287. foreach ($list as $pdln) {
  288. $no++;
  289. $row = array();
  290. $row[] = $pdln->id_pdln;
  291. $row[] = str_pad($pdln->no_register, 8, '0', STR_PAD_LEFT);
  292. $row[] = date("d/m/Y", ($pdln->tgl_register));
  293. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/edit_task/' . $pdln->id_pdln . '"><button class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> View</button></a>';
  294. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/view_arsip/' . $pdln->id_pdln . '"><button class="btn btn-sm red btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> Arsip</button></a>';
  295. $row[] = $pdln->no_surat_usulan_fp;
  296. $row[] = $pdln->unit_pemohon;
  297. $row[] = $pdln->unit_fp;
  298. $row[] = '<span class="label label-' . setLabel($pdln->jenis_permohonan) . '">' . setJenisPermohonan($pdln->jenis_permohonan) . '</span>';
  299. $row[] = $pdln->NamaKegiatan;
  300. $row[] = '<span class="label label-danger">' . setStatus($pdln->status) . '</span>';
  301.  
  302. $row[] = $pdln->tgl_register;
  303. $data[] = $row;
  304. }
  305. $output = array(
  306. "draw" => (isset($_POST['draw']) ? $_POST['draw'] : null),
  307. "recordsTotal" => $this->crud_ajax->count_all(),
  308. "recordsFiltered" => $this->crud_ajax->count_filtered(),
  309. "data" => $data,
  310. );
  311. echo json_encode($output);
  312. }
  313.  
  314. public function express() {
  315. $data['theme'] = 'pdln';
  316. $data['page'] = 'v_express';
  317. $data['title'] = 'Item Pekerjaan';
  318. $data['title_page'] = 'Item Pekerjaan';
  319. $data['breadcrumb'] = 'Item Pekerjaan';
  320. page_render($data);
  321. }
  322.  
  323. public function edit_task($id_pdln) {
  324. $where = array('Status' => '1');
  325. /* $this->crud_ajax->init('r_level_pejabat','id',null);
  326. $this->crud_ajax->setExtraWhere($where);
  327. $data['level_pejabat'] = $this->crud_ajax->get_data();
  328. $this->crud_ajax->init('r_jenis_kegiatan','ID',null);
  329. $this->crud_ajax->setExtraWhere($where);
  330. $data['jenis_kegiatan'] = $this->crud_ajax->get_data();
  331. $this->crud_ajax->init('r_negara','id',null);
  332. $this->crud_ajax->setExtraWhere($where);
  333. $data['negara'] = $this->crud_ajax->get_data();
  334. $this->crud_ajax->init('r_jenis_pembiayaan','ID',null);
  335. $this->crud_ajax->setExtraWhere($where);
  336. $data['jenis_pembiayaan'] = $this->crud_ajax->get_data();
  337. $this->crud_ajax->init('r_institution','ID',null);
  338. $this->crud_ajax->setExtraWhere($where);
  339. $data['list_instansi'] = $this->crud_ajax->get_data();
  340. */
  341. //$this->crud_ajax->init('r_template_tembusan', 'ID', null);
  342. //$this->crud_ajax->setExtraWhere($where);
  343. //$data['list_temp_tembusan'] = $this->crud_ajax->get_data();
  344. $this->crud_ajax->init('r_template_tembusan', 'ID', null);
  345. $this->crud_ajax->set_select_field('ID,Nama');
  346. $this->crud_ajax->setExtraWhere($where);
  347. $tembusan = $this->crud_ajax->get_data();
  348. $list_tembusan = array('0' => 'Pilih Format Tembusan');
  349. foreach ($tembusan as $t)
  350. $list_tembusan[$t->ID] = $t->Nama;
  351. $data['list_tembusan'] = $list_tembusan;
  352. $data['id_pdln'] = $id_pdln;
  353. $this->crud_ajax->init('t_approval_pdln', 'id', null);
  354. $where_pdln = array('id_pdln' => $id_pdln, 'is_done' => 1);
  355. $this->crud_ajax->setExtraWhere($where_pdln);
  356. $data['list_approval'] = $this->crud_ajax->get_data(); //get history approval
  357. $this->db->select('p.id_pdln_lama,p.id_signed,p.id_pdln,p.id_kegiatan,p.no_surat_usulan_pemohon,p.tgl_surat_usulan_pemohon,
  358. lp.nama as level_pejabat,p.no_surat_usulan_fp,p.tgl_surat_usulan_fp,
  359. p.pejabat_sign_sp,p.id_level_pejabat,p.format_tembusan,p.jenis_permohonan,
  360. p.status,p.id_level_pejabat,p.author');
  361. $this->db->where('p.id_pdln', $id_pdln);
  362. $this->db->from('m_pdln p');
  363. $this->db->join("r_level_pejabat lp", "lp.id = p.id_level_pejabat");
  364. $data['data_pdln'] = $this->db->get()->row();
  365. $level = $this->db->get_where('r_level_pejabat', array('id' => $data['data_pdln']->id_level_pejabat))->row();
  366. $matrik = $level->id_lama;
  367. $data['matriks_level'] = $matrik;
  368. $data['data_pdln_lama'] = $this->db->get_where('m_pdln', array('id_pdln' => $data['data_pdln']->id_pdln_lama))->row();
  369.  
  370. //-----------------------------------------------------------------------------------------------------
  371. // Memastikan bahwa level pejabat tertentu atau pengguna tertentu yang dapat melakukan perubahan data
  372. //-----------------------------------------------------------------------------------------------------
  373. $id_user = $this->session->user_id;
  374. $data_user = $this->db->get_where('m_user', array('UserID' => $id_user))->row();
  375. $level = $data_user->level;
  376. $data_integrity = $this->config->item('data_integrity', 'pdln');
  377. $id_level_pejabat = $data['data_pdln']->id_level_pejabat;
  378. if (!empty($data['data_pdln']) && $data['data_pdln']->author != $id_user && (array_key_exists($id_level_pejabat, $data_integrity) == false || $data_integrity[$id_level_pejabat] != $level)
  379. //&& in_array($data['data_pdln']->status, $pdln_status) == false
  380. ) {
  381. //show_error("Anda tidak memiliki akses terhadap halaman atau data di halaman ini. ", 403, "Forbidden");
  382. }
  383. //-----------------------------------------------------------------------------------------------------
  384. $this->db->select('m_kegiatan.ID,NamaKegiatan,StartDate,EndDate,r_negara.nmnegara,r_kota.nmkota,r_jenis_kegiatan.Nama as JenisKegiatan');
  385. $this->db->where('m_kegiatan.ID', $data['data_pdln']->id_kegiatan);
  386. $this->db->from('m_kegiatan');
  387. $this->db->join('r_negara', 'r_negara.id = m_kegiatan.negara');
  388. $this->db->join('r_kota', 'r_kota.id = m_kegiatan.tujuan');
  389. $this->db->join('r_jenis_kegiatan', 'r_jenis_kegiatan.ID = m_kegiatan.JenisKegiatan');
  390. $data['detail_kegiatan'] = $this->db->get()->row();
  391. $data['theme'] = 'pdln';
  392. $data['page'] = 'v_edit_task';
  393. $data['title'] = 'Form Persetujuan';
  394. $data['title_page'] = 'Form Persetujuan';
  395. $data['breadcrumb'] = 'Form Persetujuan';
  396. $data['id_user'] = $this->session->user_id;
  397.  
  398. // Setting PLH
  399. // $data_user = $this->db->get_where('m_user', array('UserID' => $id_user))->row();
  400. // $is_plh = $data_user->is_plh;
  401. // $level_approval = '';
  402. // if ($is_plh) {
  403. // $sekarang = date("Y-m-d");
  404. // $this->db->select('jenis_plh,start_date,end_date');
  405. // $this->db->where('id_user_plh', $id_user);
  406. // $this->db->limit(1);
  407. // $this->db->order_by('id_plh', 'desc');
  408. // $jenis = $this->db->get('t_log_plh')->row();
  409. // $str_date = strtotime($jenis->start_date);
  410. // $end_date = strtotime($jenis->end_date);
  411. // $now_date = strtotime($sekarang);
  412. // if (isset($jenis->jenis_plh)&&($now_date >= $str_date) && ($now_date <= $end_date) ) {
  413. // $level_approval = $jenis->jenis_plh;
  414. // }else{
  415. // $level_approval = $data_user->level;
  416. // }
  417. // }
  418. $data['level'] = $data_user->level;
  419. page_render($data);
  420. }
  421.  
  422. public function get_file_path() {
  423. $id_pdln = $this->input->post('id_pdln');
  424. $this->db->where('id_pdln', $id_pdln);
  425. $row = $this->db->get('m_pdln')->row();
  426. $date_created = date("Y-m-d", $row->create_date);
  427. // 25_698_file_surat_usulan_pemohon.pdf
  428. $file_pemohon = $row->path_file_sp_pemohon;
  429. $file_fp = $row->path_file_sp_fp;
  430. $response['status'] = TRUE;
  431. $path_pemohon = get_file_pdln("pdln", $date_created, $id_pdln, $file_pemohon);
  432. $path_fp = get_file_pdln("pdln", $date_created, $id_pdln, $file_fp);
  433. if (!empty($file_pemohon)) {
  434. $response['path_pemohon'] = $path_pemohon;
  435. $response['status_file_pemohon'] = TRUE;
  436. $response['msg'] = "Simpan data berhasil";
  437. } else
  438. $response['status_file_pemohon'] = FALSE;
  439. if (!empty($file_fp)) {
  440. $response['path_focal_point'] = $path_fp;
  441. $response['status_file_fp'] = TRUE;
  442. } else
  443. $response['status_file_fp'] = FALSE;
  444. echo json_encode($response);
  445. }
  446.  
  447. public function get_file_kegiatan() {
  448. $id_jenis = $this->db->get_where('m_kegiatan', array('ID' => $this->input->post('id_jenis')))->row()->JenisKegiatan;
  449. $id_pdln = $this->input->post('id_pdln');
  450. $created_date = date("Y-m-d", ($this->db->get_where('m_pdln', array('id_pdln' => $id_pdln))->row()->create_date));
  451. $this->db->from('view_doc_kegiatan');
  452. $this->db->where('id_jenis_kegiatan', $id_jenis);
  453. $result = $this->db->get();
  454. $response = array();
  455. if ($result->num_rows() > 0) {
  456. $data['status'] = TRUE;
  457. foreach ($result->result() as $row) {
  458. $data = array();
  459. $data['id_jenis_doc'] = $row->id_jenis_doc;
  460. $data['nama_doc'] = $row->nama_doc;
  461. $data['nama_full_doc'] = ucwords($row->nama_full_doc);
  462. $data['is_require'] = ($row->is_require == '1' ? TRUE : FALSE );
  463. $data['id_jenis_kegiatan'] = $row->id_jenis_kegiatan;
  464. $id_jenis_doc = $row->id_jenis_doc;
  465. $where = array(
  466. 'id_jenis_doc' => $id_jenis_doc,
  467. 'id_pdln' => $id_pdln
  468. );
  469. $is_exist = $this->db->get_where('m_dok_pdln', $where);
  470. if ($is_exist->num_rows() > 0) {
  471. $nama_file_doc = $is_exist->row()->dir_path;
  472. $path_file = get_file_pdln("kegiatan", $created_date, $id_pdln, $nama_file_doc);
  473. $data['path_file'] = $path_file;
  474. $data['is_exist'] = TRUE;
  475. } else {
  476. $data['is_exist'] = FALSE;
  477. }
  478. array_push($response, $data);
  479. }
  480. }
  481. echo json_encode($response, JSON_PRETTY_PRINT);
  482. }
  483.  
  484. public function lanjutkan() {
  485. $this->_lanjutkan_validate();
  486. $response['status'] = TRUE;
  487. echo json_encode($response);
  488. }
  489.  
  490. /**
  491. * @method private _validate handle validation data users
  492. * @return json output status on form or modal
  493. */
  494. private function _lanjutkan_validate() {
  495. $data = array();
  496. $data['error_string'] = array();
  497. $data['inputerror'] = array();
  498. $data['status'] = TRUE;
  499. $id_pdln = $this->input->post('id_pdln');
  500. $status = $this->input->post('status');
  501. $note = $this->input->post('note');
  502. $level = $this->input->post('level');
  503. $nextlevel = $this->input->post('nextlevel');
  504. $template_tembusan = $this->input->post('template_tembusan');
  505. $level_user = $this->db->get_where('m_user', array('UserID' => $this->session->user_id))->row()->level;
  506. if ($note === "") {
  507. $data['status'] = FALSE;
  508. $data['message'] = "Silahkan berikan catatan terlebih dahulu sebelum memberikan persetujuan";
  509. echo json_encode($data);
  510. exit;
  511. } else if ($template_tembusan === "0" || !isset($template_tembusan)) {
  512. if (($level_user == LEVEL_ANALIS) || ($level_user == LEVEL_KASUBAG) || ($level_user == LEVEL_KABAG)) {
  513. $data['status'] = FALSE;
  514. $data['message'] = "Silahkan pilih format tembusan terlebih dahulu";
  515. echo json_encode($data);
  516. exit;
  517. }
  518. }
  519. if ($data['status'] === TRUE) {
  520. /* Insert New Row To Next Approval */
  521. $this->crud_ajax->init('t_approval_pdln', 'id', null);
  522. $data_approval = array(
  523. 'id_pdln' => $id_pdln,
  524. 'assign_date' => date('Y-m-d H:i:s'),
  525. 'level' => $nextlevel
  526. );
  527. $insert_id_u = $this->crud_ajax->save($data_approval);
  528. /* Update Current Data Approval */
  529. $this->crud_ajax->init('t_approval_pdln', 'id', null);
  530. $user_id = $this->session->user_id;
  531. $data_update_approval = array(
  532. 'user_id' => $user_id,
  533. 'note' => $note,
  534. 'submit_date' => date('Y-m-d H:i:s'),
  535. 'aksi' => 'setuju',
  536. 'is_done' => 1,
  537. );
  538. $where_approval = array('level' => $level, 'id_pdln' => $id_pdln, 'is_done' => 0);
  539. $affected_row_u = $this->crud_ajax->update($where_approval, $data_update_approval);
  540. /* Update status in pdln table */
  541. $this->crud_ajax->init('m_pdln', 'id', null);
  542. if (($level_user == LEVEL_ANALIS) || ($level_user == LEVEL_KASUBAG) || ($level_user == LEVEL_KABAG)) {
  543. $data_pdln = array(
  544. 'status' => intval($status) + 1,
  545. 'format_tembusan' => $template_tembusan
  546. );
  547. } else {
  548. $data_pdln = array(
  549. 'status' => intval($status) + 1,
  550. );
  551. }
  552. $where_pdln = array('id_pdln' => $id_pdln);
  553. $affected_row_u = $this->crud_ajax->update($where_pdln, $data_pdln);
  554.  
  555. if ($affected_row_u > 0) {
  556. $data_email = array(
  557. 'to' => $this->session->email,
  558. 'subject' => '[SIMPLE] ',
  559. 'body' => ''
  560. );
  561. //$this->send_email($data_email);
  562. }
  563. }
  564. }
  565.  
  566. public function lanjutketu() {
  567. $response['id_pdln'] = $this->_lanjutketu_validate();
  568. $response['status'] = TRUE;
  569. echo json_encode($response);
  570. }
  571.  
  572. /**
  573. * @method private _validate handle validation data users
  574. * @return json output status on form or modal
  575. */
  576. private function _lanjutketu_validate() {
  577. $data = array();
  578. $data['error_string'] = array();
  579. $data['inputerror'] = array();
  580. $data['status'] = TRUE;
  581. $id_pdln = $this->input->post('id_pdln');
  582. $status = $this->input->post('status');
  583. $level = $this->input->post('level');
  584. $nextlevel = $this->input->post('nextlevel');
  585. $note = $this->input->post('note');
  586. /* Insert New Row To Next Approval */
  587. $this->crud_ajax->init('t_approval_pdln', 'id', null);
  588. $data_approval = array(
  589. 'id_pdln' => $id_pdln,
  590. 'assign_date' => date('Y-m-d H:i:s'),
  591. 'level' => $nextlevel
  592. );
  593.  
  594. $insert_id_u = $this->crud_ajax->save($data_approval);
  595. /* Update Current Data Approval */
  596. $data_update_approval = array(
  597. 'user_id' => $this->session->user_id,
  598. 'submit_date' => date('Y-m-d H:i:s'),
  599. 'note' => $note,
  600. 'aksi' => 'setuju',
  601. 'is_done' => 1,
  602. );
  603. $where_approval = array('level' => $level, 'id_pdln' => $id_pdln, 'is_done' => 0);
  604. $affected_row_u = $this->crud_ajax->update($where_approval, $data_update_approval);
  605. $level_user = $this->db->get_where('m_user', array('UserID' => $this->session->user_id))->row()->level;
  606. $curr_status = $this->db->get_where('m_pdln', array('id_pdln' => $id_pdln))->row()->status;
  607. if ($level_user == LEVEL_SESMEN && $curr_status == 7) {
  608. /* Update status in pdln table */
  609. $this->crud_ajax->init('m_pdln', 'id', null);
  610. $data_pdln = array(
  611. 'status' => 9,
  612. 'penandatangan_persetujuan' => $this->session->user_id
  613. );
  614. $where_pdln = array('id_pdln' => $id_pdln);
  615. $affected_row_u = $this->crud_ajax->update($where_pdln, $data_pdln);
  616. } else {
  617. /* Update status in pdln table */
  618. $this->crud_ajax->init('m_pdln', 'id', null);
  619. $data_pdln = array(
  620. 'status' => 10,
  621. 'penandatangan_persetujuan' => $this->session->user_id
  622. );
  623. $where_pdln = array('id_pdln' => $id_pdln);
  624. $affected_row_u = $this->crud_ajax->update($where_pdln, $data_pdln);
  625. }
  626. return $id_pdln;
  627. }
  628.  
  629. //Kepala biro setuju
  630. public function setuju() {
  631. $this->_setuju_validate();
  632. $response['status'] = TRUE;
  633. echo json_encode($response);
  634. }
  635.  
  636. /**
  637. * @method private _validate handle validation data users
  638. * @return json output status on form or modal
  639. */
  640. private function _setuju_validate() {
  641. $data = array();
  642. $data['error_string'] = array();
  643. $data['inputerror'] = array();
  644. $data['status'] = TRUE;
  645. $id_pdln = $this->input->post('id_pdln');
  646. $status = $this->input->post('status');
  647. $level = $this->input->post('level');
  648. $level_user = $this->db->get_where('m_user', array('UserID' => $this->session->user_id))->row()->level;
  649. $note = $this->input->post('note');
  650. if ($data['status'] === TRUE) {
  651. /* Update Current Data Approval */
  652. $data_update_approval = array(
  653. 'user_id' => $this->session->user_id,
  654. 'submit_date' => date('Y-m-d H:i:s'),
  655. 'note' => $note,
  656. 'aksi' => 'setuju',
  657. 'is_done' => 1,
  658. );
  659. $this->crud_ajax->init('t_approval_pdln', 'id', null);
  660. $where_approval = array('level' => $level, 'id_pdln' => $id_pdln, 'is_done' => 0);
  661. $affected_row_u = $this->crud_ajax->update($where_approval, $data_update_approval);
  662. $this->db->select('m_pdln.id_pdln,m_pdln.id_kegiatan,m_pdln.no_sp,m_pdln.tgl_sp,m_pdln.tgl_surat_usulan_fp,
  663. m_pdln.no_surat_usulan_fp,m_pdln.pejabat_sign_sp,m_pdln.format_tembusan, m_pdln.id_pdln_lama,
  664. m_pdln.jenis_permohonan, m_pdln.path_sp, m_pdln.create_date, m_pdln.update_date');
  665. $this->db->where('m_pdln.id_pdln', $id_pdln);
  666. $data_pdln = $this->db->get('m_pdln')->row();
  667. // Get data for Update Perpanjang/Ralat/Pembatalan
  668. $id_pdln_lama = $data_pdln->id_pdln_lama;
  669. $jenis_permohonan = $data_pdln->jenis_permohonan;
  670. $jenis_kegiatan = $this->db->get_where('m_kegiatan', array('ID' => $data_pdln->id_kegiatan))->row()->JenisKegiatan;
  671. /* Update status in pdln table */
  672. $this->crud_ajax->init('m_pdln', 'id', null);
  673. $data_pdln_update = array(
  674. 'no_sp' => $this->generate_number($jenis_kegiatan),
  675. 'penandatangan_persetujuan' => $this->session->user_id,
  676. 'tgl_sp' => strtotime(date('Y-m-d H:i:s')),
  677. 'status' => 11,
  678. 'barcode' => mt_rand(100000, 999999),
  679. );
  680. $where_pdln = array('id_pdln' => $id_pdln);
  681. $affected_row_u = $this->crud_ajax->update($where_pdln, $data_pdln_update);
  682. if ($data_pdln->jenis_permohonan == '20') {
  683. $sp_file = $this->print_perpanjangan_final($id_pdln, '');
  684. } elseif ($data_pdln->jenis_permohonan == '30') {
  685. $sp_file = $this->print_ralat_final($id_pdln, '');
  686. } elseif ($data_pdln->jenis_permohonan == '40') {
  687. $sp_file = $this->print_pembatalan_final($id_pdln, '');
  688. } else {
  689. $sp_file = $this->cetak_permohonan_final($id_pdln, '');
  690. }
  691. //update sp file
  692. $this->crud_ajax->init('m_pdln', 'id', null);
  693. $data_pdln_update = array(
  694. 'path_sp' => $sp_file,
  695. );
  696. $data_pdln->path_sp = $sp_file;
  697. $where_pdln = array('id_pdln' => $id_pdln);
  698. $affected_row_u = $this->crud_ajax->update($where_pdln, $data_pdln_update);
  699. if (isset($sp_file) && $sp_file != null) {
  700. $esign_ok = $this->_callEsign($level_user, $data_pdln);
  701. if ($esign_ok) {
  702. $url_playstore = $this->config->item('url_playstore', 'pdln');
  703. $url_appstore = $this->config->item('url_appstore', 'pdln');
  704. $this->db->select('
  705. b.nama AS nama_pemohon,
  706. b.email AS email,
  707. a.negara_tujuan AS nama_negara,
  708. c.NamaKegiatan AS nama_kegiatan,
  709. a.start_date_keg AS tgl_mulai,
  710. a.end_date_keg AS tgl_selesai,
  711. d.no_register AS no_reg');
  712. $this->db->from('view_log_peserta a');
  713. $this->db->join('m_pemohon b', 'a.id_pemohon=b.id_pemohon');
  714. $this->db->join('m_kegiatan c', 'c.id=a.id_kegiatan');
  715. $this->db->join('m_pdln d', 'd.id_pdln=a.id_pdln');
  716. $this->db->where('a.id_pdln', $id_pdln);
  717. $query = $this->db->get();
  718. foreach ($query->result() as $d) {
  719. $body_setuju = "
  720. <!DOCTYPE html>
  721. <html>
  722. <head>
  723. <title>Persetujuan Izin Perjalanan Dinas Luar Negeri (PDLN)</title>
  724. </head>
  725. <body>
  726. <p>Yth. Bapak/Ibu {$d->nama_pemohon}</p>
  727. <p>Dengan hormat kami sampaikan bahwa permohonan PDLN Bapak/Ibu untuk
  728. melakukan perjalanan dinas ke n{$d->nama_negara} dalam rangka {$d->nama_kegiatan}
  729. mulai tanggal ".date('d-m-Y',$d->tgl_mulai)." s.d. ".date('d-m-Y',$d->tgl_selesai)." dengan nomor register {$d->no_reg},
  730. telah mendapat persetujuan dari Kementerian Sekretariat Negara.</p>
  731. <p>
  732. Bapak/Ibu dapat mengunduh Surat Persetujuan dan menyampaikan laporan hasil penugasan PDLN tersebut
  733. melalui aplikasi SIMPEL berbasis Android/iOS yang dapat didownload melalui link:
  734. <ul>
  735. <li>Aplikasi Android : <a href='{$url_playstore}' style='color:#33f;text-decoration:underline;'>{$url_playstore}</a></li>
  736. <li>Aplikasi iOS : <a href='{$url_appstore}' style='color:#33f;text-decoration:underline;'>{$url_appstore}</a><li>
  737. </ul>
  738. </p>
  739. <p>Informasi lebih lanjut dapat menghubungi administrator SIMPEL melalui email simple@setneg.go.id</p>
  740. <p>&nbsp;</p>
  741. <p>Hormat kami,<br>
  742. Administrator SIMPEL<br>
  743. Biro KTLN, Kementerian Sekretariat Negara</p>
  744. </body>
  745. </html>
  746. ";
  747. $data_email = array(
  748. 'to' => $d->email,
  749. 'subject' => 'Persetujuan Izin Perjalanan Dinas Luar Negeri (PDLN)',
  750. 'body' => $body_setuju
  751. );
  752. $is_send = $this->send_email($data_email);
  753. }
  754. }
  755. }
  756. // Update Status SP LAMA menjadi diperpanjang/diralat/dibatalkan
  757. switch ($jenis_permohonan) {
  758. case "20": // Perpanjangan
  759. $status_baru = '14'; // Perpanjangan
  760. $this->crud_ajax->init('m_pdln', 'id', null);
  761. $data_pdln_lama = array(
  762. 'status' => $status_baru,
  763. );
  764. $where_pdln_lama = array('id_pdln' => $id_pdln_lama);
  765. $affected_row_u = $this->crud_ajax->update($where_pdln_lama, $data_pdln_lama);
  766. break;
  767. case "30": // Ralat
  768. $status_baru = '13'; // Ralat
  769. $this->crud_ajax->init('m_pdln', 'id', null);
  770. $data_pdln_lama = array(
  771. 'status' => $status_baru,
  772. );
  773. $where_pdln_lama = array('id_pdln' => $id_pdln_lama);
  774. $affected_row_u = $this->crud_ajax->update($where_pdln_lama, $data_pdln_lama);
  775. break;
  776. case "40": // Pembatalan
  777. $status_baru = '15'; // Pembatalan
  778. $this->crud_ajax->init('m_pdln', 'id', null);
  779. $data_pdln_lama = array(
  780. 'status' => $status_baru,
  781. );
  782. $where_pdln_lama = array('id_pdln' => $id_pdln_lama);
  783. $affected_row_u = $this->crud_ajax->update($where_pdln_lama, $data_pdln_lama);
  784. break;
  785. }
  786. }
  787. }
  788.  
  789. private function _callEsign($level, $data_pdln) {
  790.  
  791. // ESIGN INTEGRATION
  792. $id_pdln = $data_pdln->id_pdln;
  793. $esignProcess = FALSE;
  794. $pathFile = '';
  795. $authResponse = NULL;
  796. $signResponse = NULL;
  797. $result = false;
  798. if ($level == LEVEL_KARO || allow_task_to_plh(LEVEL_KARO) || $level == LEVEL_SESMEN || allow_task_to_plh(LEVEL_SESMEN) || $level == LEVEL_TUSESMEN || $level == LEVEL_MENSESNEG || allow_task_to_plh(LEVEL_MENSESNEG) || $level == LEVEL_TUMENSESNEG) {
  799. // $matriks_level == LEVEL_ESELON_II
  800. // get id level pejabat
  801. // check with matrix level / klaster r_level_pejabat
  802. $esignProcess = TRUE;
  803. $filename = $data_pdln->path_sp;
  804. $this->config->load('pdln', TRUE);
  805. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  806. $update_date = $data_pdln->update_date;
  807. $create_date = $data_pdln->create_date;
  808. $month = month(date('n', $create_date));
  809. $year = date('Y', $create_date);
  810. $additional_path = $year . '/' . $month . '/pdln/' . $id_pdln . "/";
  811. $targetPath = $base_path . $additional_path;
  812. $pathFile = "{$targetPath}{$filename}";
  813. }
  814.  
  815. if ($esignProcess && file_exists($pathFile)) {
  816. $this->config->load('esign', TRUE);
  817. // print_r($this->config->item('esign'));
  818. $this->load->library('Esign', $this->config->item('esign'));
  819. $clientId = $this->config->item('clientId', 'esign');
  820. $clientSecret = $this->config->item('clientSecret', 'esign');
  821. $username = $this->config->item('userIdMenteri', 'esign');
  822. $password = $this->config->item('passwordMenteri', 'esign');
  823. $pin = $this->config->item('pinMenteri', 'esign');
  824. $authEntity = new AuthRequestEntity();
  825. $authEntity->client_id = $clientId;
  826. $authEntity->client_secret = $clientSecret;
  827. $authEntity->grant_type = Esign::GRANT_TYPE_PASSWORD;
  828. $authEntity->username = $username;
  829. $authEntity->password = $password;
  830. $authResponse = json_decode($this->esign->GetUserAccessToken($authEntity), TRUE);
  831. // print_r($authEntity);
  832. // print_r($authResponse);
  833. }
  834. if (array_key_exists('access_token', $authResponse)) {
  835. $accessToken = $authResponse['access_token'];
  836. $signEntity = new SignRequestEntity();
  837. $signEntity->passphrase = $pin;
  838. $signEntity->properties = 'default';
  839. $signEntity->link = 'https://kemensetneg.go.id';
  840. $boundary = uniqid();
  841. $delimiter = '-------------' . $boundary;
  842. $files['file'] = file_get_contents($pathFile);
  843. $postData = CurlHelper::BuildDataFiles($boundary, array(), $files);
  844. $signEntity->file = $postData;
  845. $signResponse = json_decode($this->esign->SignDocument($signEntity, $accessToken, $delimiter), TRUE);
  846. }
  847. // if signed document success, put the id_signed on the table
  848. if (is_array($signResponse) && array_key_exists('id_signed', $signResponse)) {
  849. $this->db->set('id_signed', $signResponse['id_signed']);
  850. $this->db->where('id_pdln', $id_pdln);
  851. $this->db->update("m_pdln");
  852. $result = true;
  853. }
  854. return $result;
  855. }
  856.  
  857. public function tu_setuju() {
  858. $this->_tu_setuju_validate();
  859. $response['status'] = TRUE;
  860.  
  861. echo json_encode($response);
  862. }
  863.  
  864. /**
  865. * @method private _validate handle validation data users
  866. * @return json output status on form or modal
  867. */
  868. private function _tu_setuju_validate() {
  869. $data = array();
  870. $data['error_string'] = array();
  871. $data['inputerror'] = array();
  872. $data['status'] = TRUE;
  873. $id_pdln = $this->input->post('id_pdln');
  874. $no_sp = $this->input->post('no_sp');
  875. $tanggal_surat = $this->input->post('tanggal_surat');
  876. $level = $this->input->post('level');
  877. $note = $this->input->post('note');
  878. $level_user = $this->db->get_where('m_user', array('UserID' => $this->session->user_id))->row()->level;
  879. // if ($no_sp === "") {
  880. // $data['status'] = FALSE;
  881. // $data['message'] = "Nomor Surat Harus Di isi";
  882. // echo json_encode($data);
  883. // exit;
  884. // }
  885. // if ($tanggal_surat === "") {
  886. // $data['status'] = FALSE;
  887. // $data['message'] = "Tanggal Surat Harus Di isi";
  888. // echo json_encode($data);
  889. // exit;
  890. // }
  891. if ($data['status'] === TRUE) {
  892. $number_format_sp = '';
  893. $pdln_surat = $this->db->get_where('m_pdln', array('id_pdln' => $id_pdln))->row();
  894. if ($pdln_surat->jenis_permohonan == 10) {
  895. $str_hal = 'Persetujuan Perjalanan Dinas Luar Negeri';
  896. } else if ($pdln_surat->jenis_permohonan == 20) {
  897. $str_hal = 'Persetujuan Perpanjangan Perjalanan Dinas Luar Negeri';
  898. } else if ($pdln_surat->jenis_permohonan == 30) {
  899. $str_hal = 'Persetujuan Ralat Perjalanan Dinas Luar Negeri';
  900. } else if ($pdln_surat->jenis_permohonan == 40) {
  901. $str_hal = 'Persetujuan Pembatalan Perjalanan Dinas Luar Negeri';
  902. }
  903. $this->load->library('spde2');
  904. $this->_ci = & get_instance();
  905. $this->_ci->load->config('pdln', TRUE);
  906. $spde2_config = $this->_ci->config->item('spde2', 'pdln');
  907.  
  908. $token['client_id'] = 'spdesimpel_id';
  909. $token['client_secret'] = 'spdesimpel_secret';
  910. $token['redirect_uri'] = 'http://localhost/spde2api';
  911. $token['grant_type'] = 'client_credentials';
  912.  
  913. $respon_token = json_decode($this->spde2->postRequest($spde2_config['url_spde_token'], $token, $refer = "", $timeout = 3000, $header = []));
  914. if (!empty($respon_token->access_token) && $respon_token->access_token != 'undefined') {
  915. $header_lastnum = array(
  916. 'Content-type: application/x-www-form-urlencoded',
  917. 'Authorization: ' . $respon_token->token_type . ' ' . $respon_token->access_token,
  918. );
  919.  
  920. $data = '';
  921. $repon_last_number = json_decode($this->spde2->postRequest($spde2_config['url_spde_last_number'], $data, $refer = "", $timeout = 3000, $header_lastnum));
  922. if (!empty($repon_last_number->data)) {
  923. $letter_date = date("Y-m-d");
  924. $letter_input_date = date("Y-m-d H:i:s");
  925. $letter_to = $pdln_surat->pejabat_sign_sp;
  926. $letter_perihal = $pdln_surat->jenis_permohonan;
  927. $letter_lampiran = 1;
  928. $data_nmr_surat = 'letter_penyampaian=' . rawurlencode('1')
  929. . '&letter_date=' . rawurlencode($letter_date)
  930. . '&letter_input_date=' . rawurlencode($letter_input_date)
  931. . '&letter_number=' . rawurlencode($repon_last_number->data)
  932. . '&letter_to=' . rawurlencode($pdln_surat->pejabat_sign_sp)
  933. . '&letter_perihal=' . rawurlencode($str_hal)
  934. . '&letter_lampiran=' . rawurlencode(1)
  935. . '&letter_pengamanan=' . rawurlencode(1);
  936. $checkout_last_number = json_decode($this->spde2->postRequest($spde2_config['url_spde_finish'], $data_nmr_surat, $refer = "", $timeout = 3000, $header_lastnum));
  937. if ($checkout_last_number->status > 0) {
  938. $number_format_sp = $checkout_last_number->data->letter_number;
  939. }
  940. } else {
  941. $data['status'] = FALSE;
  942. $data['message'] = "Gagal menyimpan Nomor Surat ...";
  943. echo json_encode($data);
  944. exit();
  945. }
  946. } else {
  947. $data['status'] = FALSE;
  948. $data['message'] = "Gagal mendapatkan Nomor Surat SPDE2 ...";
  949.  
  950. echo json_encode($data);
  951. exit;
  952. }
  953. // ====================SPDE2==========================
  954. if (!empty($number_format_sp)) {
  955.  
  956. if ($pdln_surat->jenis_permohonan == '20') {
  957. $sp_file = $this->print_perpanjangan_final($id_pdln, '');
  958. } elseif ($pdln_surat->jenis_permohonan == '30') {
  959. $sp_file = $this->print_ralat_final($id_pdln, '');
  960. } elseif ($pdln_surat->jenis_permohonan == '40') {
  961. $sp_file = $this->print_pembatalan_final($id_pdln, '');
  962. } else {
  963. $sp_file = $this->cetak_permohonan_final($id_pdln, '');
  964. }
  965. /* Update Current Data Approval */
  966. $data_update_approval = array(
  967. 'user_id' => $this->session->user_id,
  968. 'note' => $note,
  969. 'submit_date' => date('Y-m-d H:i:s'),
  970. 'aksi' => 'setuju',
  971. 'is_done' => 1,
  972. );
  973. $this->crud_ajax->init('t_approval_pdln', 'id', null);
  974. $where_approval = array('level' => $level, 'id_pdln' => $id_pdln, 'is_done' => 0);
  975. $affected_row_u = $this->crud_ajax->update($where_approval, $data_update_approval);
  976. /* Update status in pdln table */
  977. $this->crud_ajax->init('m_pdln', 'id', null);
  978. $data_pdln = array(
  979. 'no_sp' => $number_format_sp,
  980. 'tgl_sp' => strtotime(date('Y-m-d')),
  981. 'status' => 11,
  982. 'path_sp' => $sp_file
  983. );
  984. $where_pdln = array('id_pdln' => $id_pdln);
  985. $affected_row_u = $this->crud_ajax->update($where_pdln, $data_pdln);
  986. if (isset($sp_file) && $sp_file != null) {
  987. $this->db->select(' m_pdln.id_pdln,m_pdln.id_kegiatan,m_pdln.no_sp,m_pdln.tgl_sp,
  988. m_pdln.tgl_surat_usulan_fp,m_pdln.no_surat_usulan_fp,m_pdln.pejabat_sign_sp,
  989. m_pdln.format_tembusan, m_pdln.id_pdln_lama, m_pdln.jenis_permohonan,
  990. m_pdln.path_sp, m_pdln.create_date, m_pdln.update_date');
  991. $this->db->where('m_pdln.id_pdln', $id_pdln);
  992. $data_pdln = $this->db->get('m_pdln')->row();
  993.  
  994. $esign_ok = $this->_callEsign($level_user, $data_pdln);
  995. if ($esign_ok) {
  996. $url_playstore = $this->config->item('url_playstore', 'pdln');
  997. $url_appstore = $this->config->item('url_appstore', 'pdln');
  998. $this->db->select('
  999. b.nama AS nama_pemohon,
  1000. b.email AS email,
  1001. a.negara_tujuan AS nama_negara,
  1002. c.NamaKegiatan AS nama_kegiatan,
  1003. a.start_date_keg AS tgl_mulai,
  1004. a.end_date_keg AS tgl_selesai,
  1005. d.no_register AS no_reg');
  1006. $this->db->from('view_log_peserta a');
  1007. $this->db->join('m_pemohon b', 'a.id_pemohon=b.id_pemohon');
  1008. $this->db->join('m_kegiatan c', 'c.id=a.id_kegiatan');
  1009. $this->db->join('m_pdln d', 'd.id_pdln=a.id_pdln');
  1010. $this->db->where('a.id_pdln', $id_pdln);
  1011. $query = $this->db->get();
  1012. foreach ($query->result() as $d) {
  1013. $body_setuju = "
  1014. <!DOCTYPE html>
  1015. <html>
  1016. <head>
  1017. <title>Persetujuan Izin Perjalanan Dinas Luar Negeri (PDLN)</title>
  1018. </head>
  1019. <body>
  1020. <p>Yth. Bapak/Ibu {$d->nama_pemohon}</p>
  1021. <p>Dengan hormat kami sampaikan bahwa permohonan PDLN Bapak/Ibu untuk
  1022. melakukan perjalanan dinas ke n{$d->nama_negara} dalam rangka {$d->nama_kegiatan}
  1023. mulai tanggal ".date('d-m-Y',$d->tgl_mulai)." s.d. ".date('d-m-Y',$d->tgl_selesai)." dengan nomor register {$d->no_reg},
  1024. telah mendapat persetujuan dari Kementerian Sekretariat Negara.</p>
  1025. <p>
  1026. Bapak/Ibu dapat mengunduh Surat Persetujuan dan menyampaikan laporan hasil penugasan PDLN tersebut
  1027. melalui aplikasi SIMPEL berbasis Android/iOS yang dapat didownload melalui link:
  1028. <ul>
  1029. <li>Aplikasi Android : <a href='{$url_playstore}' style='color:#33f;text-decoration:underline;'>{$url_playstore}</a></li>
  1030. <li>Aplikasi iOS : <a href='{$url_appstore}' style='color:#33f;text-decoration:underline;'>{$url_appstore}</a><li>
  1031. </ul>
  1032. </p>
  1033. <p>Informasi lebih lanjut dapat menghubungi administrator SIMPEL melalui email simple@setneg.go.id</p>
  1034. <p>&nbsp;</p>
  1035. <p>Hormat kami,<br>
  1036. Administrator SIMPEL<br>
  1037. Biro KTLN, Kementerian Sekretariat Negara</p>
  1038. </body>
  1039. </html>
  1040. ";
  1041. $data_email = array(
  1042. 'to' => $d->email,
  1043. 'subject' => 'Persetujuan Izin Perjalanan Dinas Luar Negeri (PDLN)',
  1044. 'body' => $body_setuju
  1045. );
  1046. $is_send = $this->send_email($data_email);
  1047. }
  1048. }
  1049. }
  1050. } // if number spde ready
  1051. }
  1052. }
  1053.  
  1054. public function tolak() {
  1055. $this->_tolak_validate();
  1056. $response['status'] = TRUE;
  1057. echo json_encode($response);
  1058. }
  1059.  
  1060. /**
  1061. * @method private _validate handle validation data users
  1062. * @return json output status on form or modal
  1063. */
  1064. private function _tolak_validate() {
  1065. $data = array();
  1066. $data['error_string'] = array();
  1067. $data['inputerror'] = array();
  1068. $data['status'] = TRUE;
  1069. $id_pdln = $this->input->post('id_pdln');
  1070. $status = $this->input->post('status');
  1071. $level = $this->input->post('level');
  1072. $note = $this->input->post('note');
  1073. $level_user = $this->db->get_where('m_user', array('UserID' => $this->session->user_id))->row()->level;
  1074. if ($note === "") {
  1075. $data['status'] = FALSE;
  1076. $data['message'] = "Silahkan berikan catatan terlebih dahulu sebelum memberikan penolakan";
  1077. echo json_encode($data);
  1078. exit;
  1079. }
  1080. if ($data['status'] === TRUE) {
  1081. /* Insert New Row To Next Approval */
  1082. $this->crud_ajax->init('t_approval_pdln', 'id', null);
  1083. $data_approval = array(
  1084. 'id_pdln' => $id_pdln,
  1085. 'assign_date' => date('Y-m-d H:i:s'),
  1086. 'level' => 'Focalpoint'
  1087. );
  1088. $insert_id_u = $this->crud_ajax->save($data_approval);
  1089. /* Update Current Data Approval */
  1090. $data_update_approval = array(
  1091. 'user_id' => $this->session->user_id,
  1092. 'note' => $note,
  1093. 'submit_date' => date('Y-m-d H:i:s'),
  1094. 'aksi' => 'tolak',
  1095. 'is_done' => 1
  1096. );
  1097. $where_approval = array('level' => $level, 'id_pdln' => $id_pdln, 'is_done' => 0);
  1098. $affected_row_u = $this->crud_ajax->update($where_approval, $data_update_approval);
  1099. /* Update status in pdln table */
  1100. $this->crud_ajax->init('m_pdln', 'id', null);
  1101. $data_pdln = array(
  1102. 'status' => 12,
  1103. );
  1104. $where_pdln = array('id_pdln' => $id_pdln);
  1105. $affected_row_u = $this->crud_ajax->update($where_pdln, $data_pdln);
  1106. if ($affected_row_u > 0) {
  1107. $this->db->select('
  1108. b.nama AS nama_pemohon,
  1109. b.email AS email,
  1110. a.negara_tujuan AS nama_negara,
  1111. c.NamaKegiatan AS nama_kegiatan,
  1112. a.start_date_keg AS tgl_mulai,
  1113. a.end_date_keg AS tgl_selesai,
  1114. d.no_register AS no_reg');
  1115. $this->db->from('view_log_peserta a');
  1116. $this->db->join('m_pemohon b', 'a.id_pemohon=b.id_pemohon');
  1117. $this->db->join('m_kegiatan c', 'c.id=a.id_kegiatan');
  1118. $this->db->join('m_pdln d', 'd.id_pdln=a.id_pdln');
  1119. $this->db->where('a.id_pdln', $id_pdln);
  1120. $query = $this->db->get();
  1121. foreach ($query->result() as $d) {
  1122. $body_tolak = "
  1123. <!DOCTYPE html>
  1124. <html>
  1125. <head>
  1126. <title>Pengembalian Berkas Permohonan Izin Perjalanan Dinas Luar Negeri (PDLN)</title>
  1127. </head>
  1128. <body>
  1129. <p>Yth. Bapak/Ibu {$d->nama_pemohon}</p>
  1130. <p>Dengan hormat kami sampaikan bahwa permohonan izin PDLN Bapak/Ibu untuk
  1131. melakukan perjalanan dinas ke {$d->nama_negara} dalam rangka {$d->nama_kegiatan}
  1132. mulai tanggal ".date('d-m-Y',$d->tgl_mulai)." sampai dengan ".date('d-m-Y',$d->tgl_selesai)." dengan nomor register {$d->no_reg},
  1133. telah dikembalikan kepada instansi pemohon dengan pertimbangan \"{$note}\".</p>
  1134. <p>Tindak lanjut atas berkas permohonan PDLN yang dikembalikan tersebut dapat dilakukan dengan
  1135. menghubungi Operator Focal Point SIMPEL pada masing-masing kementerian/lembaga.</p>
  1136. <p>Informasi lebih lanjut dapat menghubungi administrator SIMPEL melalui email simple@setneg.go.id</p>
  1137. <p>&nbsp;</p>
  1138. <p>Hormat kami,<br>
  1139. Administrator SIMPEL<br>
  1140. Biro KTLN, Kementerian Sekretariat Negara</p>
  1141. </body>
  1142. </html>
  1143. ";
  1144. $data_email = array(
  1145. 'to' => $d->email,
  1146. 'subject' => 'Pengembalian Berkas Permohonan Izin Perjalanan Dinas Luar Negeri (PDLN)',
  1147. 'body' => $body_tolak
  1148. );
  1149. $is_send = $this->send_email($data_email);
  1150. }
  1151. }
  1152. }
  1153. }
  1154.  
  1155. public function generate_number($JenisKegiatan) {
  1156. $penomoran = $this->db->get_where('t_suratkeluar_increment', array('Status' => 1))->row();
  1157. $jns_kegiatan = $this->db->get_where('r_jenis_kegiatan', array('ID' => $JenisKegiatan))->row();
  1158. $years_update = date("Y", strtotime($penomoran->lastdate));
  1159. $years_now = date('Y');
  1160. if ($years_update < $years_now) {
  1161. $number = intval(1);
  1162. } else {
  1163. $number = intval($penomoran->Nomor) + 1;
  1164. }
  1165. $number_str = (string) $number;
  1166. // for format length nomor surat is 8 digit,make the zero number show in fix_number var
  1167. for ($x = strlen($number_str); $x < 8; $x++) {
  1168. $number_str = '0' . $number_str;
  1169. }
  1170. $fix_number = $penomoran->InitialCode . "-" . $number_str . "/" . $penomoran->Formatting . "/" . $jns_kegiatan->Kodifikasi . "/" . date('m') . "/" . date('Y');
  1171. $data = array('Nomor' => $number);
  1172. $this->db->where('Status', 1);
  1173. $this->db->update('t_suratkeluar_increment', $data);
  1174. return $fix_number;
  1175. }
  1176.  
  1177. public function get_parent_id() {
  1178. $this->db->where('UserID', $this->session->userdata('user_id'));
  1179. $parent = $this->db->get('m_user')->row()->unitkerja;
  1180. return $parent; //unitkerja user fp sbg parent
  1181. }
  1182.  
  1183. public function get_list_pemohon() {
  1184. $this->db->where('m_unit.Parent', $this->get_parent_id());
  1185. $this->db->where('m_unit.Status', '1');
  1186. $this->db->where_in('m_unit.Group', array(1, 2));
  1187. $this->db->from('m_unit_kerja_institusi as m_unit');
  1188. $this->db->join('m_user as mu', 'm_unit.ID = mu.unitkerja', 'left');
  1189. $query = $this->db->get();
  1190. if ($query->num_rows() > 0)
  1191. return $query->result();
  1192. return FALSE;
  1193. }
  1194.  
  1195. public function get_kegiatan() {
  1196. $id_jenis = $this->input->post('id_jenis');
  1197. $where = array(
  1198. 'JenisKegiatan' => $id_jenis,
  1199. 'Status' => '1'
  1200. );
  1201. $this->crud_ajax->init('m_kegiatan', 'ID', null);
  1202. $this->crud_ajax->setExtraWhere($where);
  1203. $query = $this->crud_ajax->get_data();
  1204. if (count($query) > 0) {
  1205. foreach ($query as $row) {
  1206. echo '<option value="">--Pilih--</option>';
  1207. echo '<option value="' . $row->ID . '">' . trim($row->NamaKegiatan) . '</option>';
  1208. }
  1209. } else
  1210. echo '<option value="">--Kegiatan Tidak Tersedia--</option>';
  1211. }
  1212.  
  1213. public function get_detail_keg() {
  1214. $id_kegiatan = $this->input->post('id_keg');
  1215. $data = array();
  1216. $this->db->from('view_kegiatan');
  1217. $this->db->where('id_kegiatan', $id_kegiatan);
  1218. $result = $this->db->get();
  1219. if ($result->num_rows() > 0) {
  1220. $data['status'] = TRUE;
  1221. foreach ($result->result() as $row) {
  1222. $data['penyelenggara'] = $row->penyelenggara;
  1223. $data['negara'] = $row->nmnegara;
  1224. $data['kota'] = $row->nmkota;
  1225. $data['tgl_mulai_kegiatan'] = day($row->tgl_mulai_kegiatan);
  1226. $data['tgl_akhir_kegiatan'] = day($row->tgl_akhir_kegiatan);
  1227. }
  1228. $data['status'] = TRUE;
  1229. } else
  1230. $data['status'] = FALSE;
  1231. echo json_encode($data, JSON_PRETTY_PRINT);
  1232. }
  1233.  
  1234. public function progress() {
  1235. $data['theme'] = 'pdln';
  1236. $data['page'] = 'v_progress';
  1237. $data['title'] = 'Permohonan Dalam Proses';
  1238. $data['title_page'] = 'Permohonan Dalam Proses';
  1239. $data['breadcrumb'] = 'Permohonan Dalam Proses';
  1240. page_render($data);
  1241. }
  1242.  
  1243. public function progress_list() {
  1244. $id_user = $this->session->user_id;
  1245. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  1246. $where = "";
  1247. $handle_negara = $this->get_handle_negara($id_user);
  1248. $this->crud_ajax->init('m_pdln', 'id_pdln', array('m_pdln.tgl_register' => 'asc'));
  1249. if ($level == LEVEL_ANALIS) {
  1250. $where = '3';
  1251. // $this->db->where('m_pdln.status !=', "3");
  1252. $this->db->where_in('negara', $handle_negara);
  1253. } else
  1254. if ($level == LEVEL_KASUBAG) {
  1255. $where = '4';
  1256. // $this->db->where('m_pdln.status !=', "4");
  1257. $this->db->where_in('negara', $handle_negara);
  1258. } else
  1259. if ($level == LEVEL_KABAG) {
  1260. $where = '5';
  1261. // $this->db->where('m_pdln.status !=', "5");
  1262. } else
  1263. if ($level == LEVEL_KARO) {
  1264. $where = '6';
  1265. // $this->db->where('m_pdln.status !=', "6");
  1266. } else
  1267. if ($level == LEVEL_SESMEN) {
  1268. $where = '7';
  1269. // $this->db->where('m_pdln.status !=', "7");
  1270. } else
  1271. if ($level == LEVEL_TUSESMEN) {
  1272. $where = '8';
  1273. // $this->db->where('m_pdln.status !=', "8");
  1274. } else
  1275. if ($level == LEVEL_MENSESNEG) {
  1276. $where = '9';
  1277. // $this->db->where('m_pdln.status !=', "9");
  1278. } else
  1279. if ($level == LEVEL_TUMENSESNEG) {
  1280. $where = '10';
  1281. // $this->db->where('m_pdln.status !=', "10");
  1282. } else {
  1283. $this->db->where_not_in('m_pdln.status', array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'));
  1284. }
  1285. $where_tambahan = array('m_pdln.status !=' => $where);
  1286.  
  1287. $this->crud_ajax->set_select_field('m_pdln.id_pdln,m_pdln.no_register,m_pdln.tgl_register,m_pdln.status,
  1288. m_pdln.no_surat_usulan_fp,m_pdln.create_date,m_kegiatan.NamaKegiatan,
  1289. unit_kerja.Name as unit_pemohon,unit_kerja2.Name as unit_fp,m_pdln.jenis_permohonan');
  1290. $join = array(
  1291. 'm_user as user1' => array('user1.UserID = m_pdln.unit_pemohon', 'left'),
  1292. 'm_unit_kerja_institusi as unit_kerja' => array('unit_kerja.ID = user1.unitkerja', 'left'),
  1293. 'm_kegiatan' => array('m_kegiatan.ID = m_pdln.id_kegiatan', 'left'),
  1294. 'm_user as user2' => array('user2.UserID = m_pdln.unit_fp', 'left'),
  1295. 'm_unit_kerja_institusi as unit_kerja2' => array('unit_kerja2.ID = user2.unitkerja', 'left')
  1296. );
  1297.  
  1298. $this->crud_ajax->setExtraWhere($where_tambahan);
  1299.  
  1300. $this->crud_ajax->setJoinField($join);
  1301. $list = $this->crud_ajax->get_datatables();
  1302. $data = array();
  1303. if (isset($_POST['start'])) {
  1304. $no = $_POST['start'];
  1305. } else {
  1306. $no = 0;
  1307. }
  1308. foreach ($list as $pdln) {
  1309. $no++;
  1310. $row = array();
  1311. $row[] = $pdln->id_pdln;
  1312. $row[] = str_pad($pdln->no_register, 8, '0', STR_PAD_LEFT);
  1313. $row[] = date("d/m/Y", ($pdln->tgl_register));
  1314. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/edit_task/' . $pdln->id_pdln . '"><button class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> View</button></a>';
  1315. $row[] = $pdln->no_surat_usulan_fp;
  1316. $row[] = $pdln->unit_pemohon;
  1317. $row[] = $pdln->unit_fp;
  1318. $row[] = '<span class="label label-' . setLabel($pdln->jenis_permohonan) . '">' . setJenisPermohonan($pdln->jenis_permohonan) . '</span>';
  1319. $row[] = $pdln->NamaKegiatan;
  1320. $row[] = '<span class="label label-danger">' . setStatus($pdln->status) . '</span>';
  1321.  
  1322. $row[] = $pdln->tgl_register;
  1323. $data[] = $row;
  1324. }
  1325. $output = array(
  1326. "draw" => (isset($_POST['draw']) ? $_POST['draw'] : null),
  1327. "recordsTotal" => $this->crud_ajax->count_all(),
  1328. "recordsFiltered" => $this->crud_ajax->count_filtered(),
  1329. "data" => $data,
  1330. );
  1331. echo json_encode($output);
  1332. }
  1333.  
  1334. public function retur() {
  1335. $data['theme'] = 'pdln';
  1336. $data['page'] = 'v_retur';
  1337. $data['title'] = 'Permohonan Dikembalikan';
  1338. $data['title_page'] = 'Permohonan Dikembalikan';
  1339. $data['breadcrumb'] = 'Permohonan Dikembalikan';
  1340. page_render($data);
  1341. }
  1342.  
  1343. public function retur_list() {
  1344. $id_user = $this->session->user_id;
  1345. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  1346. $where = "";
  1347. $handle_negara = $this->get_handle_negara($id_user);
  1348. $this->crud_ajax->init('m_pdln', 'id_pdln', array('m_pdln.tgl_register' => 'asc'));
  1349. if ($level == LEVEL_ANALIS || $level == LEVEL_KASUBAG) {
  1350. $this->db->where_in('negara', $handle_negara);
  1351. $where = array('m_pdln.status' => '12');
  1352. } else if ($level == LEVEL_KABAG || $level == LEVEL_KARO || $level == LEVEL_SESMEN || $level == LEVEL_TUSESMEN || $level == LEVEL_MENSESNEG || $level == LEVEL_TUMENSESNEG) {
  1353. $where = array('m_pdln.status' => '12');
  1354. } else {
  1355. $where = array('m_pdln.status' => 'not defined');
  1356. }
  1357. $this->crud_ajax->setExtraWhere($where);
  1358. $this->crud_ajax->set_select_field('m_pdln.id_pdln,m_pdln.no_register,m_pdln.tgl_register,m_pdln.status,
  1359. m_pdln.no_surat_usulan_fp,m_pdln.create_date,m_kegiatan.NamaKegiatan,
  1360. unit_kerja.Name as unit_pemohon,unit_kerja2.Name as unit_fp,m_pdln.jenis_permohonan');
  1361. $join = array(
  1362. 'm_user as user1' => array('user1.UserID = m_pdln.unit_pemohon', 'left'),
  1363. 'm_unit_kerja_institusi as unit_kerja' => array('unit_kerja.ID = user1.unitkerja', 'left'),
  1364. 'm_kegiatan' => array('m_kegiatan.ID = m_pdln.id_kegiatan', 'left'),
  1365. 'm_user as user2' => array('user2.UserID = m_pdln.unit_fp', 'left'),
  1366. 'm_unit_kerja_institusi as unit_kerja2' => array('unit_kerja2.ID = user2.unitkerja', 'left')
  1367. );
  1368. $this->crud_ajax->setJoinField($join);
  1369. $list = $this->crud_ajax->get_datatables();
  1370. $data = array();
  1371. $no = (isset($_POST['start'])) ? $_POST['start'] : 0;
  1372. foreach ($list as $pdln) {
  1373. $no++;
  1374. $row = array();
  1375. $row[] = $pdln->id_pdln;
  1376. $row[] = str_pad($pdln->no_register, 8, '0', STR_PAD_LEFT);
  1377. $row[] = date("d/m/Y", ($pdln->tgl_register));
  1378. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/edit_task/' . $pdln->id_pdln . '"><button class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> View</button></a>';
  1379. $row[] = $pdln->no_surat_usulan_fp;
  1380. $row[] = $pdln->unit_pemohon;
  1381. $row[] = $pdln->unit_fp;
  1382. $row[] = '<span class="label label-' . setLabel($pdln->jenis_permohonan) . '">' . setJenisPermohonan($pdln->jenis_permohonan) . '</span>';
  1383. $row[] = $pdln->NamaKegiatan;
  1384. $row[] = '<span class="label label-info">' . setStatus($pdln->status) . '</span>';
  1385. $row[] = $pdln->tgl_register;
  1386. $data[] = $row;
  1387. }
  1388. $output = array(
  1389. "draw" => (isset($_POST['draw']) ? $_POST['draw'] : null),
  1390. "recordsTotal" => $this->crud_ajax->count_all(),
  1391. "recordsFiltered" => $this->crud_ajax->count_filtered(),
  1392. "data" => $data
  1393. );
  1394. echo json_encode($output);
  1395. }
  1396.  
  1397. public function done() {
  1398. $data['theme'] = 'pdln';
  1399. $data['page'] = 'v_done';
  1400. $data['title'] = 'Permohonan Sudah Disetujui';
  1401. $data['title_page'] = 'Permohonan Sudah Disetujui';
  1402. $data['breadcrumb'] = 'Permohonan Sudah Disetujui';
  1403. page_render($data);
  1404. }
  1405.  
  1406. public function done_list() {
  1407. $id_user = $this->session->user_id;
  1408. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  1409. $where = "";
  1410. $handle_negara = $this->get_handle_negara($id_user);
  1411. $this->crud_ajax->init('m_pdln', 'id_pdln', array('m_pdln.tgl_register' => 'asc'));
  1412. if ($level == LEVEL_ANALIS || $level == LEVEL_KASUBAG) {
  1413. $this->db->where_in('negara', $handle_negara);
  1414. $where = array('m_pdln.status' => '11');
  1415. } else if ($level == LEVEL_KABAG || $level == LEVEL_KARO || $level == LEVEL_SESMEN || $level == LEVEL_TUSESMEN || $level == LEVEL_MENSESNEG || $level == LEVEL_TUMENSESNEG) {
  1416. $where = array('m_pdln.status' => '11');
  1417. } else {
  1418. $where = array('m_pdln.status' => 'not defined');
  1419. }
  1420. $this->crud_ajax->setExtraWhere($where);
  1421. $this->crud_ajax->set_select_field('m_pdln.id_signed,m_pdln.id_pdln,m_pdln.no_register,m_pdln.tgl_register,m_pdln.status,m_pdln.no_surat_usulan_fp,
  1422. m_pdln.create_date,m_kegiatan.NamaKegiatan,unit_kerja.Name as unit_pemohon,
  1423. unit_kerja2.Name as unit_fp,m_pdln.jenis_permohonan');
  1424. $join = array(
  1425. 'm_user as user1' => array('user1.UserID = m_pdln.unit_pemohon', 'left'),
  1426. 'm_unit_kerja_institusi as unit_kerja' => array('unit_kerja.ID = user1.unitkerja', 'left'),
  1427. 'm_kegiatan' => array('m_kegiatan.ID = m_pdln.id_kegiatan', 'left'),
  1428. 'm_user as user2' => array('user2.UserID = m_pdln.unit_fp', 'left'),
  1429. 'm_unit_kerja_institusi as unit_kerja2' => array('unit_kerja2.ID = user2.unitkerja', 'left')
  1430. );
  1431. $this->crud_ajax->setJoinField($join);
  1432. $list = $this->crud_ajax->get_datatables();
  1433. $data = array();
  1434. $no = (isset($_POST['start'])) ? $_POST['start'] : 0;
  1435. foreach ($list as $pdln) {
  1436. $no++;
  1437. $row = array();
  1438. $row[] = $pdln->id_pdln;
  1439. $row[] = str_pad($pdln->no_register, 8, '0', STR_PAD_LEFT);
  1440. $row[] = date("d/m/Y", ($pdln->tgl_register));
  1441. $row[] = '<span class="label label-info">' . setStatus($pdln->status) . '</span>';
  1442. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/edit_task/' . $pdln->id_pdln . '"><button class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> View</button></a>';
  1443. if ($pdln->id_signed) {
  1444. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/download/' . $pdln->id_pdln . '" target="_blank"><button class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> Download</button></a>';
  1445. } else {
  1446. $row[] = '<button id="download_sp" class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> Download</button>';
  1447. }
  1448.  
  1449.  
  1450. $row[] = $pdln->no_surat_usulan_fp;
  1451. $row[] = $pdln->unit_pemohon;
  1452. $row[] = $pdln->unit_fp;
  1453. $row[] = '<span class="label label-' . setLabel($pdln->jenis_permohonan) . '">' . setJenisPermohonan($pdln->jenis_permohonan) . '</span>';
  1454. $row[] = $pdln->NamaKegiatan;
  1455. $row[] = $pdln->tgl_register;
  1456. $data[] = $row;
  1457. }
  1458. $output = array(
  1459. "draw" => (isset($_POST['draw']) ? $_POST['draw'] : null),
  1460. "recordsTotal" => $this->crud_ajax->count_all(),
  1461. "recordsFiltered" => $this->crud_ajax->count_filtered(),
  1462. "data" => $data
  1463. );
  1464. echo json_encode($output);
  1465. }
  1466.  
  1467. public function archive() {
  1468. $data['theme'] = 'pdln';
  1469. $data['page'] = 'v_archive';
  1470. $data['title'] = 'Permohonan Sudah DiArsip';
  1471. $data['title_page'] = 'Permohonan Sudah DiArsip';
  1472. $data['breadcrumb'] = 'Permohonan Sudah DiArsip';
  1473. page_render($data);
  1474. }
  1475.  
  1476. public function archive_list() {
  1477. $id_user = $this->session->user_id;
  1478. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  1479. $where = "";
  1480. $handle_negara = $this->get_handle_negara($id_user);
  1481. $this->crud_ajax->init('m_pdln', 'id_pdln', array('m_pdln.tgl_register' => 'asc'));
  1482. if ($level == LEVEL_ANALIS || $level == LEVEL_KASUBAG) {
  1483. $this->db->where_in('negara', $handle_negara);
  1484. $where = array('m_pdln.status' => '200');
  1485. } else if ($level == LEVEL_KABAG || $level == LEVEL_KARO || $level == LEVEL_SESMEN || $level == LEVEL_TUSESMEN || $level == LEVEL_MENSESNEG || $level == LEVEL_TUMENSESNEG) {
  1486. $where = array('m_pdln.status' => '200');
  1487. } else {
  1488. $where = array('m_pdln.status' => 'not defined');
  1489. }
  1490. $this->crud_ajax->setExtraWhere($where);
  1491. $this->crud_ajax->set_select_field('m_pdln.id_pdln,m_pdln.no_register,m_pdln.tgl_register,m_pdln.status,m_pdln.no_surat_usulan_fp,m_pdln.create_date,m_kegiatan.NamaKegiatan,
  1492. unit_kerja.Name as unit_pemohon,unit_kerja2.Name as unit_fp,m_pdln.jenis_permohonan');
  1493. $join = array(
  1494. 'm_user as user1' => array('user1.UserID = m_pdln.unit_pemohon', 'left'),
  1495. 'm_unit_kerja_institusi as unit_kerja' => array('unit_kerja.ID = user1.unitkerja', 'left'),
  1496. 'm_kegiatan' => array('m_kegiatan.ID = m_pdln.id_kegiatan', 'left'),
  1497. 'm_user as user2' => array('user2.UserID = m_pdln.unit_fp', 'left'),
  1498. 'm_unit_kerja_institusi as unit_kerja2' => array('unit_kerja2.ID = user2.unitkerja', 'left')
  1499. );
  1500. $this->crud_ajax->setJoinField($join);
  1501. $list = $this->crud_ajax->get_datatables();
  1502. $data = array();
  1503. $no = (isset($_POST['start'])) ? $_POST['start'] : 0;
  1504. foreach ($list as $pdln) {
  1505. $no++;
  1506. $row = array();
  1507. $row[] = $pdln->id_pdln;
  1508. $row[] = str_pad($pdln->no_register, 8, '0', STR_PAD_LEFT);
  1509. $row[] = date("d/m/Y", ($pdln->tgl_register));
  1510. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/view_arsip/' . $pdln->id_pdln . '"><button class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> View</button></a>';
  1511. $row[] = $pdln->no_surat_usulan_fp;
  1512. $row[] = $pdln->unit_pemohon;
  1513. $row[] = $pdln->unit_fp;
  1514. $row[] = '<span class="label label-' . setLabel($pdln->jenis_permohonan) . '">' . setJenisPermohonan($pdln->jenis_permohonan) . '</span>';
  1515. $row[] = $pdln->NamaKegiatan;
  1516. $row[] = '<span class="label label-info">' . setStatus($pdln->status) . '</span>';
  1517. $row[] = $pdln->tgl_register;
  1518. $data[] = $row;
  1519. }
  1520. $output = array(
  1521. "draw" => (isset($_POST['draw']) ? $_POST['draw'] : null),
  1522. "recordsTotal" => $this->crud_ajax->count_all(),
  1523. "recordsFiltered" => $this->crud_ajax->count_filtered(),
  1524. "data" => $data
  1525. );
  1526. echo json_encode($output);
  1527. }
  1528.  
  1529. public function view_arsip($id_pdln) {
  1530. $where = array('Status' => '1');
  1531. $this->crud_ajax->init('r_template_tembusan', 'ID', null);
  1532. $this->crud_ajax->setExtraWhere($where);
  1533. $data['list_temp_tembusan'] = $this->crud_ajax->get_data();
  1534. $data['id_pdln'] = $id_pdln;
  1535. $this->crud_ajax->init('t_approval_pdln', 'id', null);
  1536. $where_pdln = array('id_pdln' => $id_pdln, 'is_done' => 1);
  1537. $this->crud_ajax->setExtraWhere($where_pdln);
  1538. $data['list_approval'] = $this->crud_ajax->get_data(); //get history approval
  1539. $this->db->select('p.id_pdln,p.id_kegiatan,p.no_surat_usulan_pemohon,p.tgl_surat_usulan_pemohon,p.no_surat_usulan_fp,
  1540. p.tgl_surat_usulan_fp,p.pejabat_sign_sp,p.id_level_pejabat,p.format_tembusan,p.jenis_permohonan,
  1541. p.status,p.id_level_pejabat,p.author');
  1542. $this->db->where('p.id_pdln', $id_pdln);
  1543. $this->db->from('m_pdln p');
  1544. // $this->db->join("r_level_pejabat lp", "lp.id = p.id_level_pejabat");
  1545. $data['data_pdln'] = $this->db->get()->row();
  1546. //-----------------------------------------------------------------------------------------------------
  1547. // Memastikan bahwa level pejabat tertentu atau pengguna tertentu yang dapat melakukan perubahan data
  1548. //-----------------------------------------------------------------------------------------------------
  1549. $id_user = $this->session->user_id;
  1550. $data_user = $this->db->get_where('m_user', array('UserID' => $id_user))->row();
  1551. $level = $data_user->level;
  1552. $this->config->load('pdln', TRUE);
  1553. $data_integrity = $this->config->item('data_integrity', 'pdln');
  1554. $id_level_pejabat = $data['data_pdln']->id_level_pejabat;
  1555. if (!empty($data['data_pdln']) && $data['data_pdln']->author != $id_user && (array_key_exists($id_level_pejabat, $data_integrity) == false || $data_integrity[$id_level_pejabat] != $level)
  1556. //&& in_array($data['data_pdln']->status, $pdln_status) == false
  1557. ) {
  1558. //show_error("Anda tidak memiliki akses terhadap halaman atau data di halaman ini. ", 403, "Forbidden");
  1559. }
  1560. //-----------------------------------------------------------------------------------------------------
  1561. $this->db->select('m_kegiatan.ID,NamaKegiatan,StartDate,EndDate,r_negara.nmnegara,r_kota.nmkota,r_jenis_kegiatan.Nama as JenisKegiatan');
  1562. $this->db->where('m_kegiatan.ID', $data['data_pdln']->id_kegiatan);
  1563. $this->db->from('m_kegiatan');
  1564. $this->db->join('r_negara', 'r_negara.id = m_kegiatan.negara');
  1565. $this->db->join('r_kota', 'r_kota.id = m_kegiatan.tujuan');
  1566. $this->db->join('r_jenis_kegiatan', 'r_jenis_kegiatan.ID = m_kegiatan.JenisKegiatan');
  1567. $data['detail_kegiatan'] = $this->db->get()->row();
  1568. $data['theme'] = 'pdln';
  1569. $data['page'] = 'v_view_arsip';
  1570. $data['title'] = 'Form Arsip';
  1571. $data['title_page'] = 'Form Arsip';
  1572. $data['breadcrumb'] = 'Form Arsip';
  1573. page_render($data);
  1574. }
  1575.  
  1576. public function do_archiv($id_pdln) {
  1577. $response['status'] = false;
  1578. $note = $this->input->post('note');
  1579. if ($note === "") {
  1580. $data['status'] = FALSE;
  1581. $data['message'] = "Silahkan berikan catatan terlebih dahulu sebelum menjadikan !!!";
  1582. echo json_encode($data);
  1583. exit;
  1584. }
  1585. if (!empty($id_pdln)) {
  1586. $data = array(
  1587. 'status' => 200
  1588. );
  1589. $this->db->where('id_pdln', $id_pdln);
  1590. $affected_rows = $this->db->update('m_pdln', $data);
  1591. $level_user = $this->db->get_where('m_user', array('UserID' => $this->session->user_id))->row()->level;
  1592. $level_name = $this->db->get_where('m_level', array('LevelID' => $level_user))->row()->NamaLevel;
  1593. $data_approval = array(
  1594. 'id_pdln' => $id_pdln,
  1595. 'user_id' => $this->session->user_id,
  1596. 'note' => $this->input->post('note'),
  1597. 'submit_date' => date("Y-m-d H:i:s"),
  1598. 'assign_date' => '',
  1599. 'level' => $level_name,
  1600. 'aksi' => 'Arsip',
  1601. 'is_done' => 1
  1602. );
  1603. $insert_id_approval = $this->db->insert('t_approval_pdln', $data_approval);
  1604. $response['status'] = TRUE;
  1605. $response['msg'] = "Dokumen berhasil di Arsipkan";
  1606. }
  1607. echo json_encode($response);
  1608. }
  1609.  
  1610. public function get_handle_negara($id_user) {
  1611. $this->db->select('RoleID');
  1612. $this->db->from('t_user_role');
  1613. $this->db->where('UserID', $id_user);
  1614. $query = $this->db->get();
  1615. $list_role = $query->result();
  1616. $list_negara = array();
  1617. foreach ($list_role as $role) {
  1618. $id = $this->input->post('RoleID');
  1619. $this->db->select('*');
  1620. $this->db->from('t_role_negara');
  1621. $this->db->where('RoleID', $role->RoleID);
  1622. $query = $this->db->get();
  1623. foreach ($query->result() as $row) {
  1624. $list_negara[] = $row->NegaraID;
  1625. }
  1626. }
  1627. return $list_negara;
  1628. }
  1629.  
  1630. public function get_data_pdln() {
  1631. $response = array();
  1632. $id_pdln = $this->input->post('id_pdln');
  1633. $this->db->select('p.id_kegiatan,p.no_surat_usulan_pemohon,
  1634. p.tgl_surat_usulan_pemohon,p.id_level_pejabat,
  1635. p.no_surat_usulan_fp,p.pejabat_sign_sp');
  1636. $this->db->from('m_pdln as p');
  1637. $this->db->where('id_pdln', $id_pdln);
  1638. $query = $this->db->get();
  1639. if ($query->num_rows() > 0) {
  1640. $row = $query->row();
  1641. $response = array(
  1642. 'id_kegiatan' => $row->id_kegiatan,
  1643. 'no_surat_usulan_pemohon' => $row->no_surat_usulan_pemohon,
  1644. 'tgl_surat_usulan_pemohon' => $row->tgl_surat_usulan_pemohon,
  1645. 'id_level_pejabat' => $row->id_level_pejabat,
  1646. 'no_surat_usulan_fp' => $row->no_surat_usulan_fp,
  1647. 'pejabat_sign_sp' => $row->pejabat_sign_sp,
  1648. 'status' => TRUE
  1649. );
  1650. } else {
  1651. $response['status'] = FALSE;
  1652. }
  1653. echo json_encode($response);
  1654. }
  1655.  
  1656. public function cetak_permohonan_final($id_surat) {
  1657. $id_user = $this->session->user_id;
  1658. setlocale(LC_ALL, 'id_ID');
  1659. $this->db->select('m_pdln.id_pdln,m_pdln.id_kegiatan,m_pdln.id_level_pejabat,m_pdln.no_sp,m_pdln.tgl_sp,
  1660. m_pdln.tgl_surat_usulan_fp,m_pdln.no_surat_usulan_fp,m_pdln.pejabat_sign_sp,
  1661. m_pdln.format_tembusan,m_pdln.penandatangan_persetujuan,m_pdln.barcode,r_kota.nmkota,
  1662. m_pdln.update_date,m_pdln.create_date,m_pdln.path_sp');
  1663. $this->db->join('m_user', 'm_user.UserID = m_pdln.unit_fp');
  1664. $this->db->join('r_institution', 'r_institution.ID = m_user.instansi');
  1665. $this->db->join('r_kota', 'r_kota.id = r_institution.Kota');
  1666. $this->db->where('m_pdln.id_pdln', $id_surat);
  1667. $result_data = $this->db->get('m_pdln')->row();
  1668. // ----------------------------------------------------------------------
  1669. // checking existing file
  1670. // ----------------------------------------------------------------------
  1671. $this->config->load('pdln', TRUE);
  1672. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  1673. $update_date = $result_data->update_date;
  1674. $create_date = $result_data->create_date;
  1675. $month = month(date('n', $create_date));
  1676. $year = date('Y', $create_date);
  1677. $additional_path = $year . '/' . $month . '/pdln/' . $id_surat . "/";
  1678. $targetPath = $base_path . $additional_path;
  1679. if (!is_dir($targetPath)) {
  1680. mkdir($targetPath, 0777, TRUE);
  1681. }
  1682. $filename = $result_data->path_sp;
  1683. $filename = is_null($filename) ? "sp_pdln_{$id_surat}_{$update_date}.pdf" : $filename;
  1684. $fullpath = "{$targetPath}{$filename}";
  1685. // READY FOR METADATA
  1686. if (file_exists($fullpath)) {
  1687. send_file_to_browser($fullpath); // this function will exec die() and exit
  1688. }
  1689. $this->db->select('r_unit_tembusan.Nama');
  1690. $this->db->join('r_unit_tembusan', 'r_unit_tembusan.ID = t_template_unit_tembusan.UnitID');
  1691. $this->db->where('TemplateID', $result_data->format_tembusan);
  1692. $unit_tembusan = $this->db->get('t_template_unit_tembusan')->result();
  1693. $this->db->select('t_log_peserta.id_log_peserta,t_log_peserta.start_date,t_log_peserta.end_date,m_pemohon.nama,
  1694. m_pemohon.jabatan,m_pemohon.nip_nrp,r_institution.Nama as instansi,m_pemohon.instansi_lainnya,
  1695. m_pemohon.id_instansi,t_log_peserta.id_kategori_biaya,t_log_peserta.id_biaya');
  1696. $this->db->join('m_pemohon', 'm_pemohon.id_pemohon = t_log_peserta.id_pemohon');
  1697. $this->db->join('r_institution', 'r_institution.ID = m_pemohon.id_instansi', 'left');
  1698. $this->db->where('id_pdln', $id_surat);
  1699. $temp_pemohon = $this->db->get('t_log_peserta');
  1700. $list_pemohon = array();
  1701. foreach ($temp_pemohon->result() as $pemohon) {
  1702. $list_pemohon[$pemohon->id_log_peserta] = $pemohon;
  1703. $list_pemohon[$pemohon->id_log_peserta]->pembiayaan = $this->_get_detail_pembiayaan($pemohon->id_kategori_biaya, $pemohon->id_biaya); // Get the categories sub categories
  1704. }
  1705. $pejabat_persetujuan_surat = $result_data->penandatangan_persetujuan;
  1706. $id_user_plh = $this->session->user_id;
  1707. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user_plh))->row()->is_plh;
  1708. $jenis_plh = '';
  1709. if ($data_user_plh) {
  1710. $pejabat_persetujuan_surat = $id_user_plh;
  1711. }
  1712. $this->db->select('m_kegiatan.NamaKegiatan, m_kegiatan.StartDate, m_kegiatan.EndDate, r_negara.nmnegara as Negara');
  1713. $this->db->join('r_negara', 'r_negara.ID = m_kegiatan.negara', 'left');
  1714. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  1715. $kegiatan = $this->db->get('m_kegiatan')->row();
  1716. $this->db->select('*');
  1717. $this->db->where('m_user.UserID', $pejabat_persetujuan_surat);
  1718. $penandatangan_persetujuan = $this->db->get('m_user')->row();
  1719. $label_penandatangan = $this->get_label_penandatangan($pejabat_persetujuan_surat, $result_data->id_level_pejabat);
  1720. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  1721. $data = array(
  1722. 'title' => "Surat Persetujuan",
  1723. 'unit_tembusan' => $unit_tembusan,
  1724. 'level' => $level,
  1725. 'data_sp' => $result_data,
  1726. 'kegiatan' => $kegiatan,
  1727. 'penandatangan' => $penandatangan_persetujuan,
  1728. 'label_penandatangan' => $label_penandatangan,
  1729. 'm_pdf' => $this->load->library('M_pdf'));
  1730. $html = $this->load->view('kotak_surat/v_print_permohonan', $data, TRUE);
  1731. $data = array(
  1732. 'title' => "Lampiran SP",
  1733. 'data_lampiran' => $result_data,
  1734. 'level' => $level,
  1735. 'kegiatan' => $kegiatan,
  1736. 'list_pemohon' => $list_pemohon,
  1737. 'penandatangan' => $penandatangan_persetujuan,
  1738. 'label_penandatangan' => $label_penandatangan,
  1739. 'm_pdf' => $this->load->library('M_pdf'));
  1740. $html_lampiran = $this->load->view('kotak_surat/v_print_lampiran_permohonan', $data, TRUE);
  1741. $this->load->library('M_pdf');
  1742. $this->m_pdf->pdf->AddPage('P', // L - landscape, P - portrait
  1743. '', '', '', '', 15, // margin_left
  1744. 15, // margin right
  1745. 15, // margin top
  1746. 10, // margin bottom
  1747. 18, // margin header
  1748. 5); // margin footer
  1749. $qr_link = base_url() . $this->config->item('url_esign', 'pdln') . $id_surat;
  1750. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  1751. $this->m_pdf->pdf->WriteHTML($html);
  1752. $this->m_pdf->pdf->AddPage('L', // L - landscape, P - portrait
  1753. '', '', '', '', 15, // margin_left
  1754. 15, // margin right
  1755. 15, // margin top
  1756. 10, // margin bottom
  1757. 18, // margin header
  1758. 5); // margin footer
  1759. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  1760. $this->m_pdf->pdf->WriteHTML($html_lampiran);
  1761. setlocale(LC_ALL, 'id_ID');
  1762. $this->m_pdf->debug = true;
  1763. $this->m_pdf->pdf->Output($fullpath, 'F');
  1764. //send_file_to_browser($fullpath);
  1765. //$this->m_pdf->pdf->Output($filename,'I');
  1766. return $filename;
  1767. }
  1768.  
  1769. private function _get_detail_pembiayaan($id_karegori_biaya, $id_biaya) {
  1770. if ($id_karegori_biaya == "0") {
  1771. $this->db->select('t_ref_pembiayaan_tunggal.id_log_dana_tunggal,r_institution.Nama');
  1772. $this->db->where('id_log_dana_tunggal', $id_biaya);
  1773. $this->db->join('r_institution', "r_institution.ID = t_ref_pembiayaan_tunggal.id_instansi", "left");
  1774. return $this->db->get('t_ref_pembiayaan_tunggal')->row()->Nama;
  1775. } else if ($id_karegori_biaya == "1") {
  1776. $this->db->select('t_pemb.id_dana_campuran,ref_camp.by,r_jenis_pembiayaan.Description AS jenis_biaya,
  1777. (CASE WHEN ref_camp.by=1 THEN t_pemb.instansi_gov WHEN ref_camp.by=2 THEN t_pemb.instansi_donor
  1778. ELSE 0 END) AS id_instansi_pembiayaan', false);
  1779. $this->db->where('t_pemb.id_dana_campuran', $id_biaya);
  1780. $this->db->from('t_pembiayaan_campuran t_pemb');
  1781. $this->db->join('t_ref_pembiayaan_campuran as ref_camp', "t_pemb.id_dana_campuran = ref_camp.id_dana_campuran");
  1782. $this->db->join('r_jenis_pembiayaan', "r_jenis_pembiayaan.ID = ref_camp.id_jenis_biaya");
  1783. $pembiayaan = "";
  1784. foreach ($this->db->get()->result() as $pembiaya) {
  1785. $id_instansi = $pembiaya->id_instansi_pembiayaan;
  1786. if ($id_instansi == 0) {
  1787. $pembiayaan = $pembiayaan . "- " . $pembiaya->jenis_biaya . " : Perseorangan";
  1788. } else {
  1789. $pembiayaan = $pembiayaan . "- " . $pembiaya->jenis_biaya . " : " . $this->db->select('*')->where("ID = $id_instansi")->get('r_institution')->row()->Nama . '<br/><br/>';
  1790. }
  1791. }
  1792. return $pembiayaan;
  1793. }
  1794. }
  1795.  
  1796. public function print_permohonan($id_surat, $template_tembusan = '') {
  1797. $id_user = $this->session->user_id;
  1798. setlocale(LC_ALL, 'id_ID');
  1799. $this->db->select('m_pdln.id_signed,m_pdln.id_pdln,m_pdln.id_kegiatan,m_pdln.id_level_pejabat,m_pdln.no_sp,m_pdln.tgl_sp,m_pdln.tgl_surat_usulan_fp,m_pdln.no_surat_usulan_fp,m_pdln.pejabat_sign_sp,
  1800. m_pdln.path_sp,m_pdln.format_tembusan,m_pdln.penandatangan_persetujuan,m_pdln.barcode,r_kota.nmkota,m_pdln.update_date,m_pdln.create_date');
  1801. $this->db->join('m_user', 'm_user.UserID = m_pdln.unit_fp');
  1802. $this->db->join('r_institution', 'r_institution.ID = m_user.instansi');
  1803. $this->db->join('r_kota', 'r_kota.id = r_institution.Kota');
  1804. $this->db->where('m_pdln.id_pdln', $id_surat);
  1805. $result_data = $this->db->get('m_pdln')->row();
  1806. // ----------------------------------------------------------------------
  1807. // checking existing file
  1808. // ----------------------------------------------------------------------
  1809. $this->config->load('pdln', TRUE);
  1810. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  1811. $update_date = $result_data->update_date;
  1812. $create_date = $result_data->create_date;
  1813. $month = month(date('n', $create_date));
  1814. $year = date('Y', $create_date);
  1815. $additional_path = $year . '/' . $month . '/pdln/' . $id_surat . "/";
  1816. $targetPath = $base_path . $additional_path;
  1817. // READY FOR METADATA
  1818. if (!is_dir($targetPath)) {
  1819. mkdir($targetPath, 0777, TRUE);
  1820. }
  1821. $filename = $result_data->path_sp;
  1822. $filename = is_null($filename) ? "sp_pdln_{$id_surat}_{$update_date}.pdf" : $filename;
  1823. $fullpath = "{$targetPath}{$filename}";
  1824. // READY FOR METADATA
  1825. if (file_exists($fullpath)) {
  1826. send_file_to_browser($fullpath); // this function will exec die() and exit
  1827. }
  1828. // ----------------------------------------------------------------------
  1829. if ($template_tembusan > 0) {
  1830. $id_tembusan = $template_tembusan;
  1831. } else {
  1832. $id_tembusan = $result_data->format_tembusan;
  1833. }
  1834. $this->db->select('r_unit_tembusan.Nama');
  1835. $this->db->join('r_unit_tembusan', 'r_unit_tembusan.ID = t_template_unit_tembusan.UnitID');
  1836. $this->db->where('TemplateID', $id_tembusan);
  1837. $unit_tembusan = $this->db->get('t_template_unit_tembusan')->result();
  1838. $this->db->select('t_log_peserta.id_log_peserta,t_log_peserta.start_date,t_log_peserta.end_date,m_pemohon.nama,m_pemohon.jabatan,m_pemohon.nip_nrp,
  1839. r_institution.Nama as instansi,m_pemohon.instansi_lainnya,m_pemohon.id_instansi,t_log_peserta.id_kategori_biaya,t_log_peserta.id_biaya');
  1840. $this->db->join('m_pemohon', 'm_pemohon.id_pemohon = t_log_peserta.id_pemohon');
  1841. $this->db->join('r_institution', 'r_institution.ID = m_pemohon.id_instansi');
  1842. $this->db->where('id_pdln', $id_surat);
  1843. $temp_pemohon = $this->db->get('t_log_peserta');
  1844. $list_pemohon = array();
  1845. foreach ($temp_pemohon->result() as $pemohon) {
  1846. $list_pemohon[$pemohon->id_log_peserta] = $pemohon;
  1847. $list_pemohon[$pemohon->id_log_peserta]->pembiayaan = $this->_get_detail_pembiayaan($pemohon->id_kategori_biaya, $pemohon->id_biaya); // Get the categories sub categories
  1848. }
  1849.  
  1850. $pejabat_persetujuan_surat = $result_data->penandatangan_persetujuan;
  1851. $id_user_plh = $this->session->user_id;
  1852. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user_plh))->row()->is_plh;
  1853. $jenis_plh = '';
  1854. if ($data_user_plh) {
  1855. $pejabat_persetujuan_surat = $id_user_plh;
  1856. }
  1857.  
  1858. $this->db->select('m_kegiatan.NamaKegiatan,m_kegiatan.StartDate,m_kegiatan.EndDate,r_negara.nmnegara as Negara');
  1859. $this->db->join('r_negara', 'r_negara.ID = m_kegiatan.negara', 'left');
  1860. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  1861. $kegiatan = $this->db->get('m_kegiatan')->row();
  1862. $this->db->select('*');
  1863. $this->db->where('m_user.UserID', $pejabat_persetujuan_surat);
  1864. $penandatangan_persetujuan = $this->db->get('m_user')->row();
  1865. $label_penandatangan = $this->get_label_penandatangan($pejabat_persetujuan_surat, $result_data->id_level_pejabat);
  1866. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  1867. $data = array(
  1868. 'level' => $level,
  1869. 'title' => "Surat Persetujuan",
  1870. 'unit_tembusan' => $unit_tembusan,
  1871. 'data_sp' => $result_data,
  1872. 'kegiatan' => $kegiatan,
  1873. 'penandatangan' => $penandatangan_persetujuan,
  1874. 'label_penandatangan' => $label_penandatangan,
  1875. 'm_pdf' => $this->load->library('M_pdf'));
  1876. $html = $this->load->view('kotak_surat/v_print_permohonan', $data, TRUE);
  1877. $data = array(
  1878. 'level' => $level,
  1879. 'title' => "Lampiran SP",
  1880. 'data_lampiran' => $result_data,
  1881. 'kegiatan' => $kegiatan,
  1882. 'list_pemohon' => $list_pemohon,
  1883. 'label_penandatangan' => $label_penandatangan,
  1884. 'm_pdf' => $this->load->library('M_pdf'));
  1885. $html_lampiran = $this->load->view('kotak_surat/v_print_lampiran_permohonan', $data, TRUE);
  1886. //$filename = 'sp_pdln' . $id_surat . '_' . date('d_m_Y');
  1887. $this->load->library('M_pdf');
  1888. $this->m_pdf->pdf->AddPage('P', // L - landscape, P - portrait
  1889. '', '', '', '', 15, // margin_left
  1890. 15, // margin right
  1891. 15, // margin top
  1892. 10, // margin bottom
  1893. 18, // margin header
  1894. 5); // margin footer
  1895. $qr_link = base_url() . $this->config->item('url_esign', 'pdln') . $id_surat;
  1896. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  1897. $html = mb_convert_encoding($html, 'UTF-8', 'UTF-8');
  1898. $this->m_pdf->pdf->WriteHTML($html);
  1899. $this->m_pdf->pdf->AddPage('L', // L - landscape, P - portrait
  1900. '', '', '', '', 15, // margin_left
  1901. 15, // margin right
  1902. 15, // margin top
  1903. 10, // margin bottom
  1904. 18, // margin header
  1905. 5); // margin footer
  1906. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  1907. $html_lampiran = mb_convert_encoding($html_lampiran, 'UTF-8', 'UTF-8');
  1908. $this->m_pdf->pdf->WriteHTML($html_lampiran);
  1909. $this->m_pdf->pdf->Output($filename . '.pdf', 'I');
  1910. // $this->m_pdf->pdf->Output($fullpath, 'F');
  1911. // update sp_path on table m_pdln
  1912. $this->db->reset_query();
  1913. $this->db->set('path_sp', $filename);
  1914. $this->db->where('id_pdln', $id_surat);
  1915. if (!$this->db->update('m_pdln')) {
  1916. die('Gagal mengupdate data path_sp, silahkan hubungi Administrator.');
  1917. }
  1918. send_file_to_browser($fullpath);
  1919. }
  1920.  
  1921. public function print_perpanjangan($id_surat, $template_tembusan = '') {
  1922.  
  1923. $id_user = $this->session->user_id;
  1924. setlocale(LC_ALL, 'id_ID');
  1925. $this->db->select('m_pdln.id_level_pejabat,m_pdln.penandatangan_persetujuan, m_pdln.id_pdln, m_pdln.id_kegiatan, m_pdln.no_sp, m_pdln.tgl_sp, m_pdln.tgl_surat_usulan_fp,
  1926. m_pdln.no_surat_usulan_fp, m_pdln.pejabat_sign_sp, m_pdln.format_tembusan, m_pdln.id_pdln_lama,
  1927. m_pdln.create_date,m_pdln.update_date');
  1928.  
  1929. $this->db->where('m_pdln.id_pdln', $id_surat);
  1930. $result_data = $this->db->get('m_pdln')->row();
  1931. // ----------------------------------------------------------------------
  1932. // checking existing file
  1933. // ----------------------------------------------------------------------
  1934. $this->config->load('pdln', TRUE);
  1935. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  1936. $update_date = $result_data->update_date;
  1937. $create_date = $result_data->create_date;
  1938. $month = month(date('n', $create_date));
  1939. $year = date('Y', $create_date);
  1940. $additional_path = $year . '/' . $month . '/pdln/' . $id_surat . "/";
  1941. $targetPath = $base_path . $additional_path;
  1942. if (!is_dir($targetPath)) {
  1943. mkdir($targetPath, 0777, TRUE);
  1944. }
  1945. $filename = $result_data->path_sp;
  1946. $filename = is_null($filename) ? "sp_pdln_{$id_surat}_{$update_date}.pdf" : $filename;
  1947. $fullpath = "{$targetPath}{$filename}";
  1948. // READY FOR METADATA
  1949. if (file_exists($fullpath)) {
  1950. send_file_to_browser($fullpath); // this function will exec die() and exit
  1951. }
  1952. // ----------------------------------------------------------------------
  1953. if ($template_tembusan > 0) {
  1954. $id_tembusan = $template_tembusan;
  1955. } else {
  1956. $id_tembusan = $result_data->format_tembusan;
  1957. }
  1958. $this->db->select('r_unit_tembusan.Nama');
  1959. $this->db->join('r_unit_tembusan', 'r_unit_tembusan.ID = t_template_unit_tembusan.UnitID');
  1960. $this->db->where('TemplateID', $id_tembusan);
  1961. $unit_tembusan = $this->db->get('t_template_unit_tembusan')->result();
  1962. $this->db->select('t_log_peserta.id_log_peserta,m_pemohon.nama,m_pemohon.jabatan');
  1963. $this->db->join('m_pemohon', 'm_pemohon.id_pemohon = t_log_peserta.id_pemohon');
  1964. $this->db->where('id_pdln', $id_surat);
  1965. $list_pemohon = $this->db->get('t_log_peserta')->result();
  1966. $this->db->select('m_kegiatan.NamaKegiatan');
  1967. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  1968. $kegiatan = $this->db->get('m_kegiatan')->row();
  1969. $this->db->select('m_pdln.no_sp, m_pdln.tgl_sp');
  1970. $this->db->where('m_pdln.id_pdln', $result_data->id_pdln_lama);
  1971. $pdln_lama = $this->db->get('m_pdln')->row();
  1972. // =====penandatangan=====
  1973. $pejabat_persetujuan_surat = $result_data->penandatangan_persetujuan;
  1974. $id_user_plh = $this->session->user_id;
  1975. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user_plh))->row()->is_plh;
  1976. $jenis_plh = '';
  1977. if ($data_user_plh) {
  1978. $pejabat_persetujuan_surat = $id_user_plh;
  1979. }
  1980.  
  1981. $this->db->select('m_kegiatan.NamaKegiatan,m_kegiatan.StartDate,m_kegiatan.EndDate,r_negara.nmnegara as Negara');
  1982. $this->db->join('r_negara', 'r_negara.ID = m_kegiatan.negara', 'left');
  1983. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  1984. $kegiatan = $this->db->get('m_kegiatan')->row();
  1985. $this->db->select('*');
  1986. $this->db->where('m_user.UserID', $pejabat_persetujuan_surat);
  1987. $penandatangan_persetujuan = $this->db->get('m_user')->row();
  1988. $label_penandatangan = $this->get_label_penandatangan($pejabat_persetujuan_surat, $result_data->id_level_pejabat);
  1989. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  1990. // =======penandatangan======
  1991. $data = array(
  1992. 'title' => "Surat Persetujuan",
  1993. 'level' => $level,
  1994. 'label_penandatangan' => $label_penandatangan,
  1995. 'penandatangan' => $penandatangan_persetujuan,
  1996. 'unit_tembusan' => $unit_tembusan,
  1997. 'data_sp' => $result_data,
  1998. 'kegiatan' => $kegiatan,
  1999. 'data_sp_lama' => $pdln_lama,
  2000. 'm_pdf' => $this->load->library('M_pdf'));
  2001. $html = $this->load->view('kotak_surat/v_print_perpanjangan', $data, TRUE);
  2002. $data = array(
  2003. 'title' => "Lampiran SP",
  2004. 'data_lampiran' => $result_data,
  2005. 'label_penandatangan' => $label_penandatangan,
  2006. 'penandatangan' => $penandatangan_persetujuan,
  2007. 'list_pemohon' => $list_pemohon,
  2008. 'm_pdf' => $this->load->library('M_pdf'));
  2009. $html_lampiran = $this->load->view('kotak_surat/v_print_lampiran_perpanjangan', $data, TRUE);
  2010. $this->load->library('M_pdf');
  2011. $this->m_pdf->pdf->AddPage('P', // L - landscape, P - portrait
  2012. '', '', '', '', 15, // margin_left
  2013. 15, // margin right
  2014. 15, // margin top
  2015. 10, // margin bottom
  2016. 18, // margin header
  2017. 5); // margin footer
  2018. $qr_link = base_url() . $this->config->item('url_esign', 'pdln') . $id_surat;
  2019. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2020. $this->m_pdf->pdf->WriteHTML($html);
  2021. $this->m_pdf->pdf->AddPage('L', // L - landscape, P - portrait
  2022. '', '', '', '', 15, // margin_left
  2023. 15, // margin right
  2024. 15, // margin top
  2025. 10, // margin bottom
  2026. 18, // margin header
  2027. 5); // margin footer
  2028. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2029. $this->m_pdf->pdf->WriteHTML($html_lampiran);
  2030. $this->m_pdf->pdf->Output($filename . '.pdf', 'I');
  2031. //send_file_to_browser($fullpath); // this function will exec die() and exit
  2032. }
  2033.  
  2034. public function print_ralat($id_surat, $template_tembusan = '') {
  2035. $id_user = $this->session->user_id;
  2036. setlocale(LC_ALL, 'id_ID');
  2037. $this->db->select('m_pdln.id_level_pejabat,m_pdln.penandatangan_persetujuan,m_pdln.id_pdln, m_pdln.id_kegiatan, m_pdln.no_sp, m_pdln.tgl_sp, m_pdln.tgl_surat_usulan_fp,
  2038. m_pdln.no_surat_usulan_fp, m_pdln.pejabat_sign_sp, m_pdln.format_tembusan, m_pdln.id_pdln_lama,
  2039. m_pdln.update_date,m_pdln.create_date');
  2040. $this->db->where('m_pdln.id_pdln', $id_surat);
  2041. $result_data = $this->db->get('m_pdln')->row();
  2042. // ----------------------------------------------------------------------
  2043. // checking existing file
  2044. // ----------------------------------------------------------------------
  2045. $this->config->load('pdln', TRUE);
  2046. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  2047. $update_date = $result_data->update_date;
  2048. $create_date = $result_data->create_date;
  2049. $month = date('m', $create_date);
  2050. $year = date('Y', $create_date);
  2051. $additional_path = $year . '/' . $month . '/pdln/' . $id_surat . "/";
  2052. $targetPath = $base_path . $additional_path;
  2053. if (!is_dir($targetPath)) {
  2054. mkdir($targetPath, 0777, TRUE);
  2055. }
  2056. $filename = $result_data->path_sp;
  2057. $filename = is_null($filename) ? "sp_pdln_{$id_surat}_{$update_date}.pdf" : $filename;
  2058. $fullpath = "{$targetPath}{$filename}";
  2059. // READY FOR METADATA
  2060. if (file_exists($fullpath)) {
  2061. send_file_to_browser($fullpath); // this function will exec die() and exit
  2062. }
  2063. // ----------------------------------------------------------------------
  2064. if ($template_tembusan > 0) {
  2065. $id_tembusan = $template_tembusan;
  2066. } else {
  2067. $id_tembusan = $result_data->format_tembusan;
  2068. }
  2069. $this->db->select('r_unit_tembusan.Nama');
  2070. $this->db->join('r_unit_tembusan', 'r_unit_tembusan.ID = t_template_unit_tembusan.UnitID');
  2071. $this->db->where('TemplateID', $id_tembusan);
  2072. $unit_tembusan = $this->db->get('t_template_unit_tembusan')->result();
  2073. $this->db->select('t_log_peserta.id_log_peserta,m_pemohon.nama,m_pemohon.jabatan');
  2074. $this->db->join('m_pemohon', 'm_pemohon.id_pemohon = t_log_peserta.id_pemohon');
  2075. $this->db->where('id_pdln', $id_surat);
  2076. $list_pemohon = $this->db->get('t_log_peserta')->result();
  2077. $this->db->select('m_kegiatan.NamaKegiatan');
  2078. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2079. $kegiatan = $this->db->get('m_kegiatan')->row();
  2080. $this->db->select('m_pdln.no_sp, m_pdln.tgl_sp');
  2081. $this->db->where('m_pdln.id_pdln', $result_data->id_pdln_lama);
  2082. $pdln_lama = $this->db->get('m_pdln')->row();
  2083.  
  2084. $pejabat_persetujuan_surat = $result_data->penandatangan_persetujuan;
  2085. $id_user_plh = $this->session->user_id;
  2086. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user_plh))->row()->is_plh;
  2087. $jenis_plh = '';
  2088. if ($data_user_plh) {
  2089. $pejabat_persetujuan_surat = $id_user_plh;
  2090. }
  2091.  
  2092. $this->db->select('m_kegiatan.NamaKegiatan,m_kegiatan.StartDate,m_kegiatan.EndDate,r_negara.nmnegara as Negara');
  2093. $this->db->join('r_negara', 'r_negara.ID = m_kegiatan.negara', 'left');
  2094. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2095. $kegiatan = $this->db->get('m_kegiatan')->row();
  2096. $this->db->select('*');
  2097. $this->db->where('m_user.UserID', $pejabat_persetujuan_surat);
  2098. $penandatangan_persetujuan = $this->db->get('m_user')->row();
  2099. $label_penandatangan = $this->get_label_penandatangan($pejabat_persetujuan_surat, $result_data->id_level_pejabat);
  2100. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  2101. $data = array(
  2102. 'title' => "Surat Persetujuan",
  2103. 'level' => $level,
  2104. 'label_penandatangan' => $label_penandatangan,
  2105. 'penandatangan' => $penandatangan_persetujuan,
  2106. 'unit_tembusan' => $unit_tembusan,
  2107. 'data_sp' => $result_data,
  2108. 'kegiatan' => $kegiatan,
  2109. 'data_sp_lama' => $pdln_lama,
  2110. 'm_pdf' => $this->load->library('M_pdf'));
  2111. $html = $this->load->view('kotak_surat/v_print_ralat', $data, TRUE);
  2112. $data = array(
  2113. 'title' => "Lampiran SP",
  2114. 'label_penandatangan' => $label_penandatangan,
  2115. 'penandatangan' => $penandatangan_persetujuan,
  2116. 'data_lampiran' => $result_data,
  2117. 'list_pemohon' => $list_pemohon,
  2118. 'm_pdf' => $this->load->library('M_pdf'));
  2119. $html_lampiran = $this->load->view('kotak_surat/v_print_lampiran_ralat', $data, TRUE);
  2120. $this->load->library('M_pdf');
  2121. $this->m_pdf->pdf->AddPage('P', // L - landscape, P - portrait
  2122. '', '', '', '', 15, // margin_left
  2123. 15, // margin right
  2124. 15, // margin top
  2125. 10, // margin bottom
  2126. 18, // margin header
  2127. 5); // margin footer
  2128. $qr_link = base_url() . $this->config->item('url_esign', 'pdln') . $id_surat;
  2129. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2130. $this->m_pdf->pdf->WriteHTML($html);
  2131. $this->m_pdf->pdf->AddPage('L', // L - landscape, P - portrait
  2132. '', '', '', '', 15, // margin_left
  2133. 15, // margin right
  2134. 15, // margin top
  2135. 10, // margin bottom
  2136. 18, // margin header
  2137. 5); // margin footer
  2138. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2139. $this->m_pdf->pdf->WriteHTML($html_lampiran);
  2140. $this->m_pdf->pdf->Output($filename . '.pdf', 'I');
  2141. //send_file_to_browser($fullpath);
  2142. }
  2143.  
  2144. public function print_pembatalan($id_surat, $template_tembusan = '') {
  2145. $id_user = $this->session->user_id;
  2146. setlocale(LC_ALL, 'id_ID');
  2147. $this->db->select('m_pdln.penandatangan_persetujuan,m_pdln.id_level_pejabat,m_pdln.id_level_pejabat,m_pdln.penandatangan_persetujuan,m_pdln.id_pdln, m_pdln.id_kegiatan, m_pdln.no_sp, m_pdln.tgl_sp, m_pdln.tgl_surat_usulan_fp,
  2148. m_pdln.no_surat_usulan_fp, m_pdln.pejabat_sign_sp, m_pdln.format_tembusan, m_pdln.id_pdln_lama,
  2149. m_pdln.create_date, m_pdln.update_date');
  2150. $this->db->where('m_pdln.id_pdln', $id_surat);
  2151. $result_data = $this->db->get('m_pdln')->row();
  2152. // ----------------------------------------------------------------------
  2153. // checking existing file
  2154. // ----------------------------------------------------------------------
  2155. $this->config->load('pdln', TRUE);
  2156. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  2157. $update_date = $result_data->update_date;
  2158. $create_date = $result_data->create_date;
  2159. $month = month(date('n', $create_date));
  2160. $year = date('Y', $create_date);
  2161. $additional_path = $year . '/' . $month . '/pdln/' . $id_surat . "/";
  2162. $targetPath = $base_path . $additional_path;
  2163. if (!is_dir($targetPath)) {
  2164. mkdir($targetPath, 0777, TRUE);
  2165. }
  2166. $filename = $result_data->path_sp;
  2167. $filename = is_null($filename) ? "sp_pdln_{$id_surat}_{$update_date}.pdf" : $filename;
  2168. $fullpath = "{$targetPath}{$filename}";
  2169. // READY FOR METADATA
  2170. if (file_exists($fullpath)) {
  2171. send_file_to_browser($fullpath); // this function will exec die() and exit
  2172. }
  2173. // ----------------------------------------------------------------------
  2174. if ($template_tembusan > 0) {
  2175. $id_tembusan = $template_tembusan;
  2176. } else {
  2177. $id_tembusan = $result_data->format_tembusan;
  2178. }
  2179. $this->db->select('r_unit_tembusan.Nama');
  2180. $this->db->join('r_unit_tembusan', 'r_unit_tembusan.ID = t_template_unit_tembusan.UnitID');
  2181. $this->db->where('TemplateID', $id_tembusan);
  2182. $unit_tembusan = $this->db->get('t_template_unit_tembusan')->result();
  2183. $this->db->select('t_log_peserta.id_log_peserta,m_pemohon.nama,m_pemohon.jabatan');
  2184. $this->db->join('m_pemohon', 'm_pemohon.id_pemohon = t_log_peserta.id_pemohon');
  2185. $this->db->where('id_pdln', $id_surat);
  2186. $list_pemohon = $this->db->get('t_log_peserta')->result();
  2187. $this->db->select('m_kegiatan.NamaKegiatan');
  2188. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2189. $kegiatan = $this->db->get('m_kegiatan')->row();
  2190. $this->db->select('m_pdln.no_sp, m_pdln.tgl_sp');
  2191. $this->db->where('m_pdln.id_pdln', $result_data->id_pdln_lama);
  2192. $pdln_lama = $this->db->get('m_pdln')->row();
  2193. $pejabat_persetujuan_surat = $result_data->penandatangan_persetujuan;
  2194. $id_user_plh = $this->session->user_id;
  2195. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user_plh))->row()->is_plh;
  2196. $jenis_plh = '';
  2197. if ($data_user_plh) {
  2198. $pejabat_persetujuan_surat = $id_user_plh;
  2199. }
  2200.  
  2201. $this->db->select('m_kegiatan.NamaKegiatan,m_kegiatan.StartDate,m_kegiatan.EndDate,r_negara.nmnegara as Negara');
  2202. $this->db->join('r_negara', 'r_negara.ID = m_kegiatan.negara', 'left');
  2203. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2204. $kegiatan = $this->db->get('m_kegiatan')->row();
  2205. $this->db->select('*');
  2206. $this->db->where('m_user.UserID', $pejabat_persetujuan_surat);
  2207. $penandatangan_persetujuan = $this->db->get('m_user')->row();
  2208. $label_penandatangan = $this->get_label_penandatangan($pejabat_persetujuan_surat, $result_data->id_level_pejabat);
  2209. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  2210. $data = array(
  2211. 'title' => "Surat Persetujuan",
  2212. 'level' => $level,
  2213. 'label_penandatangan' => $label_penandatangan,
  2214. 'penandatangan' => $penandatangan_persetujuan,
  2215. 'unit_tembusan' => $unit_tembusan,
  2216. 'data_sp' => $result_data,
  2217. 'kegiatan' => $kegiatan,
  2218. 'data_sp_lama' => $pdln_lama,
  2219. 'm_pdf' => $this->load->library('M_pdf'));
  2220. $html = $this->load->view('kotak_surat/v_print_pembatalan', $data, TRUE);
  2221. /*
  2222. $data = array(
  2223. 'title' => "Lampiran SP",
  2224. 'data_lampiran' => $result_data,
  2225. 'list_pemohon' => $list_pemohon,
  2226. 'm_pdf' => $this->load->library('M_pdf'));
  2227. $html_lampiran = $this->load->view('kotak_surat/v_print_lampiran_pembatalan', $data, TRUE);
  2228. */
  2229. $this->load->library('M_pdf');
  2230. $this->m_pdf->pdf->AddPage('P', // L - landscape, P - portrait
  2231. '', '', '', '', 15, // margin_left
  2232. 15, // margin right
  2233. 15, // margin top
  2234. 10, // margin bottom
  2235. 18, // margin header
  2236. 5); // margin footer
  2237. $qr_link = base_url() . $this->config->item('url_esign', 'pdln') . $id_surat;
  2238. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2239. $this->m_pdf->pdf->WriteHTML($html);
  2240. $this->m_pdf->pdf->Output($filename . '.pdf', 'I');
  2241. //send_file_to_browser($fullpath); // this function will exec die() and exit
  2242. }
  2243.  
  2244. public function get_list_peserta() {
  2245. $id_pdln = $this->uri->segment(4);
  2246. $this->crud_ajax->init('t_log_peserta', 'id_log_peserta', NULL);
  2247. $join = array(
  2248. 'm_pemohon' => array('m_pemohon.id_pemohon = t_log_peserta.id_pemohon', 'left'),
  2249. 'r_institution' => array('m_pemohon.id_instansi = r_institution.ID', 'left'),
  2250. );
  2251. $this->crud_ajax->setJoinField($join);
  2252. $this->crud_ajax->set_select_field('id_log_peserta,m_pemohon.id_pemohon,id_kategori_biaya,id_biaya,m_pemohon.paspor,nik,nip_nrp,m_pemohon.nama nama_peserta,jabatan,start_date,end_date,r_institution.Nama,m_pemohon.id_instansi,instansi_lainnya');
  2253. $where_data = array(
  2254. 'id_pdln' => $id_pdln
  2255. );
  2256. $this->crud_ajax->setExtraWhere($where_data);
  2257. $list = $this->crud_ajax->get_datatables();
  2258. $data = array();
  2259. $no = (isset($_POST['start'])) ? $_POST['start'] : 0;
  2260. foreach ($list as $peserta) {
  2261. $row = array();
  2262. $row[] = $peserta->id_log_peserta;
  2263. $row[] = ++$no . '.';
  2264. $row[] = $peserta->nip_nrp;
  2265. $row[] = $peserta->nik;
  2266. $row[] = $peserta->nama_peserta;
  2267. $row[] = ucwords($peserta->jabatan);
  2268. $row[] = (empty($peserta->start_date) || empty($peserta->end_date)) ? '' : day(date("Y-m-d", $peserta->start_date)) . ' s.d ' . day(date("Y-m-d", $peserta->end_date));
  2269. $row[] = ($peserta->id_kategori_biaya == 1) ? "Campuran" : "Tunggal";
  2270. $row[] = ((empty($peserta->id_instansi)) OR ( $peserta->id_instansi) == 0 ) ? $peserta->instansi_lainnya : $peserta->Nama;
  2271. $id_peserta = $peserta->id_log_peserta;
  2272. $result = $this->db->get_where('view_biaya_log_peserta', array("id_log_peserta" => $id_peserta));
  2273. if ($result->num_rows() > 0) {
  2274. $biaya;
  2275. foreach ($result->result() as $value) {
  2276. $biaya = $value->biaya;
  2277. }
  2278. $row[] = (empty($biaya)) ? '' : 'Rp. ' . number_format(intval($biaya));
  2279. } else {
  2280. $row[] = '';
  2281. }
  2282. $row[] = '<a onClick="view_peserta(' . $id_peserta . ')" id="v' . $no . '" title="View" class="btn btn-xs view_peserta"><i class="fa fa-search"></i>&nbsp; View </button>';
  2283. $data[] = $row;
  2284. }
  2285. $output = array(
  2286. "draw" => (isset($_POST['draw']) ? $_POST['draw'] : NULL),
  2287. "recordsTotal" => $this->crud_ajax->count_filtered(),
  2288. "recordsFiltered" => $this->crud_ajax->count_filtered(),
  2289. "data" => $data,
  2290. "query" => $this->db->last_query()
  2291. );
  2292. echo json_encode($output);
  2293. }
  2294.  
  2295. public function get_label_penandatangan($id_user, $level_pejabat) {
  2296. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->is_plh;
  2297. $jenis_plh = '';
  2298. if ($data_user_plh) {
  2299.  
  2300. $sekarang = date("Y-m-d");
  2301. $this->db->select('jenis_plh,start_date,end_date');
  2302. $this->db->where('id_user_plh', $id_user);
  2303. $this->db->limit(1);
  2304. $this->db->order_by('id_plh', 'desc');
  2305. $jenis = $this->db->get('t_log_plh')->row();
  2306. $str_date = strtotime($jenis->start_date);
  2307. $end_date = strtotime($jenis->end_date);
  2308. $now_date = strtotime($sekarang);
  2309. if (isset($jenis->jenis_plh) && ($now_date >= $str_date) && ($now_date <= $end_date)) {
  2310. $jenis_plh = $jenis->jenis_plh;
  2311. }
  2312. }
  2313. $label = "";
  2314. if ($level_pejabat == 4) {
  2315. if ($jenis_plh == LEVEL_SESMEN) {
  2316. $label = "Plh. Sekretaris Kementerian Sekretariat Negara";
  2317. } else {
  2318. $label = " Sekretaris Kementerian Sekretariat Negara";
  2319. }
  2320. } else if ($level_pejabat == 5) {
  2321.  
  2322. if ($jenis_plh == LEVEL_KARO) {
  2323. $label = "a.n. Sekretaris Kementerian Sekretariat Negara <br/>
  2324. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Plh. Kepala Biro Kerja Sama Teknik Luar Negeri";
  2325. } else {
  2326. $label = "a.n. Sekretaris Kementerian Sekretariat Negara <br/>
  2327. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kepala Biro Kerja Sama Teknik Luar Negeri";
  2328. }
  2329. } else {
  2330. if ($jenis_plh == LEVEL_SESMEN) {
  2331. $label = "a.n. Menteri Sekretaris Negara <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Plh. Sekretaris Kementerian Sekretariat Negara";
  2332. } else {
  2333. $label = "a.n. Menteri Sekretaris Negara <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sekretaris Kementerian Sekretariat Negara";
  2334. }
  2335. }
  2336.  
  2337. return $label;
  2338. }
  2339.  
  2340. public function get_detail_tembusan() {
  2341. $template_tembusan = $this->input->post('template_tembusan');
  2342. if ($template_tembusan === "0" || !isset($template_tembusan)) {
  2343. $data['status'] = FALSE;
  2344. $data['message'] = "Silahkan pilih salah satu format tembusan terlebih dahulu";
  2345. echo json_encode($data);
  2346. exit;
  2347. } else {
  2348. $data['status'] = TRUE;
  2349. $data['nama_format'] = $this->db->where('ID', $template_tembusan)->get('r_template_tembusan')->row()->Nama;
  2350. $data['message'] = "";
  2351. $this->db->select('*');
  2352. $this->db->from('t_template_unit_tembusan');
  2353. $this->db->where('TemplateID', $template_tembusan);
  2354. $query = $this->db->get();
  2355. $no = 1;
  2356. foreach ($query->result() as $row) {
  2357. $data['message'] = $data['message'] . "<br/>" . $no . ". " . $this->db->where('ID', $row->UnitID)->get('r_unit_tembusan')->row()->Nama;
  2358. $no++;
  2359. }
  2360. $data['message'] = $data['message'] . "<br/>" . $no . ". Yang Bersangkutan";
  2361. echo json_encode($data);
  2362. }
  2363. }
  2364.  
  2365. public function all_list() {
  2366. $id_user = $this->session->user_id;
  2367. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  2368. $where = "";
  2369. $handle_negara = $this->get_handle_negara($id_user);
  2370. $this->crud_ajax->init('m_pdln', 'id_pdln', array('m_pdln.id_level_pejabat' => 'asc', 'm_pdln.tgl_register' => 'asc'));
  2371. /*
  2372. if ($level == LEVEL_ANALIS || $level == LEVEL_KASUBAG) {
  2373. $this->db->where_in('negara', $handle_negara);
  2374. $where = array('m_pdln.status' => '11');
  2375. } else if ($level == LEVEL_KABAG || $level == LEVEL_KARO || $level == LEVEL_SESMEN || $level == LEVEL_TUSESMEN || $level == LEVEL_MENSESNEG || $level == LEVEL_TUMENSESNEG) {
  2376. $where = array('m_pdln.status' => '11');
  2377. } else {
  2378. $where = array('m_pdln.status' => 'not defined');
  2379. }
  2380. $this->crud_ajax->setExtraWhere($where);
  2381. */
  2382. $this->crud_ajax->set_select_field('
  2383. m_pdln.id_pdln,m_pdln.no_register,m_pdln.tgl_register,m_pdln.status,
  2384. m_pdln.no_surat_usulan_fp,m_pdln.create_date,m_kegiatan.NamaKegiatan,m_pdln.id_level_pejabat,
  2385. unit_kerja.Name as unit_pemohon,unit_kerja2.Name as unit_fp,m_pdln.jenis_permohonan
  2386. ');
  2387. $join = array(
  2388. 'm_user as user1' => array('user1.UserID = m_pdln.unit_pemohon', 'left'),
  2389. 'm_unit_kerja_institusi as unit_kerja' => array('unit_kerja.ID = user1.unitkerja', 'left'),
  2390. 'm_kegiatan' => array('m_kegiatan.ID = m_pdln.id_kegiatan', 'left'),
  2391. 'm_user as user2' => array('user2.UserID = m_pdln.unit_fp', 'left'),
  2392. 'm_unit_kerja_institusi as unit_kerja2' => array('unit_kerja2.ID = user2.unitkerja', 'left')
  2393. );
  2394. $this->crud_ajax->setJoinField($join);
  2395. //$this->db->order_by('m_pdln.id_pdln', 'DESC');
  2396. $list = $this->crud_ajax->get_datatables();
  2397. $data = array();
  2398. $no = (isset($_POST['start'])) ? $_POST['start'] : 0;
  2399. foreach ($list as $pdln) {
  2400. $no++;
  2401. $row = array();
  2402. $unit_pemohon = '';
  2403. $unit_fp = '';
  2404. $no_surat_usulan_fp = '';
  2405. if ($pdln->no_surat_usulan_fp != 'undefined') {
  2406. $no_surat_usulan_fp = $pdln->no_surat_usulan_fp;
  2407. }
  2408. if ($pdln->unit_pemohon != 'undefined') {
  2409. $unit_pemohon = $pdln->unit_pemohon;
  2410. }
  2411. if ($pdln->unit_fp != 'undefined') {
  2412. $unit_fp = $pdln->unit_fp;
  2413. }
  2414. $klaster = (in_array($pdln->id_level_pejabat, array(1, 2)) ? "<i class='fa fa-circle red'></i>" : (in_array($pdln->id_level_pejabat, array(3, 4)) ? "<i class='fa fa-heart blue'></i>" : ""));
  2415. $row[] = $pdln->id_pdln;
  2416. $row[] = $klaster;
  2417. $row[] = str_pad($pdln->no_register, 8, '0', STR_PAD_LEFT);
  2418. $row[] = date("d/m/Y", ($pdln->tgl_register));
  2419. $row[] = '<a href="' . base_url() . 'kotak_surat/approval/edit_task/' . $pdln->id_pdln . '"><button class="btn btn-sm green btn-outline filter-submit margin-bottom"><i class="fa fa-search"></i> View</button></a>';
  2420. $row[] = '<button type="button" id="download_sp" title="Unduh" class="btn btn-xs btn-info"><i class="fa fa-download"></i> </button>';
  2421. $row[] = $no_surat_usulan_fp;
  2422. $row[] = $unit_pemohon;
  2423. $row[] = $unit_fp;
  2424. $row[] = '<span class="label label-' . setLabel($pdln->jenis_permohonan) . '">' . setJenisPermohonan($pdln->jenis_permohonan) . '</span>';
  2425. $row[] = $pdln->NamaKegiatan;
  2426. $row[] = '<span class="label ' . ($pdln->status == '8' ? 'label-danger' : ($pdln->status == '7' ? 'label-warning' : 'label-info')) . '">' . setStatus($pdln->status) . '</span>';
  2427.  
  2428. $row[] = $pdln->tgl_register;
  2429. $data[] = $row;
  2430. }
  2431. $output = array(
  2432. "draw" => (isset($_POST['draw']) ? $_POST['draw'] : null),
  2433. "recordsTotal" => $this->crud_ajax->count_all(),
  2434. "recordsFiltered" => $this->crud_ajax->count_filtered(),
  2435. "data" => $data
  2436. );
  2437. echo json_encode($output);
  2438. }
  2439.  
  2440. public function print_perpanjangan_final($id_surat, $template_tembusan = '') {
  2441. $id_user = $this->session->user_id;
  2442. setlocale(LC_ALL, 'id_ID');
  2443. $this->db->select('m_pdln.penandatangan_persetujuan,m_pdln.id_level_pejabat,m_pdln.id_pdln, m_pdln.id_kegiatan, m_pdln.no_sp, m_pdln.tgl_sp, m_pdln.tgl_surat_usulan_fp,
  2444. m_pdln.no_surat_usulan_fp, m_pdln.pejabat_sign_sp, m_pdln.format_tembusan, m_pdln.id_pdln_lama,
  2445. m_pdln.create_date,m_pdln.update_date ,m_pdln.path_sp');
  2446. $this->db->where('m_pdln.id_pdln', $id_surat);
  2447. $result_data = $this->db->get('m_pdln')->row();
  2448. // ----------------------------------------------------------------------
  2449. // checking existing file
  2450. // ----------------------------------------------------------------------
  2451. $this->config->load('pdln', TRUE);
  2452. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  2453. $update_date = $result_data->update_date;
  2454. $create_date = $result_data->create_date;
  2455. $month = month(date('n', $create_date));
  2456. $year = date('Y', $create_date);
  2457. $additional_path = $year . '/' . $month . '/pdln/' . $id_surat . "/";
  2458. $targetPath = $base_path . $additional_path;
  2459. if (!is_dir($targetPath)) {
  2460. mkdir($targetPath, 0777, TRUE);
  2461. }
  2462. $filename = $result_data->path_sp;
  2463. $filename = is_null($filename) ? "sp_pdln_{$id_surat}_{$update_date}.pdf" : $filename;
  2464. $fullpath = "{$targetPath}{$filename}";
  2465. // READY FOR METADATA
  2466. if (file_exists($fullpath)) {
  2467. send_file_to_browser($fullpath); // this function will exec die() and exit
  2468. }
  2469. // ----------------------------------------------------------------------
  2470. if ($template_tembusan > 0) {
  2471. $id_tembusan = $template_tembusan;
  2472. } else {
  2473. $id_tembusan = $result_data->format_tembusan;
  2474. }
  2475. $this->db->select('r_unit_tembusan.Nama');
  2476. $this->db->join('r_unit_tembusan', 'r_unit_tembusan.ID = t_template_unit_tembusan.UnitID');
  2477. $this->db->where('TemplateID', $id_tembusan);
  2478. $unit_tembusan = $this->db->get('t_template_unit_tembusan')->result();
  2479. $this->db->select('t_log_peserta.id_log_peserta,m_pemohon.nama,m_pemohon.jabatan');
  2480. $this->db->join('m_pemohon', 'm_pemohon.id_pemohon = t_log_peserta.id_pemohon');
  2481. $this->db->where('id_pdln', $id_surat);
  2482. $list_pemohon = $this->db->get('t_log_peserta')->result();
  2483. $this->db->select('m_kegiatan.NamaKegiatan');
  2484. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2485. $kegiatan = $this->db->get('m_kegiatan')->row();
  2486. $this->db->select('m_pdln.no_sp, m_pdln.tgl_sp');
  2487. $this->db->where('m_pdln.id_pdln', $result_data->id_pdln_lama);
  2488. $pdln_lama = $this->db->get('m_pdln')->row();
  2489. $pejabat_persetujuan_surat = $result_data->penandatangan_persetujuan;
  2490. $id_user_plh = $this->session->user_id;
  2491. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user_plh))->row()->is_plh;
  2492. $jenis_plh = '';
  2493. if ($data_user_plh) {
  2494. $pejabat_persetujuan_surat = $id_user_plh;
  2495. }
  2496.  
  2497. $this->db->select('m_kegiatan.NamaKegiatan,m_kegiatan.StartDate,m_kegiatan.EndDate,r_negara.nmnegara as Negara');
  2498. $this->db->join('r_negara', 'r_negara.ID = m_kegiatan.negara', 'left');
  2499. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2500. $kegiatan = $this->db->get('m_kegiatan')->row();
  2501. $this->db->select('*');
  2502. $this->db->where('m_user.UserID', $pejabat_persetujuan_surat);
  2503. $penandatangan_persetujuan = $this->db->get('m_user')->row();
  2504. $label_penandatangan = $this->get_label_penandatangan($pejabat_persetujuan_surat, $result_data->id_level_pejabat);
  2505. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  2506. $data = array(
  2507. 'title' => "Surat Persetujuan",
  2508. 'level' => $level,
  2509. 'label_penandatangan' => $label_penandatangan,
  2510. 'penandatangan' => $penandatangan_persetujuan,
  2511. 'unit_tembusan' => $unit_tembusan,
  2512. 'data_sp' => $result_data,
  2513. 'kegiatan' => $kegiatan,
  2514. 'data_sp_lama' => $pdln_lama,
  2515. 'm_pdf' => $this->load->library('M_pdf'));
  2516. $html = $this->load->view('kotak_surat/v_print_perpanjangan', $data, TRUE);
  2517. $data = array(
  2518. 'title' => "Lampiran SP",
  2519. 'level' => $level,
  2520. 'label_penandatangan' => $label_penandatangan,
  2521. 'penandatangan' => $penandatangan_persetujuan,
  2522. 'data_lampiran' => $result_data,
  2523. 'list_pemohon' => $list_pemohon,
  2524. 'm_pdf' => $this->load->library('M_pdf'));
  2525. $html_lampiran = $this->load->view('kotak_surat/v_print_lampiran_perpanjangan', $data, TRUE);
  2526. $this->load->library('M_pdf');
  2527. $this->m_pdf->pdf->AddPage('P', // L - landscape, P - portrait
  2528. '', '', '', '', 15, // margin_left
  2529. 15, // margin right
  2530. 15, // margin top
  2531. 10, // margin bottom
  2532. 18, // margin header
  2533. 5); // margin footer
  2534. $qr_link = base_url() . $this->config->item('url_esign', 'pdln') . $id_surat;
  2535. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2536. $this->m_pdf->pdf->WriteHTML($html);
  2537. $this->m_pdf->pdf->AddPage('L', // L - landscape, P - portrait
  2538. '', '', '', '', 15, // margin_left
  2539. 15, // margin right
  2540. 15, // margin top
  2541. 10, // margin bottom
  2542. 18, // margin header
  2543. 5); // margin footer
  2544. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2545. $this->m_pdf->pdf->WriteHTML($html_lampiran);
  2546. $this->m_pdf->pdf->Output($fullpath, 'F');
  2547. //send_file_to_browser($fullpath); // this function will exec die() and exit
  2548. }
  2549.  
  2550. public function print_ralat_final($id_surat, $template_tembusan = '') {
  2551. $id_user = $this->session->user_id;
  2552. setlocale(LC_ALL, 'id_ID');
  2553. $this->db->select('m_pdln.penandatangan_persetujuan,m_pdln.id_level_pejabat,m_pdln.id_pdln, m_pdln.id_kegiatan, m_pdln.no_sp, m_pdln.tgl_sp, m_pdln.tgl_surat_usulan_fp,
  2554. m_pdln.no_surat_usulan_fp, m_pdln.pejabat_sign_sp, m_pdln.format_tembusan, m_pdln.id_pdln_lama,
  2555. m_pdln.update_date,m_pdln.create_date, m_pdln.path_sp');
  2556. $this->db->where('m_pdln.id_pdln', $id_surat);
  2557. $result_data = $this->db->get('m_pdln')->row();
  2558. // ----------------------------------------------------------------------
  2559. // checking existing file
  2560. // ----------------------------------------------------------------------
  2561. $this->config->load('pdln', TRUE);
  2562. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  2563. $update_date = $result_data->update_date;
  2564. $create_date = $result_data->create_date;
  2565. $month = date('m', $create_date);
  2566. $year = date('Y', $create_date);
  2567. $additional_path = $year . '/' . $month . '/pdln/' . $id_surat . "/";
  2568. $targetPath = $base_path . $additional_path;
  2569. if (!is_dir($targetPath)) {
  2570. mkdir($targetPath, 0777, TRUE);
  2571. }
  2572. $filename = $result_data->path_sp;
  2573. $filename = is_null($filename) ? "sp_pdln_{$id_surat}_{$update_date}.pdf" : $filename;
  2574. $fullpath = "{$targetPath}{$filename}";
  2575. // READY FOR METADATA
  2576. if (file_exists($fullpath)) {
  2577. send_file_to_browser($fullpath); // this function will exec die() and exit
  2578. }
  2579. // ----------------------------------------------------------------------
  2580. if ($template_tembusan > 0) {
  2581. $id_tembusan = $template_tembusan;
  2582. } else {
  2583. $id_tembusan = $result_data->format_tembusan;
  2584. }
  2585. $this->db->select('r_unit_tembusan.Nama');
  2586. $this->db->join('r_unit_tembusan', 'r_unit_tembusan.ID = t_template_unit_tembusan.UnitID');
  2587. $this->db->where('TemplateID', $id_tembusan);
  2588. $unit_tembusan = $this->db->get('t_template_unit_tembusan')->result();
  2589. $this->db->select('t_log_peserta.id_log_peserta,m_pemohon.nama,m_pemohon.jabatan');
  2590. $this->db->join('m_pemohon', 'm_pemohon.id_pemohon = t_log_peserta.id_pemohon');
  2591. $this->db->where('id_pdln', $id_surat);
  2592. $list_pemohon = $this->db->get('t_log_peserta')->result();
  2593. $this->db->select('m_kegiatan.NamaKegiatan');
  2594. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2595. $kegiatan = $this->db->get('m_kegiatan')->row();
  2596. $this->db->select('m_pdln.no_sp, m_pdln.tgl_sp');
  2597. $this->db->where('m_pdln.id_pdln', $result_data->id_pdln_lama);
  2598. $pdln_lama = $this->db->get('m_pdln')->row();
  2599.  
  2600. $pejabat_persetujuan_surat = $result_data->penandatangan_persetujuan;
  2601. $id_user_plh = $this->session->user_id;
  2602. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user_plh))->row()->is_plh;
  2603. $jenis_plh = '';
  2604. if ($data_user_plh) {
  2605. $pejabat_persetujuan_surat = $id_user_plh;
  2606. }
  2607.  
  2608. $this->db->select('m_kegiatan.NamaKegiatan,m_kegiatan.StartDate,m_kegiatan.EndDate,r_negara.nmnegara as Negara');
  2609. $this->db->join('r_negara', 'r_negara.ID = m_kegiatan.negara', 'left');
  2610. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2611. $kegiatan = $this->db->get('m_kegiatan')->row();
  2612. $this->db->select('*');
  2613. $this->db->where('m_user.UserID', $pejabat_persetujuan_surat);
  2614. $penandatangan_persetujuan = $this->db->get('m_user')->row();
  2615. $label_penandatangan = $this->get_label_penandatangan($pejabat_persetujuan_surat, $result_data->id_level_pejabat);
  2616. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  2617. $data = array(
  2618. 'title' => "Surat Persetujuan",
  2619. 'level' => $level,
  2620. 'label_penandatangan' => $label_penandatangan,
  2621. 'penandatangan' => $penandatangan_persetujuan,
  2622. 'unit_tembusan' => $unit_tembusan,
  2623. 'data_sp' => $result_data,
  2624. 'kegiatan' => $kegiatan,
  2625. 'data_sp_lama' => $pdln_lama,
  2626. 'm_pdf' => $this->load->library('M_pdf'));
  2627. $html = $this->load->view('kotak_surat/v_print_ralat', $data, TRUE);
  2628. $data = array(
  2629. 'title' => "Lampiran SP",
  2630. 'level' => $level,
  2631. 'label_penandatangan' => $label_penandatangan,
  2632. 'penandatangan' => $penandatangan_persetujuan,
  2633. 'data_lampiran' => $result_data,
  2634. 'list_pemohon' => $list_pemohon,
  2635. 'm_pdf' => $this->load->library('M_pdf'));
  2636. $html_lampiran = $this->load->view('kotak_surat/v_print_lampiran_ralat', $data, TRUE);
  2637. $this->load->library('M_pdf');
  2638. $this->m_pdf->pdf->AddPage('P', // L - landscape, P - portrait
  2639. '', '', '', '', 15, // margin_left
  2640. 15, // margin right
  2641. 15, // margin top
  2642. 10, // margin bottom
  2643. 18, // margin header
  2644. 5); // margin footer
  2645. $qr_link = base_url() . $this->config->item('url_esign', 'pdln') . $id_surat;
  2646. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2647. $this->m_pdf->pdf->WriteHTML($html);
  2648. $this->m_pdf->pdf->AddPage('L', // L - landscape, P - portrait
  2649. '', '', '', '', 15, // margin_left
  2650. 15, // margin right
  2651. 15, // margin top
  2652. 10, // margin bottom
  2653. 18, // margin header
  2654. 5); // margin footer
  2655. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2656. $this->m_pdf->pdf->WriteHTML($html_lampiran);
  2657. $this->m_pdf->pdf->Output($fullpath, 'F');
  2658. //send_file_to_browser($fullpath);
  2659. // $this->m_pdf->pdf->Output($fullpath, 'F');
  2660. }
  2661.  
  2662. public function print_pembatalan_final($id_surat, $template_tembusan = '') {
  2663. $id_user = $this->session->user_id;
  2664. setlocale(LC_ALL, 'id_ID');
  2665. $this->db->select('m_pdln.penandatangan_persetujuan,m_pdln.id_level_pejabat,m_pdln.id_pdln, m_pdln.id_kegiatan, m_pdln.no_sp, m_pdln.tgl_sp, m_pdln.tgl_surat_usulan_fp,
  2666. m_pdln.no_surat_usulan_fp, m_pdln.pejabat_sign_sp, m_pdln.format_tembusan, m_pdln.id_pdln_lama,
  2667. m_pdln.create_date, m_pdln.update_date, m_pdln.path_sp');
  2668. $this->db->where('m_pdln.id_pdln', $id_surat);
  2669. $result_data = $this->db->get('m_pdln')->row();
  2670. // ----------------------------------------------------------------------
  2671. // checking existing file
  2672. // ----------------------------------------------------------------------
  2673. $this->config->load('pdln', TRUE);
  2674. $base_path = $this->config->item('pdln_upload_path', 'pdln');
  2675. $update_date = $result_data->update_date;
  2676. $create_date = $result_data->create_date;
  2677. $month = month(date('n', $create_date));
  2678. $year = date('Y', $create_date);
  2679. $additional_path = $year . '/' . $month . '/pdln/' . $id_surat . "/";
  2680. $targetPath = $base_path . $additional_path;
  2681. if (!is_dir($targetPath)) {
  2682. mkdir($targetPath, 0777, TRUE);
  2683. }
  2684. $filename = $result_data->path_sp;
  2685. $filename = is_null($filename) ? "sp_pdln_{$id_surat}_{$update_date}.pdf" : $filename;
  2686. $fullpath = "{$targetPath}{$filename}";
  2687. // READY FOR METADATA
  2688. if (file_exists($fullpath)) {
  2689. send_file_to_browser($fullpath); // this function will exec die() and exit
  2690. }
  2691. // ----------------------------------------------------------------------
  2692. if ($template_tembusan > 0) {
  2693. $id_tembusan = $template_tembusan;
  2694. } else {
  2695. $id_tembusan = $result_data->format_tembusan;
  2696. }
  2697. $this->db->select('r_unit_tembusan.Nama');
  2698. $this->db->join('r_unit_tembusan', 'r_unit_tembusan.ID = t_template_unit_tembusan.UnitID');
  2699. $this->db->where('TemplateID', $template_tembusan);
  2700. $unit_tembusan = $this->db->get('t_template_unit_tembusan')->result();
  2701. $this->db->select('t_log_peserta.id_log_peserta,m_pemohon.nama,m_pemohon.jabatan');
  2702. $this->db->join('m_pemohon', 'm_pemohon.id_pemohon = t_log_peserta.id_pemohon');
  2703. $this->db->where('id_pdln', $id_surat);
  2704. $list_pemohon = $this->db->get('t_log_peserta')->result();
  2705. $this->db->select('m_kegiatan.NamaKegiatan');
  2706. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2707. $kegiatan = $this->db->get('m_kegiatan')->row();
  2708. $this->db->select('m_pdln.no_sp, m_pdln.tgl_sp');
  2709. $this->db->where('m_pdln.id_pdln', $result_data->id_pdln_lama);
  2710. $pdln_lama = $this->db->get('m_pdln')->row();
  2711.  
  2712. $pejabat_persetujuan_surat = $result_data->penandatangan_persetujuan;
  2713. $id_user_plh = $this->session->user_id;
  2714. $data_user_plh = $this->db->get_where('m_user', array('UserID' => $id_user_plh))->row()->is_plh;
  2715. $jenis_plh = '';
  2716. if ($data_user_plh) {
  2717. $pejabat_persetujuan_surat = $id_user_plh;
  2718. }
  2719.  
  2720. $this->db->select('m_kegiatan.NamaKegiatan,m_kegiatan.StartDate,m_kegiatan.EndDate,r_negara.nmnegara as Negara');
  2721. $this->db->join('r_negara', 'r_negara.ID = m_kegiatan.negara', 'left');
  2722. $this->db->where('m_kegiatan.ID', $result_data->id_kegiatan);
  2723. $kegiatan = $this->db->get('m_kegiatan')->row();
  2724. $this->db->select('*');
  2725. $this->db->where('m_user.UserID', $pejabat_persetujuan_surat);
  2726. $penandatangan_persetujuan = $this->db->get('m_user')->row();
  2727. $label_penandatangan = $this->get_label_penandatangan($pejabat_persetujuan_surat, $result_data->id_level_pejabat);
  2728. $level = $this->db->get_where('m_user', array('UserID' => $id_user))->row()->level;
  2729. $data = array(
  2730. 'title' => "Surat Persetujuan",
  2731. 'level' => $level,
  2732. 'label_penandatangan' => $label_penandatangan,
  2733. 'penandatangan' => $penandatangan_persetujuan,
  2734. 'unit_tembusan' => $unit_tembusan,
  2735. 'data_sp' => $result_data,
  2736. 'kegiatan' => $kegiatan,
  2737. 'data_sp_lama' => $pdln_lama,
  2738. 'm_pdf' => $this->load->library('M_pdf'));
  2739. $html = $this->load->view('kotak_surat/v_print_pembatalan', $data, TRUE);
  2740. $this->load->library('M_pdf');
  2741. $this->m_pdf->pdf->AddPage('P', // L - landscape, P - portrait
  2742. '', '', '', '', 15, // margin_left
  2743. 15, // margin right
  2744. 15, // margin top
  2745. 10, // margin bottom
  2746. 18, // margin header
  2747. 5); // margin footer
  2748. $qr_link = base_url() . $this->config->item('url_esign', 'pdln') . $id_surat;
  2749. $this->m_pdf->pdf->SetHTMLFooter('<barcode code="' . $qr_link . '" type="QR" size="0.8" height="1.5" alt="' . $qr_link . '"/>');
  2750. $this->m_pdf->pdf->WriteHTML($html);
  2751. $this->m_pdf->pdf->Output($fullpath, 'F');
  2752. //send_file_to_browser($fullpath); // this function will exec die() and exit
  2753. }
  2754.  
  2755. public function send_email($data) {
  2756. $this->config->load('email', TRUE);
  2757. $from = isset($data['from']) ? $data['from'] : $this->config->item('email_from', 'email');
  2758. $reply = isset($data['reply']) ? $data['reply'] : $this->config->item('email_reply', 'email');
  2759. $to = isset($data['to']) ? $data['to'] : '';
  2760. $subject = isset($data['subject']) ? $data['subject'] : '';
  2761. $body = isset($data['body']) ? $data['body'] : '';
  2762. $this->load->library('email');
  2763. $result = $this->email
  2764. ->from($from)
  2765. ->reply_to($reply) // Optional, an account where a human being reads.
  2766. ->to($to)
  2767. ->subject($subject)
  2768. ->message($body)
  2769. ->send();
  2770. return $result;
  2771. }
  2772.  
  2773. public function test_send_email($to) {
  2774. $this->config->load('email', TRUE);
  2775. $from = $this->config->item('email_from', 'email');
  2776. $reply = $this->config->item('email_reply', 'email');
  2777. $subject = 'percobaan';
  2778. $body = 'percobaan kirim email';
  2779. $this->load->library('email');
  2780. $result = $this->email
  2781. ->from($from)
  2782. ->reply_to($reply)
  2783. ->to(urldecode($to))
  2784. ->subject($subject)
  2785. ->message($body);
  2786. if(!$this->email->send(false)){
  2787. $s=$this->email->print_debugger();
  2788. echo 'gagal<br>'.$s;
  2789. return false;
  2790. }else{
  2791. return true;
  2792. }
  2793. }
  2794.  
  2795. public function download($id_pdln) {
  2796. $data_pdln = $this->db->get_where('m_pdln', array('id_pdln' => $id_pdln))->row();
  2797. $idSigned = $data_pdln->id_signed;
  2798. $this->config->load('esign', TRUE);
  2799. $this->load->library('Esign', $this->config->item('esign'));
  2800. $clientId = $this->config->item('clientId', 'esign');
  2801. $clientSecret = $this->config->item('clientSecret', 'esign');
  2802. $username = $this->config->item('userIdMenteri', 'esign');
  2803. $password = $this->config->item('passwordMenteri', 'esign');
  2804. $authEntity = new AuthRequestEntity();
  2805. $authEntity->client_id = $clientId;
  2806. $authEntity->client_secret = $clientSecret;
  2807. $authEntity->grant_type = Esign::GRANT_TYPE_PASSWORD;
  2808. $authEntity->username = $username;
  2809. $authEntity->password = $password;
  2810. $authResponse = json_decode($this->esign->GetUserAccessToken($authEntity), true);
  2811. if (array_key_exists('access_token', $authResponse)) {
  2812. $accessToken = $authResponse['access_token'];
  2813. $response = $this->esign->DownloadSignedDoc($idSigned, $accessToken);
  2814. $this->output
  2815. ->set_status_header(200)
  2816. ->set_content_type("application/pdf")
  2817. //->set_header("Content-Disposition:attachment;filename='SP_{$idSigned}.pdf'")
  2818. ->set_output($response);
  2819. return;
  2820. }
  2821. $this->output->set_status_header(204);
  2822. }
  2823.  
  2824. public function get_data_peserta() {
  2825. $id_log_peserta = $this->input->post('id_log_peserta');
  2826. $this->db->select("
  2827. a.id_log_peserta,
  2828. b.id_pemohon,
  2829. a.id_kategori_biaya,
  2830. a.id_biaya,
  2831. b.nik,
  2832. b.paspor,
  2833. b.nip_nrp,
  2834. b.nama AS nama_peserta,
  2835. b.jabatan,
  2836. CONCAT(DATE_FORMAT(FROM_UNIXTIME(a.start_date),'%d-%m-%Y'),' s.d. ',DATE_FORMAT(FROM_UNIXTIME(a.end_date),'%d-%m-%Y')) AS tgl,
  2837. c.Nama,
  2838. b.id_instansi,
  2839. b.instansi_lainnya
  2840. ")
  2841. ->from('t_log_peserta a')
  2842. ->join('m_pemohon b', 'b.id_pemohon = a.id_pemohon', 'left')
  2843. ->join('r_institution c', 'b.id_instansi = c.ID', 'left')
  2844. ->where(array('a.id_log_peserta' => $id_log_peserta));
  2845. $result = $this->db->get()->row();
  2846. $data['peserta'] = $result;
  2847. if ($data['peserta']->id_kategori_biaya == "0") {
  2848. $this->crud_ajax->init('t_ref_pembiayaan_tunggal', 'id_log_dana_tunggal', NULL);
  2849. $this->crud_ajax->setExtraWhere(array('id_log_dana_tunggal' => $data['peserta']->id_biaya));
  2850. $biaya = $this->crud_ajax->get_data();
  2851. $data['biaya'] = number_format($biaya[0]->biaya, 2, '.', ',');
  2852. } else if ($data['peserta']->id_kategori_biaya == "1") {
  2853. $this->crud_ajax->init('t_pembiayaan_campuran', 'id_dana_campuran', NULL);
  2854. $this->crud_ajax->setExtraWhere(array('id_dana_campuran' => $data['peserta']->id_biaya));
  2855. $biaya = $this->crud_ajax->get_data();
  2856. $data['biaya'] = number_format($biaya[0]->biaya_apbn, 2, '.', ',');
  2857. }
  2858. echo json_encode($data);
  2859. }
  2860.  
  2861. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement