Advertisement
vitareinforce

hitungan sp

Feb 13th, 2021
953
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 23.57 KB | None | 0 0
  1. public function api()
  2.     {
  3.         $karyawan = Karyawan::with('presensis', 'group', 'settingpresensi')->orderBy('nama', 'ASC')->get();
  4.         $result = array();
  5.         $closingTime = "00:40:00";
  6.         $queryClosingTime = ClosingTime::find(1)->jangka_waktu;
  7.         $datangAwal = "02:00:00";
  8.         $queryDatangAwal = DatangAwal::find(1)->jangka_waktu;
  9.         if (isset($queryClosingTime)) {
  10.             $closingTime = $queryClosingTime;
  11.         }
  12.         if (isset($queryDatangAwal)) {
  13.             $datangAwal = $queryDatangAwal;
  14.         }
  15.         $settingSp = SettingSP::find(1);
  16.         $settingSp2 = SettingSP::find(2);
  17.         $settingSp3 = SettingSP::find(3);
  18.         for ($i = 0; $i < count($karyawan); $i++) {
  19.             if ($karyawan[$i]->status_karyawan == 'aktif') {
  20.                 $jadwalKaryawan = self::getJadwalKaryawan($karyawan[$i]->id);
  21.                 $karyawan[$i]->setAttribute("closing_time", $closingTime);
  22.                 $karyawan[$i]->setAttribute("data_awal", $datangAwal);
  23.                 $karyawan[$i]->setAttribute("jadwal_karyawan", $jadwalKaryawan);
  24.                 $tanggal_reset = date("Y-m-d",strtotime($karyawan[$i]->tanggal_reset));
  25.                 if($karyawan[$i]->tanggal_reset == null) {
  26.                     $tanggal_reset = date("Y-m-d",strtotime($karyawan[$i]->tanggal_masuk));
  27.                 }
  28.                 if (isset($karyawan[$i]->jadwal_karyawan) && count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']) > 0) {
  29.                     $harikerja = 0;
  30.                     $harisenin = 0;
  31.                     $hariselasa = 0;
  32.                     $harirabu = 0;
  33.                     $harikamis = 0;
  34.                     $harijumat = 0;
  35.                     $harisabtu = 0;
  36.                     $hariminggu = 0;
  37.                     $tidak_hadir = 0;
  38.                     $tidakhadir_senin = 0;
  39.                     $tidakhadir_selasa = 0;
  40.                     $tidakhadir_rabu = 0;
  41.                     $tidakhadir_kamis = 0;
  42.                     $tidakhadir_jumat = 0;
  43.                     $tidakhadir_sabtu = 0;
  44.                     $tidakhadir_minggu = 0;
  45.                     $sp1 = 0;
  46.                     $tanggal_sp1 = null;
  47.                     $sp2 = 0;
  48.                     $tanggal_sp2 = null;
  49.                     $sp3 = 0;
  50.                     $tanggal_sp3 = null;
  51.                     $data_presensi = array();
  52.                     $posisisp = null;
  53.                     if(count($karyawan[$i]->presensis) == 0) {
  54.                         for($j = 0; $j < count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']); $j++) {
  55.                             if($harisenin < 1) {
  56.                                 $harisenin = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_senin'];
  57.                             }
  58.                             if($hariselasa < 1) {
  59.                                 $hariselasa = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_selasa'];
  60.                             }
  61.                             if($harirabu < 1) {
  62.                                 $harirabu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_rabu'];
  63.                             }
  64.                             if($harikamis < 1) {
  65.                                 $harikamis = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_kamis'];
  66.                             }
  67.                             if($harijumat < 1) {
  68.                                 $harijumat = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_jumat'];
  69.                             }
  70.                             if($harisabtu < 1) {
  71.                                 $harisabtu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_sabtu'];
  72.                             }
  73.                             if($hariminggu < 1) {
  74.                                 $hariminggu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_minggu'];
  75.                             }
  76.                         }
  77.                         $harikerja = $harisenin + $hariselasa + $harirabu + $harikamis + $harijumat + $harisabtu + $hariminggu;
  78.                         $minggu = self::datediffInWeeks(date('Y-m-d'), $tanggal_reset);
  79.                         $tidak_hadir = $minggu * $harikerja;
  80.                         if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
  81.                             $sp1 = $sp1 + 1;
  82.                             $posisisp = 1;
  83.                             $tanggal_sp1 = date('Y-m-d', strtotime($tanggal_reset));
  84.                         }
  85.                         if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
  86.                             $sp2 = $sp2 + 1;
  87.                             $posisisp = 2;
  88.                             $tanggal_sp2 = date('Y-m-d', strtotime($tanggal_reset));
  89.                         }
  90.                         if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
  91.                             $sp3 = $sp3 + 1;
  92.                             $posisisp = 3;
  93.                             $tanggal_sp3 = date('Y-m-d', strtotime($tanggal_reset));
  94.                         }
  95.                     }
  96.                     if(count($karyawan[$i]->presensis) > 0) {
  97.                         for($j = 0; $j < count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']); $j++) {
  98.                             if($harisenin < 1) {
  99.                                 $harisenin = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_senin'];
  100.                             }
  101.                             if($hariselasa < 1) {
  102.                                 $hariselasa = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_selasa'];
  103.                             }
  104.                             if($harirabu < 1) {
  105.                                 $harirabu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_rabu'];
  106.                             }
  107.                             if($harikamis < 1) {
  108.                                 $harikamis = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_kamis'];
  109.                             }
  110.                             if($harijumat < 1) {
  111.                                 $harijumat = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_jumat'];
  112.                             }
  113.                             if($harisabtu < 1) {
  114.                                 $harisabtu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_sabtu'];
  115.                             }
  116.                             if($hariminggu < 1) {
  117.                                 $hariminggu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_minggu'];
  118.                             }
  119.                         }
  120.                         $yeartap = null;
  121.                         // looping nya jangan di presensi tapi looping jarak dr tanggal reset dan tanggal hari ini
  122.                         $jarak = Carbon::createFromDate($tanggal_reset)->diffInDays(Carbon::now());
  123.                         // dd($jarak . '-' . $karyawan[$i]->nama . '-'. $tanggal_reset);
  124.                         $tanggal_resetC = Carbon::parse($tanggal_reset);
  125.                         $tanggal = $tanggal_resetC;
  126.                         for($d = 0; $d < $jarak; $d++) {
  127.                             // kemudian presensinya di find
  128.                             $tap = Presensi::whereDate('tanggal_dan_waktu_tap', $tanggal->format('Y-m-d'))->where('karyawan_id', $karyawan[$i]->id)->first()['tanggal_dan_waktu_tap'];
  129.                             $hari = Carbon::parse($tanggal)->format('w');
  130.                             if(($harisenin == 1) && ($hari == 1)) {
  131.                                 // baru cek presensi
  132.                                 if($tap == null) {
  133.                                     $tidakhadir_senin = 1;
  134.                                     if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
  135.                                         $sp1 = $sp1 + 1;
  136.                                         $posisisp = 1;
  137.                                         $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
  138.                                     }
  139.                                     if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
  140.                                         $sp2 = $sp2 + 1;
  141.                                         $posisisp = 2;
  142.                                         $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
  143.                                     }
  144.                                     if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
  145.                                         $sp3 = $sp3 + 1;
  146.                                         $posisisp = 3;
  147.                                         $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
  148.                                     }
  149.                                 } else {
  150.                                     $tidak_hadir = 0;
  151.                                     $tidakhadir_senin = 0;
  152.                                     $posisisp = null;
  153.                                 }
  154.                             } else if(($hariselasa == 1) && ($hari == 2)) {
  155.                                 // baru cek presensi
  156.                                 if($tap == null) {
  157.                                     $tidakhadir_selasa = 1;
  158.                                     if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
  159.                                         $sp1 = $sp1 + 1;
  160.                                         $posisisp = 1;
  161.                                         $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
  162.                                     }
  163.                                     if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
  164.                                         $sp2 = $sp2 + 1;
  165.                                         $posisisp = 2;
  166.                                         $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
  167.                                     }
  168.                                     if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
  169.                                         $sp3 = $sp3 + 1;
  170.                                         $posisisp = 3;
  171.                                         $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
  172.                                     }
  173.                                 } else {
  174.                                     $tidak_hadir = 0;
  175.                                     $tidakhadir_senin = 0;
  176.                                     $tidakhadir_selasa = 0;
  177.                                     $posisisp = null;
  178.                                 }
  179.                             } else if(($harirabu == 1) && ($hari == 3)) {
  180.                                 // baru cek presensi
  181.                                 if($tap == null) {
  182.                                     $tidakhadir_rabu = 1;
  183.                                     if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
  184.                                         $sp1 = $sp1 + 1;
  185.                                         $posisisp = 1;
  186.                                         $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
  187.                                     }
  188.                                     if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
  189.                                         $sp2 = $sp2 + 1;
  190.                                         $posisisp = 2;
  191.                                         $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
  192.                                     }
  193.                                     if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
  194.                                         $sp3 = $sp3 + 1;
  195.                                         $posisisp = 3;
  196.                                         $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
  197.                                     }
  198.                                 } else {
  199.                                     $tidak_hadir = 0;
  200.                                     $tidakhadir_senin = 0;
  201.                                     $tidakhadir_selasa = 0;
  202.                                     $tidakhadir_rabu = 0;
  203.                                     $posisisp = null;
  204.                                 }
  205.                             } else if(($harikamis == 1) && ($hari == 4)) {
  206.                                 // baru cek presensi
  207.                                 if($tap == null) {
  208.                                     $tidakhadir_kamis = 1;
  209.                                     if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
  210.                                         $sp1 = $sp1 + 1;
  211.                                         $posisisp = 1;
  212.                                         $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
  213.                                     }
  214.                                     if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
  215.                                         $sp2 = $sp2 + 1;
  216.                                         $posisisp = 2;
  217.                                         $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
  218.                                     }
  219.                                     if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
  220.                                         $sp3 = $sp3 + 1;
  221.                                         $posisisp = 3;
  222.                                         $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
  223.                                     }
  224.                                 } else {
  225.                                     $tidak_hadir = 0;
  226.                                     $tidakhadir_senin = 0;
  227.                                     $tidakhadir_selasa = 0;
  228.                                     $tidakhadir_rabu = 0;
  229.                                     $tidakhadir_kamis = 0;
  230.                                     $posisisp = null;
  231.                                 }
  232.                             } else if(($harijumat == 1) && ($hari == 5)) {
  233.                                 // baru cek presensi
  234.                                 if($tap == null) {
  235.                                     $tidakhadir_jumat = 1;
  236.                                     if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
  237.                                         $sp1 = $sp1 + 1;
  238.                                         $posisisp = 1;
  239.                                         $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
  240.                                     }
  241.                                     if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
  242.                                         $sp2 = $sp2 + 1;
  243.                                         $posisisp = 2;
  244.                                         $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
  245.                                     }
  246.                                     if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
  247.                                         $sp3 = $sp3 + 1;
  248.                                         $posisisp = 3;
  249.                                         $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
  250.                                     }
  251.                                 } else {
  252.                                     $tidak_hadir = 0;
  253.                                     $tidakhadir_senin = 0;
  254.                                     $tidakhadir_selasa = 0;
  255.                                     $tidakhadir_rabu = 0;
  256.                                     $tidakhadir_kamis = 0;
  257.                                     $tidakhadir_jumat = 0;
  258.                                     $posisisp = null;
  259.                                 }
  260.                             } else if(($harisabtu == 1) && ($hari == 6)) {
  261.                                 // baru cek presensi
  262.                                 if($tap == null) {
  263.                                     $tidakhadir_sabtu = 1;
  264.                                     if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
  265.                                         $sp1 = $sp1 + 1;
  266.                                         $posisisp = 1;
  267.                                         $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
  268.                                     }
  269.                                     if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
  270.                                         $sp2 = $sp2 + 1;
  271.                                         $posisisp = 2;
  272.                                         $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
  273.                                     }
  274.                                     if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
  275.                                         $sp3 = $sp3 + 1;
  276.                                         $posisisp = 3;
  277.                                         $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
  278.                                     }
  279.                                 } else {
  280.                                     $tidak_hadir = 0;
  281.                                     $tidakhadir_senin = 0;
  282.                                     $tidakhadir_selasa = 0;
  283.                                     $tidakhadir_rabu = 0;
  284.                                     $tidakhadir_kamis = 0;
  285.                                     $tidakhadir_jumat = 0;
  286.                                     $tidakhadir_sabtu = 0;
  287.                                     $posisisp = null;
  288.                                 }
  289.                             } else if(($hariminggu == 1) && ($hari == 0)) {
  290.                                 // baru cek presensi
  291.                                 if($tap == null) {
  292.                                     $tidakhadir_minggu = 1;
  293.                                     if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
  294.                                         $sp1 = $sp1 + 1;
  295.                                         $posisisp = 1;
  296.                                         $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
  297.                                     }
  298.                                     if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
  299.                                         $sp2 = $sp2 + 1;
  300.                                         $posisisp = 2;
  301.                                         $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
  302.                                     }
  303.                                     if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
  304.                                         $sp3 = $sp3 + 1;
  305.                                         $posisisp = 3;
  306.                                         $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
  307.                                     }
  308.                                 } else {
  309.                                     $tidak_hadir = 0;
  310.                                     $tidakhadir_senin = 0;
  311.                                     $tidakhadir_selasa = 0;
  312.                                     $tidakhadir_rabu = 0;
  313.                                     $tidakhadir_kamis = 0;
  314.                                     $tidakhadir_jumat = 0;
  315.                                     $tidakhadir_sabtu = 0;
  316.                                     $tidakhadir_minggu = 0;
  317.                                     $posisisp = null;
  318.                                 }
  319.                             }
  320.                             // if($d == $jarak - 2 && $karyawan[$i]->id == 23) {
  321.                             //     dd($karyawan[$i]->nama.' = '.$tap.' = '.$hari.' = '.$tanggal->format('Y-m-d') . ' = ' . $d . ' = ' .$jarak. ' = ' .$tidak_hadir);
  322.                             // }
  323.                             $tidak_hadir = $tidak_hadir + $tidakhadir_senin + $tidakhadir_selasa + $tidakhadir_rabu + $tidakhadir_kamis + $tidakhadir_jumat + $tidakhadir_sabtu + $tidakhadir_minggu;
  324.                             $tanggal = $tanggal_resetC->addDay();
  325.                         }
  326.                         $karyawan[$i]->setAttribute('hari_kerja', $harikerja);
  327.                         $karyawan[$i]->setAttribute('tidak_hadir', $tidak_hadir);
  328.                         $karyawan[$i]->setAttribute('sp1', $sp1);
  329.                         $karyawan[$i]->setAttribute('tanggal_sp1', $tanggal_sp1);
  330.                         $karyawan[$i]->setAttribute('sp2', $sp2);
  331.                         $karyawan[$i]->setAttribute('tanggal_sp2', $tanggal_sp2);
  332.                         $karyawan[$i]->setAttribute('sp3', $sp3);
  333.                         $karyawan[$i]->setAttribute('tanggal_sp3', $tanggal_sp3);
  334.                         $karyawan[$i]->setAttribute('posisi_sp', $posisisp);
  335.  
  336.                         $group = "-";
  337.                         if(isset($karyawan[$i]->group_id)) {
  338.                             $group = $karyawan[$i]->group->nama . "-" . $karyawan[$i]->groupno;
  339.                         }
  340.  
  341.                         if($karyawan[$i]->posisi_sp == null) {
  342.                             $history_presensi = array(
  343.                                 'id_karyawan' => $karyawan[$i]->id,
  344.                                 'tanggal' => '-',
  345.                                 'nama' => $karyawan[$i]->nama,
  346.                                 'group_id'=> $karyawan[$i]->group_id,
  347.                                 'group' => $group,
  348.                                 'tidak_hadir' => $karyawan[$i]->tidak_hadir,
  349.                                 'posisi_sp' => $karyawan[$i]->posisi_sp,
  350.                             );
  351.                         } else if($karyawan[$i]->posisi_sp != null) {
  352.                             $history_presensi = array(
  353.                                 'id_karyawan' => $karyawan[$i]->id,
  354.                                 'tanggal' => $tanggal_sp1,
  355.                                 'nama' => $karyawan[$i]->nama,
  356.                                 'group_id'=> $karyawan[$i]->group_id,
  357.                                 'group' => $group,
  358.                                 'tidak_hadir' => $karyawan[$i]->tidak_hadir,
  359.                                 'posisi_sp' => $karyawan[$i]->posisi_sp,
  360.                             );
  361.                         }
  362.  
  363.                         if($karyawan[$i]->sp2 > 0) {
  364.                             $history_presensi = array(
  365.                                 'id_karyawan' => $karyawan[$i]->id,
  366.                                 'tanggal' => $tanggal_sp2,
  367.                                 'nama' => $karyawan[$i]->nama,
  368.                                 'group_id'=> $karyawan[$i]->group_id,
  369.                                 'group' => $group,
  370.                                 'tidak_hadir' => $karyawan[$i]->tidak_hadir,
  371.                                 'posisi_sp' => $karyawan[$i]->posisi_sp,
  372.                             );
  373.                         }
  374.  
  375.                         if($karyawan[$i]->sp3 > 0) {
  376.                             $history_presensi = array('id_karyawan' => $karyawan[$i]->id,
  377.                                 'id_karyawan' => $karyawan[$i]->id,
  378.                                 'tanggal' => $tanggal_sp3,
  379.                                 'nama' => $karyawan[$i]->nama,
  380.                                 'group_id'=> $karyawan[$i]->group_id,
  381.                                 'group' => $group,
  382.                                 'tidak_hadir' => $karyawan[$i]->tidak_hadir,
  383.                                 'posisi_sp' => $karyawan[$i]->posisi_sp,
  384.                             );
  385.                         }
  386.  
  387.                         array_push($result, $history_presensi);
  388.                     }
  389.  
  390.  
  391.                 }
  392.             }
  393.         }
  394.         return Response::json($result);
  395.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement