Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.93 KB | None | 0 0
  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3.  
  4. class Absensi_model extends MY_Model {
  5.  
  6. public $table = 'absensi';
  7.  
  8. public function __construct()
  9. {
  10. parent::__construct();
  11.  
  12. }
  13.  
  14. public function Parse_Data($data,$p1,$p2){
  15. $data = " ".$data;
  16. $hasil = "";
  17. $awal = strpos($data,$p1);
  18. if ($awal != "") {
  19. $akhir = strpos(strstr($data,$p1),$p2);
  20. if ($akhir != ""){
  21. $hasil=substr($data,$awal+strlen($p1),$akhir-strlen($p1));
  22. }
  23. }
  24. return $hasil;
  25. }
  26.  
  27. public function getPegawai(){
  28. $this->db->from('pegawai');
  29. $query = $this->db->get();
  30. return $query->result();
  31. }
  32.  
  33. public function konekFp($IP, $port, $Key){
  34.  
  35. $Connect = fsockopen($IP, $port, $errno, $errstr, 1);
  36. if ($Connect) {
  37. $soap_request = "<GetAttLog>
  38. <ArgComKey xsi:type=\"xsd:integer\">".$Key."</ArgComKey>
  39. <Arg><PIN xsi:type=\"xsd:integer\">All</PIN></Arg>
  40. </GetAttLog>";
  41.  
  42. $newLine = "\r\n";
  43. fputs($Connect, "POST /iWsService HTTP/1.0".$newLine);
  44. fputs($Connect, "Content-Type: text/xml".$newLine);
  45. fputs($Connect, "Content-Length: ".strlen($soap_request).$newLine.$newLine);
  46. fputs($Connect, $soap_request.$newLine);
  47. $buffer = "";
  48. while($Response = fgets($Connect, 1024)) {
  49. $buffer = $buffer.$Response;
  50. }
  51. } else $buffer = "Koneksi Gagal";
  52.  
  53. return $buffer;
  54. }
  55.  
  56. public function semuadata()
  57. {
  58. $this->db->from($this->table);
  59. $this->db->join('pegawai', 'pegawai.no_absensi = absensi.no_absensi', 'left');
  60. $this->db->order_by('absensi.tanggal_masuk', 'desc');
  61. $query = $this->db->get();
  62. return $query->result();
  63. }
  64.  
  65. public function deletebyid($id)
  66. {
  67.  
  68. $this->db->where("id_absensi",$id)
  69. ->delete($this->table);
  70.  
  71. return $this->db->affected_rows();
  72. }
  73.  
  74. public function getdata($id)
  75. {
  76. $this->db->from($this->table);
  77. $this->db->where('id_absensi',$id);
  78. $query = $this->db->get();
  79. return $query->row();
  80. }
  81.  
  82. public function save($data)
  83. {
  84. $this->db->insert($this->table, $data);
  85. $this->db->insert_id();
  86.  
  87. return true;
  88. }
  89.  
  90. public function update($id,$data)
  91. {
  92. $this->db->where("id_absensi",$id);
  93. $this->db->update($this->table,$data);
  94.  
  95. return true;
  96. }
  97.  
  98. public function cekAbsensi($pin, $tanggal, $jam)
  99. {
  100. $query=$this->db->where('no_absensi',$pin)
  101. ->where('tanggal_masuk',$tanggal)
  102. ->where('jam_masuk',$jam)
  103. ->get($this->table);
  104.  
  105. if($query->num_rows() < 1 AND $pin <> ''){
  106.  
  107. return TRUE;
  108. }else{
  109.  
  110. return FALSE;
  111. }
  112. }
  113.  
  114. public function cekNo($pin)
  115. {
  116. $query = $this->db->where('no_absensi', $pin)
  117. ->get('pegawai');
  118. if($query->num_rows() >= 1){
  119.  
  120. return TRUE;
  121. }else{
  122.  
  123. return FALSE;
  124. }
  125. }
  126.  
  127. public function cekAda($pin, $tanggal)
  128. {
  129. $query = $this->db->where('no_absensi', $pin)
  130. ->where('tanggal_dibuat',$tanggal)
  131. ->get($this->table);
  132. if($query->num_rows() >= 1){
  133.  
  134. return TRUE;
  135. }else{
  136.  
  137. return FALSE;
  138. }
  139. }
  140.  
  141. public function cekUdah($pin, $tanggal)
  142. {
  143. $query = $this->db->where('no_absensi', $pin)
  144. ->where('tanggal_masuk',$tanggal)
  145. ->get($this->table);
  146. if($query->num_rows() >= 1){
  147.  
  148. return TRUE;
  149. }else{
  150.  
  151. return FALSE;
  152. }
  153. }
  154.  
  155. public function updateAbsensi($pin, $tanggal, $data)
  156. {
  157. $this->db->where("no_absensi", $pin);
  158. $this->db->where("tanggal_dibuat", $tanggal);
  159. $this->db->update($this->table, $data);
  160.  
  161. return true;
  162.  
  163. }
  164.  
  165. public function getJamMasuk($pin, $tanggal)
  166. {
  167. $query=$this->db->where('no_absensi',$pin)
  168. ->where('tanggal_masuk',$tanggal)
  169. ->get($this->table);
  170.  
  171. $out = $query->result_array();
  172. foreach ($out as $rs) {
  173. return $rs['jam_masuk'];
  174. }
  175. }
  176.  
  177. public function getLembur($jadwal_pulang, $absen_pulang)
  178. {
  179. $jam_start = substr($jadwal_pulang, 0,2);
  180. $menit_start = substr($jadwal_pulang, 3,2);
  181. $jam_end = substr($absen_pulang, 0,2);
  182. $menit_end = substr($absen_pulang, 3,2);
  183.  
  184.  
  185. $date_awal = new DateTime($jam_start.":".$menit_start);
  186. $date_akhir = new DateTime($jam_end.":".$menit_end);
  187. $selisih = $date_akhir->diff($date_awal);
  188.  
  189. $jam = $selisih->format('%h');
  190. $menit = $selisih->format('%i');
  191.  
  192. if ($menit >= 30) {
  193. $jam = $jam+1;
  194. }
  195.  
  196. if ($jam >= 4) {
  197. $jam = $jam-1;
  198. }
  199.  
  200. $result = $jam - 1;
  201.  
  202. return $result;
  203. }
  204.  
  205. public function cekLain($pin, $jam_masux=0, $jam_pulanx=0)
  206. {
  207. $result = array();
  208. $sql = "Select t1.nama_lengkap,t1.id_pegawai,t1.id_grup,t2.*
  209. From pegawai t1
  210. Left join grup_pegawai t2 on t1.id_grup = t2.id_grup
  211. WHERE t1.no_absensi = $pin";
  212.  
  213. $row = $this->db->query($sql);
  214.  
  215. $str_jam_masuk = strtotime($jam_masux);
  216. $str_jam_pulang = strtotime($jam_pulanx);
  217.  
  218. foreach($row->result_array() as $grupx){
  219. $dshift = trim(($grupx ? $grupx['id_shift'] : '{}'), '{}');
  220. $bshift = explode(',', $dshift);
  221.  
  222. foreach($bshift as $id){
  223.  
  224. $sql2 = "SELECT *
  225. FROM shift
  226. WHERE id_shift = ?
  227. ";
  228.  
  229. $query = $this->db->query($sql2, array($id));
  230.  
  231. foreach($query->result_array() as $grup){
  232.  
  233. $jam_masuk = strtotime($grup['jadwal_datang']);
  234. $jam_pulang = strtotime($grup['jadwal_pulang']);
  235. $min_jam_masuk = strtotime($grup['jadwal_datang']."-2 hour");
  236. $max_jam_masuk = strtotime($grup['jadwal_pulang']."-2 hour");
  237.  
  238. if($str_jam_masuk > $min_jam_masuk && $str_jam_masuk < $max_jam_masuk){
  239.  
  240. if ($str_jam_masuk > $jam_masuk) {
  241. $output = $str_jam_masuk - $jam_masuk ;
  242.  
  243. $result['telat'] = $output / 60;
  244. }else{
  245. $output = $str_jam_masuk - $jam_masuk ;
  246.  
  247. $result['telat'] = $output / 60;
  248. }
  249.  
  250. if ($jam_pulanx != 0) {
  251.  
  252. if ($str_jam_pulang < $jam_pulang) {
  253. $output = $jam_pulang - $str_jam_pulang;
  254. $result['cepat'] = $output / 60;
  255. }else{
  256. $output = $jam_pulang - $str_jam_pulang;
  257. $result['cepat'] = $output / 60;
  258.  
  259. }
  260.  
  261. $result['lembur'] = $this->getLembur($grup['jadwal_pulang'], $jam_pulanx);
  262. }
  263. }
  264.  
  265. }
  266.  
  267. }
  268.  
  269. }
  270.  
  271. return $result;
  272. }
  273.  
  274. public function getNow(){
  275. $now = date('Y-m-d');
  276. $sql = "Select t1.*, t2.nama_lengkap,t2.id_pegawai,t2.id_grup,t3.*
  277. From absensi t1
  278. Left join pegawai t2 on t1.no_absensi = t2.no_absensi
  279. Left join grup_pegawai t3 on t2.id_grup = t3.id_grup
  280. where t1.tanggal_masuk = '$now'
  281. Order by tanggal_masuk DESC";
  282.  
  283. $rows = $this->db->query($sql);
  284.  
  285. foreach($rows->result_array() as $row){
  286. $result[$row['id_absensi']] = array(
  287. 'id_absensi' => $row['id_absensi'],
  288. 'no_absensi' => $row['no_absensi'],
  289. 'nama_lengkap' => $row['nama_lengkap'],
  290. 'jam_masuk' => $row['jam_masuk'],
  291. 'jam_pulang' => $row['jam_pulang'],
  292. 'jam_efektif' => $row['jam_efektif'],
  293. 'jam_izin_keluar' => $row['jam_izin_keluar'],
  294. 'jam_izin_masuk' => $row['jam_izin_masuk'],
  295. 'pulang_cepat' => $row['pulang_cepat'],
  296. 'terlambat' => $row['terlambat'],
  297. 'keterangan' => $row['keterangan'],
  298. 'nama_grup' => $row['nama_grup'],
  299. 'lembur' => $row['lembur'],
  300. );
  301. $dshift = trim(($row ? $row['id_shift'] : '{}'), '{}');
  302. $bshift = explode(',', $dshift);
  303.  
  304. foreach($bshift as $id){
  305.  
  306. $sql2 = "SELECT *
  307. FROM shift
  308. WHERE id_shift = ?
  309. ";
  310.  
  311. $query = $this->db->query($sql2, array($id));
  312. $str_jam_masuk = strtotime($row['jam_masuk']);
  313.  
  314. foreach($query->result_array() as $grup){
  315.  
  316. $jam_masuk = strtotime($grup['jadwal_datang']);
  317. $jam_pulang = strtotime($grup['jadwal_datang']);
  318. $min_jam_masuk = strtotime($grup['jadwal_datang']."-2 hour");
  319. $max_jam_masuk = strtotime($grup['jadwal_pulang']."-2 hour");
  320. if($str_jam_masuk > $min_jam_masuk && $str_jam_masuk < $max_jam_masuk){
  321. $result[$row['id_absensi']]['jadwal_datang'] = $grup['jadwal_datang'];
  322. $result[$row['id_absensi']]['jadwal_pulang'] = $grup['jadwal_pulang'];
  323. $result[$row['id_absensi']]['nama_shift'] = $grup['nama_shift'];
  324. }
  325.  
  326. }
  327.  
  328. }
  329. }
  330.  
  331. return $result;
  332.  
  333. }
  334.  
  335. public function get_pengaturan($nama){
  336. $query=$this->db->where('pengaturan',$nama)
  337. ->get('pengaturan');
  338. return $query->row_array();
  339. }
  340.  
  341.  
  342. // public function getShift()
  343. // {
  344. // $sql = "Select t1.*, t2.nama_lengkap,t2.id_pegawai,t2.id_grup,t3.*
  345. // From absensi t1
  346. // Left join pegawai t2 on t1.no_absensi = t2.no_absensi
  347. // Left join grup_pegawai t3 on t2.id_grup = t3.id_grup
  348. // Left join shift t4 on t3.id_grup = t4.id_grup
  349. // Order by tanggal_masuk DESC";
  350.  
  351. // $rows = $this->db->query($sql);
  352.  
  353. // foreach($rows->result_array() as $row){
  354. // $result[$row['id_absensi']] = array(
  355. // 'id_absensi' => $row['id_absensi'],
  356. // 'no_absensi' => $row['no_absensi'],
  357. // 'nama_lengkap' => $row['nama_lengkap'],
  358. // 'jam_masuk' => $row['jam_masuk'],
  359. // 'jam_pulang' => $row['jam_pulang'],
  360. // 'jam_izin_keluar' => $row['jam_izin_keluar'],
  361. // 'jam_izin_masuk' => $row['jam_izin_masuk'],
  362. // 'pulang_cepat' => $row['pulang_cepat'],
  363. // 'terlambat' => $row['terlambat'],
  364. // 'keterangan' => $row['keterangan'],
  365. // );
  366.  
  367. // $sql2 = "SELECT t1.*, t2.*
  368. // FROM grup_pegawai t1
  369. // LEFT JOIN shift t2 ON t2.id_grup = t1.id_grup
  370. // WHERE t2.id_grup = ?";
  371. // $query = $this->db->query($sql2, array($row['id_grup']));
  372. // $str_jam_masuk = strtotime($row['jam_masuk']);
  373. // foreach($query->result_array() as $grup){
  374. // // nentuin shift
  375. // $jam_masuk = strtotime($grup['jadwal_datang']);
  376. // $jam_pulang = strtotime($grup['jadwal_datang']);
  377. // $min_jam_masuk = strtotime($grup['jadwal_datang']."-1 hour");
  378. // $max_jam_masuk = strtotime($grup['jadwal_pulang']."-1 hour");
  379. // if($grup['nama_grup']) {
  380.  
  381.  
  382. // if($str_jam_masuk > $min_jam_masuk && $str_jam_masuk < $max_jam_masuk){
  383. // $result[$row['id_absensi']]['jadwal_datang'] = $grup['jadwal_datang'];
  384. // $result[$row['id_absensi']]['jadwal_pulang'] = $grup['jadwal_pulang'];
  385. // $result[$row['id_absensi']]['nama_grup'] = $grup['nama_grup'];
  386. // }
  387.  
  388. // }
  389. // }
  390. // }
  391.  
  392. // return $result;
  393. // }
  394.  
  395.  
  396. /*public function cekLain($pin, $jam_masux=0, $jam_pulanx=0)
  397. {
  398. $result = array();
  399. $sql = "
  400. SELECT t3.jadwal_datang, t3.jadwal_pulang
  401. FROM pegawai t1
  402. LEFT JOIN grup_pegawai t2 USING(id_grup)
  403. LEFT JOIN shift t3 ON t3.id_grup = t2.id_grup
  404. WHERE t1.no_absensi = $pin
  405. ";
  406.  
  407. $query = $this->db->query($sql);
  408. $str_jam_masuk = strtotime($jam_masux);
  409. $str_jam_pulang = strtotime($jam_pulanx);
  410.  
  411. foreach($query->result_array() as $grup){
  412.  
  413. $jam_masuk = strtotime($grup['jadwal_datang']);
  414. $jam_pulang = strtotime($grup['jadwal_pulang']);
  415. $min_jam_masuk = strtotime($grup['jadwal_datang']."-1 hour");
  416. $max_jam_masuk = strtotime($grup['jadwal_pulang']."-1 hour");
  417.  
  418. if($str_jam_masuk > $min_jam_masuk && $str_jam_masuk < $max_jam_masuk){
  419.  
  420. if ($str_jam_masuk > $jam_masuk) {
  421. $output = $str_jam_masuk - $jam_masuk ;
  422.  
  423. $result['telat'] = $output / 60;
  424. }else{
  425. $output = $str_jam_masuk - $jam_masuk ;
  426.  
  427. $result['telat'] = $output / 60;
  428.  
  429. }
  430.  
  431. if ($jam_pulanx != 0) {
  432.  
  433. if ($str_jam_pulang < $jam_pulang) {
  434. $output = $jam_pulang - $str_jam_pulang;
  435. $result['cepat'] = $output / 60;
  436. }else{
  437. $output = $jam_pulang - $str_jam_pulang;
  438. $result['cepat'] = $output / 60;
  439.  
  440. }
  441. }
  442. }
  443.  
  444. }
  445.  
  446. return $result;
  447. }*/
  448.  
  449. }
  450.  
  451. /* End of file Absensi_model.php */
  452. /* Location: ./application/models/Absensi_model.php */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement