jamboljack

Proses Tarik ADMS

Aug 5th, 2021
823
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public function prosesdata()
  2.     {
  3.         // Check ID Terakhir yang tersimpan di LOG
  4.         $this->db      = $this->load->database('sihadir', true); // SIHADIR
  5.         $cekIDLog      = $this->db->limit(1)->order_by('icdat_log_id', 'desc')->get('sihadir_icdat_log')->row();
  6.         $lastcheckinid = $cekIDLog->icdat_log_checkinid;
  7.  
  8.         // Insert ke Log Cronjob
  9.         $dataCronStart = array(
  10.             'cronjob_log_tanggal' => date('Y-m-d'),
  11.             'cronjob_log_start'   => date('H:i:s'),
  12.         );
  13.  
  14.         $this->db->insert('sihadir_log_cronjob', $dataCronStart);
  15.         $cronjob_id = $this->db->insert_id();
  16.  
  17.         // Cari Data di ADMS
  18.         $this->db = $this->load->database('adms', true); // ADMS
  19.         $listADMS = $this->db->order_by('id', 'asc')->select('id, checktime, fid')->get_where('v_checkinout', array('id >' => $lastcheckinid))->result();
  20.         // $listADMS = $this->db->order_by('id', 'asc')->limit(100)->select('id, checktime, fid')->get_where('v_checkinout', array('DATE(checktime)' => '2021-08-02'))->result();
  21.         $lastid = 0;
  22.         $no     = 1;
  23.         foreach ($listADMS as $r) {
  24.             $checkinid = $r->id;
  25.             echo $checkinid . '<br>';
  26.             $userid    = $r->fid;
  27.             $tanggal   = date('Y-m-d', strtotime($r->checktime));
  28.             $this->db  = $this->load->database('sihadir', true); // SIHADIR
  29.             $checkData = $this->db->get_where('sihadir_absensi_log', array('checkinid' => $checkinid))->row();
  30.             if (count($checkData) == 0) {
  31.                 $dataPegawai = $this->db->get_where('v_pegawai', array('pegawai_uid' => $userid))->row();
  32.                 if (count($dataPegawai) > 0) {
  33.                     $pegawai_id   = $dataPegawai->pegawai_id;
  34.                     $pegawai_uid  = $dataPegawai->pegawai_uid;
  35.                     $pegawai_nama = $dataPegawai->pegawai_nama;
  36.                     $opd_id       = $dataPegawai->opd_id;
  37.                     // Cek Jadwal Kerja Pegawai per Tanggal ini
  38.                     // echo $no . '. ' . $tanggal . ' -> ' . $checkinid . ' : ' . $userid . '<br>';
  39.                     $dataJadwal = $this->db->get_where('sihadir_jadwal_kerja', array('pegawai_id' => $pegawai_id, 'jadwal_kerja_tanggal' => $tanggal))->row();
  40.                     if (count($dataJadwal) > 0) {
  41.                         $jam_kerja_id = $dataJadwal->jam_kerja_id;
  42.                         $dataJam      = $this->db->get_where('sihadir_jam_kerja', array('jam_kerja_id' => $jam_kerja_id))->row();
  43.                         if (count($dataJam) > 0) {
  44.                             // Jam Masuk + Toleransi
  45.                             $jmMasuk         = $dataJam->jam_kerja_masuk;
  46.                             $jmTolMasuk      = $dataJam->jam_kerja_toleransi_telat;
  47.                             $jmMasuk_unix    = strtotime(date('Y-m-d') . ' ' . $jmMasuk . ':00');
  48.                             $jmTolMasuk_unix = strtotime(date('Y-m-d') . ' ' . $jmTolMasuk . ':00');
  49.                             $masuk_unix      = strtotime(date('Y-m-d') . ' 00:00:00');
  50.                             if ($jmTolMasuk != '') {
  51.                                 $JamMasuk = date('H:i', ($jmMasuk_unix + ($jmTolMasuk_unix - $masuk_unix)));
  52.                             } else {
  53.                                 $JamMasuk = $jmMasuk;
  54.                             }
  55.  
  56.                             // Jam Pulang + Toleransi
  57.                             $jmPulang         = $dataJam->jam_kerja_pulang;
  58.                             $jmTolPulang      = $dataJam->jam_kerja_toleransi_pulang;
  59.                             $jmPulang_unix    = strtotime(date('Y-m-d') . ' ' . $jmPulang . ':00');
  60.                             $jmTolPulang_unix = strtotime(date('Y-m-d') . ' ' . $jmTolPulang . ':00');
  61.                             $pulang_unix      = strtotime(date('Y-m-d') . ' 00:00:00');
  62.                             if ($jmTolPulang != '') {
  63.                                 $JamPulang = date('H:i', ($jmPulang_unix - ($jmTolPulang_unix - $pulang_unix)));
  64.                             } else {
  65.                                 $JamPulang = $jmPulang;
  66.                             }
  67.  
  68.                             $libur          = $dataJam->jam_kerja_status_libur;
  69.                             $waktuin        = date_create(date('Y-m-d H:i', strtotime($tanggal . ' ' . $JamMasuk)));
  70.                             $waktuinawal    = date_create(date('Y-m-d H:i', strtotime($tanggal . ' ' . $dataJam->jam_kerja_awal_masuk)));
  71.                             $waktuinakhir   = date_create(date('Y-m-d H:i', strtotime($tanggal . ' ' . $dataJam->jam_kerja_akhir_masuk)));
  72.                             $waktuout       = date_create(date('Y-m-d H:i', strtotime($tanggal . ' ' . $JamPulang)));
  73.                             $waktuoutlembur = date_create(date('Y-m-d H:i', strtotime($tanggal . ' ' . $dataJam->jam_kerja_pulang)));
  74.                             $waktuoutawal   = date_create(date('Y-m-d H:i', strtotime($tanggal . ' ' . $dataJam->jam_kerja_awal_pulang)));
  75.                             $waktuoutakhir  = date_create(date('Y-m-d H:i', strtotime($tanggal . ' ' . $dataJam->jam_kerja_akhir_pulang)));
  76.                             $waktuadms      = date_create(date('Y-m-d H:i', strtotime($r->checktime)));
  77.                             $status         = '';
  78.  
  79.                             if ($waktuadms <= $waktuin && $waktuadms >= $waktuinawal && $waktuadms <= $waktuinakhir) {
  80.                                 $status         = 'masuk';
  81.                                 $jammasuk       = date('H:i', strtotime($r->checktime));
  82.                                 $jampulang      = '';
  83.                                 $jamtelat       = '';
  84.                                 $jampulangcepat = '';
  85.                                 $jamlebih       = '';
  86.                                 $keterangan     = '';
  87.                             } else if ($waktuadms > $waktuin && $waktuadms >= $waktuinawal && $waktuadms <= $waktuinakhir) {
  88.                                 $status = 'masuk';
  89.                                 $diff   = date_diff($waktuin, $waktuadms);
  90.                                 $jam    = $diff->h;
  91.                                 $menit  = $diff->i;
  92.                                 if (strlen($jam) == 1) {
  93.                                     $jam = '0' . $jam;
  94.                                 } else {
  95.                                     $jam = $jam;
  96.                                 }
  97.                                 if (strlen($menit) == 1) {
  98.                                     $menit = '0' . $menit;
  99.                                 } else {
  100.                                     $menit = $menit;
  101.                                 }
  102.  
  103.                                 // Jika Libur = Ya, Tidak ada Telat
  104.                                 if ($libur == 1) {
  105.                                     $telat = '';
  106.                                 } else {
  107.                                     $telat = $jam . ':' . $menit;
  108.                                 }
  109.                                 $jammasuk       = date('H:i', strtotime($r->checktime));
  110.                                 $jampulang      = '';
  111.                                 $jamtelat       = ($telat != '00:00' ? $telat : '');
  112.                                 $jampulangcepat = '';
  113.                                 $jamlebih       = '';
  114.                                 $keterangan     = ($libur == 1 ? '' : 'TELAT');
  115.                             } elseif ($waktuadms < $waktuout && $waktuadms >= $waktuoutawal && $waktuadms <= $waktuoutakhir) {
  116.                                 $status = 'pulang';
  117.                                 $diff   = date_diff($waktuout, $waktuadms);
  118.                                 $jam    = $diff->h;
  119.                                 $menit  = $diff->i;
  120.                                 if (strlen($jam) == 1) {
  121.                                     $jam = '0' . $jam;
  122.                                 } else {
  123.                                     $jam = $jam;
  124.                                 }
  125.                                 if (strlen($menit) == 1) {
  126.                                     $menit = '0' . $menit;
  127.                                 } else {
  128.                                     $menit = $menit;
  129.                                 }
  130.  
  131.                                 // Jika Libur = Ya, Tidak ada Pulang Cepat
  132.                                 if ($libur == 1) {
  133.                                     $pulang = '';
  134.                                 } else {
  135.                                     $pulang = $jam . ':' . $menit;
  136.                                 }
  137.                                 $jammasuk       = '';
  138.                                 $jampulang      = date('H:i', strtotime($r->checktime));
  139.                                 $jamtelat       = '';
  140.                                 $jampulangcepat = $pulang;
  141.                                 $jamlebih       = '';
  142.                                 $keterangan     = ($libur == 1 ? '' : 'PULANG CEPAT');
  143.                             } elseif ($waktuadms >= $waktuoutlembur && $waktuadms >= $waktuoutawal && $waktuadms <= $waktuoutakhir) {
  144.                                 $status = 'pulang';
  145.                                 $diff   = date_diff($waktuadms, $waktuout);
  146.                                 $jam    = $diff->h;
  147.                                 $menit  = $diff->i;
  148.                                 if (strlen($jam) == 1) {
  149.                                     $jam = '0' . $jam;
  150.                                 } else {
  151.                                     $jam = $jam;
  152.                                 }
  153.                                 if (strlen($menit) == 1) {
  154.                                     $menit = '0' . $menit;
  155.                                 } else {
  156.                                     $menit = $menit;
  157.                                 }
  158.                                 $lebih          = $jam . ':' . $menit;
  159.                                 $jammasuk       = '';
  160.                                 $jampulang      = date('H:i', strtotime($r->checktime));
  161.                                 $jamtelat       = '';
  162.                                 $jampulangcepat = '';
  163.                                 $jamlebih       = $lebih;
  164.                                 $keterangan     = '';
  165.                             } else {
  166.                                 $jammasuk       = '';
  167.                                 $jampulang      = '';
  168.                                 $jamtelat       = '';
  169.                                 $jampulangcepat = '';
  170.                                 $jamlebih       = '';
  171.                                 $keterangan     = 'BELUM ADA JADWAL';
  172.                             }
  173.  
  174.                             if ($dataJam->jam_kerja_status_libur == 1) {
  175.                                 // Libur
  176.                                 $jamtelat       = '';
  177.                                 $jampulangcepat = '';
  178.                             } else {
  179.                                 $jamtelat       = $jamtelat;
  180.                                 $jampulangcepat = $jampulangcepat;
  181.                             }
  182.  
  183.                             $dataAbsensiLog = $this->db->get_where('sihadir_absensi_log', array('pegawai_id' => $pegawai_id, 'checkinid' => $checkinid))->row();
  184.                             if (count($dataAbsensiLog) == 0) {
  185.                                 // Check Tabel Absensi Log
  186.                                 $data = array(
  187.                                     'checkinid'                    => $checkinid,
  188.                                     'pegawai_id'                   => $pegawai_id,
  189.                                     'opd_id'                       => $opd_id,
  190.                                     'absensi_log_tanggal'          => $tanggal,
  191.                                     'absensi_log_in'               => $jammasuk,
  192.                                     'absensi_log_out'              => $jampulang,
  193.                                     'absensi_log_telat'            => $jamtelat,
  194.                                     'absensi_log_plg_cepat'        => $jampulangcepat,
  195.                                     'absensi_log_jam_lebih'        => $jamlebih,
  196.                                     'absensi_log_keterangan'       => $keterangan,
  197.                                     'absensi_jam_masuk'            => $dataJam->jam_kerja_masuk,
  198.                                     'absensi_jam_pulang'           => $dataJam->jam_kerja_pulang,
  199.                                     'absensi_jam_masuk_mulai'      => $dataJam->jam_kerja_awal_masuk,
  200.                                     'absensi_jam_masuk_akhir'      => $dataJam->jam_kerja_akhir_masuk,
  201.                                     'absensi_jam_pulang_mulai'     => $dataJam->jam_kerja_awal_pulang,
  202.                                     'absensi_jam_pulang_akhir'     => $dataJam->jam_kerja_akhir_pulang,
  203.                                     'absensi_jam_toleransi_telat'  => $dataJam->jam_kerja_toleransi_telat,
  204.                                     'absensi_jam_toleransi_pulang' => $dataJam->jam_kerja_toleransi_pulang,
  205.                                     'absensi_jam_min_lembur'       => $dataJam->jam_kerja_min_lembur,
  206.                                     'absensi_log_update'           => date('Y-m-d H:i:s'),
  207.                                 );
  208.  
  209.                                 $this->db->insert('sihadir_absensi_log', $data);
  210.                             }
  211.  
  212.                             // Insert / Update ke Tabel Absensi sebelum di Posting
  213.                             $dataAbsensi = $this->db->get_where('sihadir_absensi', array('pegawai_id' => $pegawai_id, 'absensi_tanggal' => $tanggal))->row();
  214.                             if (count($dataAbsensi) == 0) {
  215.                                 // Insert
  216.                                 $dataInsert = array(
  217.                                     'pegawai_id'                   => $pegawai_id,
  218.                                     'opd_id'                       => $opd_id,
  219.                                     'absensi_tanggal'              => $tanggal,
  220.                                     'absensi_in'                   => $jammasuk,
  221.                                     'absensi_out'                  => $jampulang,
  222.                                     'absensi_telat'                => $jamtelat,
  223.                                     'absensi_plg_cepat'            => $jampulangcepat,
  224.                                     'absensi_jam_lebih'            => $jamlebih,
  225.                                     'absensi_jam_masuk'            => $dataJam->jam_kerja_masuk,
  226.                                     'absensi_jam_pulang'           => $dataJam->jam_kerja_pulang,
  227.                                     'absensi_jam_masuk_mulai'      => $dataJam->jam_kerja_awal_masuk,
  228.                                     'absensi_jam_masuk_akhir'      => $dataJam->jam_kerja_akhir_masuk,
  229.                                     'absensi_jam_pulang_mulai'     => $dataJam->jam_kerja_awal_pulang,
  230.                                     'absensi_jam_pulang_akhir'     => $dataJam->jam_kerja_akhir_pulang,
  231.                                     'absensi_jam_toleransi_telat'  => $dataJam->jam_kerja_toleransi_telat,
  232.                                     'absensi_jam_toleransi_pulang' => $dataJam->jam_kerja_toleransi_pulang,
  233.                                     'absensi_jam_min_lembur'       => $dataJam->jam_kerja_min_lembur,
  234.                                     'absensi_libur'                => $libur,
  235.                                     'absensi_update'               => date('Y-m-d H:i:s'),
  236.                                 );
  237.  
  238.                                 $this->db->insert('sihadir_absensi', $dataInsert);
  239.                             } else {
  240.                                 // Update Jam Pulang Terakhir
  241.                                 $absensi_id = $dataAbsensi->absensi_id;
  242.                                 if ($status == 'pulang') {
  243.                                     $dataUpdate = array(
  244.                                         'jenis_cuti_id'     => '',
  245.                                         'absensi_out'       => $jampulang,
  246.                                         'absensi_plg_cepat' => $jampulangcepat,
  247.                                         'absensi_jam_lebih' => $jamlebih,
  248.                                         'absensi_update'    => date('Y-m-d H:i:s'),
  249.                                     );
  250.  
  251.                                     $this->db->where('absensi_id', $absensi_id);
  252.                                     $this->db->update('sihadir_absensi', $dataUpdate);
  253.                                 }
  254.                             }
  255.                         } else {
  256.                             $dataAbsensiJadwal = $this->db->get_where('sihadir_absensi_jadwal', array('pegawai_id' => $pegawai_id, 'checkinid' => $checkinid))->row();
  257.                             if (count($dataAbsensiJadwal) == 0) {
  258.                                 // Check Tabel Absensi Jadwal
  259.                                 $data = array(
  260.                                     'checkinid'              => $checkinid,
  261.                                     'pegawai_id'             => $pegawai_id,
  262.                                     'absensi_jadwal_tanggal' => $tanggal,
  263.                                     'absensi_jadwal_jam'     => date('H:i', strtotime($r->checktime)),
  264.                                     'absensi_jadwal_update'  => date('Y-m-d H:i:s'),
  265.                                 );
  266.  
  267.                                 $this->db->insert('sihadir_absensi_jadwal', $data);
  268.                             }
  269.                         }
  270.                     } else {
  271.                         $dataAbsensiJadwal = $this->db->get_where('sihadir_absensi_jadwal', array('pegawai_id' => $pegawai_id, 'checkinid' => $checkinid))->row();
  272.                         if (count($dataAbsensiJadwal) == 0) {
  273.                             // Check Tabel Absensi Jadwal
  274.                             $data = array(
  275.                                 'checkinid'              => $checkinid,
  276.                                 'pegawai_id'             => $pegawai_id,
  277.                                 'absensi_jadwal_tanggal' => $tanggal,
  278.                                 'absensi_jadwal_jam'     => date('H:i', strtotime($r->checktime)),
  279.                                 'absensi_jadwal_update'  => date('Y-m-d H:i:s'),
  280.                             );
  281.  
  282.                             $this->db->insert('sihadir_absensi_jadwal', $data);
  283.                         }
  284.                     }
  285.                 }
  286.             }
  287.  
  288.             $lastid = $checkinid;
  289.  
  290.             // Insert ICDAT LOG
  291.             $dataICDATLog = array(
  292.                 'icdat_log_checkinid' => $checkinid,
  293.                 'icdat_log_update'    => date('Y-m-d H:i:s'),
  294.             );
  295.  
  296.             $this->db->insert('sihadir_icdat_log', $dataICDATLog);
  297.  
  298.             $no++;
  299.         }
  300.  
  301.         $dataCronEnd = array(
  302.             'cronjob_log_tanggal' => date('Y-m-d'),
  303.             'cronjob_log_end'     => date('H:i:s'),
  304.             'cronjob_log_lastid'  => $lastid,
  305.         );
  306.  
  307.         $this->db->where('cronjob_log_id', $cronjob_id);
  308.         $this->db->update('sihadir_log_cronjob', $dataCronEnd);
  309.     }
RAW Paste Data