Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function api()
- {
- $karyawan = Karyawan::with('presensis', 'group', 'settingpresensi')->orderBy('nama', 'ASC')->get();
- $result = array();
- $closingTime = "00:40:00";
- $queryClosingTime = ClosingTime::find(1)->jangka_waktu;
- $datangAwal = "02:00:00";
- $queryDatangAwal = DatangAwal::find(1)->jangka_waktu;
- if (isset($queryClosingTime)) {
- $closingTime = $queryClosingTime;
- }
- if (isset($queryDatangAwal)) {
- $datangAwal = $queryDatangAwal;
- }
- $settingSp = SettingSP::find(1);
- $settingSp2 = SettingSP::find(2);
- $settingSp3 = SettingSP::find(3);
- for ($i = 0; $i < count($karyawan); $i++) {
- if ($karyawan[$i]->status_karyawan == 'aktif') {
- $jadwalKaryawan = self::getJadwalKaryawan($karyawan[$i]->id);
- $karyawan[$i]->setAttribute("closing_time", $closingTime);
- $karyawan[$i]->setAttribute("data_awal", $datangAwal);
- $karyawan[$i]->setAttribute("jadwal_karyawan", $jadwalKaryawan);
- $tanggal_reset = date("Y-m-d",strtotime($karyawan[$i]->tanggal_reset));
- if($karyawan[$i]->tanggal_reset == null) {
- $tanggal_reset = date("Y-m-d",strtotime($karyawan[$i]->tanggal_masuk));
- }
- if (isset($karyawan[$i]->jadwal_karyawan) && count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']) > 0) {
- $harikerja = 0;
- $harisenin = 0;
- $hariselasa = 0;
- $harirabu = 0;
- $harikamis = 0;
- $harijumat = 0;
- $harisabtu = 0;
- $hariminggu = 0;
- $tidak_hadir = 0;
- $tidakhadir_senin = 0;
- $tidakhadir_selasa = 0;
- $tidakhadir_rabu = 0;
- $tidakhadir_kamis = 0;
- $tidakhadir_jumat = 0;
- $tidakhadir_sabtu = 0;
- $tidakhadir_minggu = 0;
- $sp1 = 0;
- $tanggal_sp1 = null;
- $sp2 = 0;
- $tanggal_sp2 = null;
- $sp3 = 0;
- $tanggal_sp3 = null;
- $data_presensi = array();
- $posisisp = null;
- if(count($karyawan[$i]->presensis) == 0) {
- for($j = 0; $j < count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']); $j++) {
- if($harisenin < 1) {
- $harisenin = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_senin'];
- }
- if($hariselasa < 1) {
- $hariselasa = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_selasa'];
- }
- if($harirabu < 1) {
- $harirabu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_rabu'];
- }
- if($harikamis < 1) {
- $harikamis = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_kamis'];
- }
- if($harijumat < 1) {
- $harijumat = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_jumat'];
- }
- if($harisabtu < 1) {
- $harisabtu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_sabtu'];
- }
- if($hariminggu < 1) {
- $hariminggu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_minggu'];
- }
- }
- $harikerja = $harisenin + $hariselasa + $harirabu + $harikamis + $harijumat + $harisabtu + $hariminggu;
- $minggu = self::datediffInWeeks(date('Y-m-d'), $tanggal_reset);
- $tidak_hadir = $minggu * $harikerja;
- if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
- $sp1 = $sp1 + 1;
- $posisisp = 1;
- $tanggal_sp1 = date('Y-m-d', strtotime($tanggal_reset));
- }
- if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- $posisisp = 2;
- $tanggal_sp2 = date('Y-m-d', strtotime($tanggal_reset));
- }
- if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- $posisisp = 3;
- $tanggal_sp3 = date('Y-m-d', strtotime($tanggal_reset));
- }
- }
- if(count($karyawan[$i]->presensis) > 0) {
- for($j = 0; $j < count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']); $j++) {
- if($harisenin < 1) {
- $harisenin = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_senin'];
- }
- if($hariselasa < 1) {
- $hariselasa = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_selasa'];
- }
- if($harirabu < 1) {
- $harirabu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_rabu'];
- }
- if($harikamis < 1) {
- $harikamis = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_kamis'];
- }
- if($harijumat < 1) {
- $harijumat = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_jumat'];
- }
- if($harisabtu < 1) {
- $harisabtu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_sabtu'];
- }
- if($hariminggu < 1) {
- $hariminggu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_minggu'];
- }
- }
- $yeartap = null;
- // looping nya jangan di presensi tapi looping jarak dr tanggal reset dan tanggal hari ini
- $jarak = Carbon::createFromDate($tanggal_reset)->diffInDays(Carbon::now());
- // dd($jarak . '-' . $karyawan[$i]->nama . '-'. $tanggal_reset);
- $tanggal_resetC = Carbon::parse($tanggal_reset);
- $tanggal = $tanggal_resetC;
- for($d = 0; $d < $jarak; $d++) {
- // kemudian presensinya di find
- $tap = Presensi::whereDate('tanggal_dan_waktu_tap', $tanggal->format('Y-m-d'))->where('karyawan_id', $karyawan[$i]->id)->first()['tanggal_dan_waktu_tap'];
- $hari = Carbon::parse($tanggal)->format('w');
- if(($harisenin == 1) && ($hari == 1)) {
- // baru cek presensi
- if($tap == null) {
- $tidakhadir_senin = 1;
- if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
- $sp1 = $sp1 + 1;
- $posisisp = 1;
- $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- $posisisp = 2;
- $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- $posisisp = 3;
- $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
- }
- } else {
- $tidak_hadir = 0;
- $tidakhadir_senin = 0;
- $posisisp = null;
- }
- } else if(($hariselasa == 1) && ($hari == 2)) {
- // baru cek presensi
- if($tap == null) {
- $tidakhadir_selasa = 1;
- if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
- $sp1 = $sp1 + 1;
- $posisisp = 1;
- $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- $posisisp = 2;
- $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- $posisisp = 3;
- $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
- }
- } else {
- $tidak_hadir = 0;
- $tidakhadir_senin = 0;
- $tidakhadir_selasa = 0;
- $posisisp = null;
- }
- } else if(($harirabu == 1) && ($hari == 3)) {
- // baru cek presensi
- if($tap == null) {
- $tidakhadir_rabu = 1;
- if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
- $sp1 = $sp1 + 1;
- $posisisp = 1;
- $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- $posisisp = 2;
- $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- $posisisp = 3;
- $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
- }
- } else {
- $tidak_hadir = 0;
- $tidakhadir_senin = 0;
- $tidakhadir_selasa = 0;
- $tidakhadir_rabu = 0;
- $posisisp = null;
- }
- } else if(($harikamis == 1) && ($hari == 4)) {
- // baru cek presensi
- if($tap == null) {
- $tidakhadir_kamis = 1;
- if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
- $sp1 = $sp1 + 1;
- $posisisp = 1;
- $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- $posisisp = 2;
- $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- $posisisp = 3;
- $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
- }
- } else {
- $tidak_hadir = 0;
- $tidakhadir_senin = 0;
- $tidakhadir_selasa = 0;
- $tidakhadir_rabu = 0;
- $tidakhadir_kamis = 0;
- $posisisp = null;
- }
- } else if(($harijumat == 1) && ($hari == 5)) {
- // baru cek presensi
- if($tap == null) {
- $tidakhadir_jumat = 1;
- if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
- $sp1 = $sp1 + 1;
- $posisisp = 1;
- $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- $posisisp = 2;
- $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- $posisisp = 3;
- $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
- }
- } else {
- $tidak_hadir = 0;
- $tidakhadir_senin = 0;
- $tidakhadir_selasa = 0;
- $tidakhadir_rabu = 0;
- $tidakhadir_kamis = 0;
- $tidakhadir_jumat = 0;
- $posisisp = null;
- }
- } else if(($harisabtu == 1) && ($hari == 6)) {
- // baru cek presensi
- if($tap == null) {
- $tidakhadir_sabtu = 1;
- if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
- $sp1 = $sp1 + 1;
- $posisisp = 1;
- $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- $posisisp = 2;
- $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- $posisisp = 3;
- $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
- }
- } else {
- $tidak_hadir = 0;
- $tidakhadir_senin = 0;
- $tidakhadir_selasa = 0;
- $tidakhadir_rabu = 0;
- $tidakhadir_kamis = 0;
- $tidakhadir_jumat = 0;
- $tidakhadir_sabtu = 0;
- $posisisp = null;
- }
- } else if(($hariminggu == 1) && ($hari == 0)) {
- // baru cek presensi
- if($tap == null) {
- $tidakhadir_minggu = 1;
- if($tidak_hadir >= $settingSp->jumlah_ketidakhadiran*1) {
- $sp1 = $sp1 + 1;
- $posisisp = 1;
- $tanggal_sp1 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp2->jumlah_ketidakhadiran*1) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- $posisisp = 2;
- $tanggal_sp2 = date('Y-m-d', strtotime($tanggal));
- }
- if(($tidak_hadir >= $settingSp3->jumlah_ketidakhadiran*1) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- $posisisp = 3;
- $tanggal_sp3 = date('Y-m-d', strtotime($tanggal));
- }
- } else {
- $tidak_hadir = 0;
- $tidakhadir_senin = 0;
- $tidakhadir_selasa = 0;
- $tidakhadir_rabu = 0;
- $tidakhadir_kamis = 0;
- $tidakhadir_jumat = 0;
- $tidakhadir_sabtu = 0;
- $tidakhadir_minggu = 0;
- $posisisp = null;
- }
- }
- // if($d == $jarak - 2 && $karyawan[$i]->id == 23) {
- // dd($karyawan[$i]->nama.' = '.$tap.' = '.$hari.' = '.$tanggal->format('Y-m-d') . ' = ' . $d . ' = ' .$jarak. ' = ' .$tidak_hadir);
- // }
- $tidak_hadir = $tidak_hadir + $tidakhadir_senin + $tidakhadir_selasa + $tidakhadir_rabu + $tidakhadir_kamis + $tidakhadir_jumat + $tidakhadir_sabtu + $tidakhadir_minggu;
- $tanggal = $tanggal_resetC->addDay();
- }
- $karyawan[$i]->setAttribute('hari_kerja', $harikerja);
- $karyawan[$i]->setAttribute('tidak_hadir', $tidak_hadir);
- $karyawan[$i]->setAttribute('sp1', $sp1);
- $karyawan[$i]->setAttribute('tanggal_sp1', $tanggal_sp1);
- $karyawan[$i]->setAttribute('sp2', $sp2);
- $karyawan[$i]->setAttribute('tanggal_sp2', $tanggal_sp2);
- $karyawan[$i]->setAttribute('sp3', $sp3);
- $karyawan[$i]->setAttribute('tanggal_sp3', $tanggal_sp3);
- $karyawan[$i]->setAttribute('posisi_sp', $posisisp);
- $group = "-";
- if(isset($karyawan[$i]->group_id)) {
- $group = $karyawan[$i]->group->nama . "-" . $karyawan[$i]->groupno;
- }
- if($karyawan[$i]->posisi_sp == null) {
- $history_presensi = array(
- 'id_karyawan' => $karyawan[$i]->id,
- 'tanggal' => '-',
- 'nama' => $karyawan[$i]->nama,
- 'group_id'=> $karyawan[$i]->group_id,
- 'group' => $group,
- 'tidak_hadir' => $karyawan[$i]->tidak_hadir,
- 'posisi_sp' => $karyawan[$i]->posisi_sp,
- );
- } else if($karyawan[$i]->posisi_sp != null) {
- $history_presensi = array(
- 'id_karyawan' => $karyawan[$i]->id,
- 'tanggal' => $tanggal_sp1,
- 'nama' => $karyawan[$i]->nama,
- 'group_id'=> $karyawan[$i]->group_id,
- 'group' => $group,
- 'tidak_hadir' => $karyawan[$i]->tidak_hadir,
- 'posisi_sp' => $karyawan[$i]->posisi_sp,
- );
- }
- if($karyawan[$i]->sp2 > 0) {
- $history_presensi = array(
- 'id_karyawan' => $karyawan[$i]->id,
- 'tanggal' => $tanggal_sp2,
- 'nama' => $karyawan[$i]->nama,
- 'group_id'=> $karyawan[$i]->group_id,
- 'group' => $group,
- 'tidak_hadir' => $karyawan[$i]->tidak_hadir,
- 'posisi_sp' => $karyawan[$i]->posisi_sp,
- );
- }
- if($karyawan[$i]->sp3 > 0) {
- $history_presensi = array('id_karyawan' => $karyawan[$i]->id,
- 'id_karyawan' => $karyawan[$i]->id,
- 'tanggal' => $tanggal_sp3,
- 'nama' => $karyawan[$i]->nama,
- 'group_id'=> $karyawan[$i]->group_id,
- 'group' => $group,
- 'tidak_hadir' => $karyawan[$i]->tidak_hadir,
- 'posisi_sp' => $karyawan[$i]->posisi_sp,
- );
- }
- array_push($result, $history_presensi);
- }
- }
- }
- }
- return Response::json($result);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement