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);
- 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);
- 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;
- $sp1 = 0;
- $sp2 = 0;
- $sp3 = 0;
- $data_presensi = array();
- if(count($karyawan[$i]->presensis) == 0) {
- for($j = 0; $j < count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']); $j++) {
- // ambil 1 trus stop
- 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;
- // ambil jumlah minggu trus kalikan dengan harikerja
- $minggu = (strtotime(date('Y-m-d'), 0) - strtotime($karyawan[$i]->tanggal_reset, 0)) / 604800;
- $tidak_hadir = $minggu * $harikerja;
- } else {
- // cek jadwal, ambil hari kerja
- for($j = 0; $j < count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']); $j++) {
- // ambil 1 trus stop
- 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;
- // loop presensi
- for($p = 0; $p < count($karyawan[$i]->presensis); $j++) {
- // limit presensi berdasarkan tanggal_reset
- $tanggal_tap = date("Y-m-d",strtotime($karyawan[$i]->presensis[$p]->tanggal_dan_waktu_tap));
- $tanggal_reset = date("Y-m-d",strtotime($karyawan[$i]->tanggal_reset));
- if($tanggal_tap > $tanggal_reset) {
- array_push($data_presensi, $karyawan[$i]->presensis[$p]);
- if(($harisenin == 1) && ($tanggal_tap == null)) {
- $tidak_hadir = $tidak_hadir + 1;
- if($tidak_hadir >= $settingSp->sp1) {
- $sp1 = $sp1 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- }
- } else if(($harisenin == 1) && ($tanggal_tap != null)) {
- $tidak_hadir = 0;
- $sp1 = 0;
- $sp2 = 0;
- $sp3 = 0;
- }
- if(($hariselasa == 1) && ($tanggal_tap == null)) {
- $tidak_hadir = $tidak_hadir + 1;
- if($tidak_hadir >= $settingSp->sp1) {
- $sp1 = $sp1 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- }
- } else if(($hariselasa == 1) && ($tanggal_tap != null)) {
- $tidak_hadir = 0;
- $sp1 = 0;
- $sp2 = 0;
- $sp3 = 0;
- }
- if(($harirabu == 1) && ($tanggal_tap == null)) {
- $tidak_hadir = $tidak_hadir + 1;
- if($tidak_hadir >= $settingSp->sp1) {
- $sp1 = $sp1 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- }
- } else if(($harirabu == 1) && ($tanggal_tap != null)) {
- $tidak_hadir = 0;
- $sp1 = 0;
- $sp2 = 0;
- $sp3 = 0;
- }
- if(($harikamis == 1) && ($tanggal_tap == null)) {
- $tidak_hadir = $tidak_hadir + 1;
- if($tidak_hadir >= $settingSp->sp1) {
- $sp1 = $sp1 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- }
- } else if(($harikamis == 1) && ($tanggal_tap != null)) {
- $tidak_hadir = 0;
- $sp1 = 0;
- $sp2 = 0;
- $sp3 = 0;
- }
- if(($harijumat == 1) && ($tanggal_tap == null)) {
- $tidak_hadir = $tidak_hadir + 1;
- if($tidak_hadir >= $settingSp->sp1) {
- $sp1 = $sp1 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- }
- } else if(($harijumat == 1) && ($tanggal_tap != null)) {
- $tidak_hadir = 0;
- $sp1 = 0;
- $sp2 = 0;
- $sp3 = 0;
- }
- if(($harisabtu == 1) && ($tanggal_tap == null)) {
- $tidak_hadir = $tidak_hadir + 1;
- if($tidak_hadir >= $settingSp->sp1) {
- $sp1 = $sp1 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- }
- } else if(($harisabtu == 1) && ($tanggal_tap != null)) {
- $tidak_hadir = 0;
- $sp1 = 0;
- $sp2 = 0;
- $sp3 = 0;
- }
- if(($hariminggu == 1) && ($tanggal_tap == null)) {
- $tidak_hadir = $tidak_hadir + 1;
- if($tidak_hadir >= $settingSp->sp1) {
- $sp1 = $sp1 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
- $sp2 = $sp2 + 1;
- }
- if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
- $sp3 = $sp3 + 1;
- }
- } else if(($hariminggu == 1) && ($tanggal_tap != null)) {
- $tidak_hadir = 0;
- $sp1 = 0;
- $sp2 = 0;
- $sp3 = 0;
- }
- }
- }
- }
- $karyawan[$i]->setAttribute('data_presensi', $data_presensi);
- $karyawan[$i]->setAttribute('hari_kerja', $harikerja);
- $karyawan[$i]->setAttribute('tidak_hadir', $tidak_hadir);
- array_push($result, $karyawan[$i]);
- }
- }
- }
- return Response::json($result);
- }
Add Comment
Please, Sign In to add comment