vitareinforce

fungsi itung sp

Feb 7th, 2021 (edited)
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.44 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. for ($i = 0; $i < count($karyawan); $i++) {
  17. if ($karyawan[$i]->status_karyawan == 'aktif') {
  18. $jadwalKaryawan = self::getJadwalKaryawan($karyawan[$i]->id);
  19. $karyawan[$i]->setAttribute("closing_time", $closingTime);
  20. $karyawan[$i]->setAttribute("data_awal", $datangAwal);
  21. $karyawan[$i]->setAttribute("jadwal_karyawan", $jadwalKaryawan);
  22. if (isset($karyawan[$i]->jadwal_karyawan) && count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']) > 0) {
  23. $harikerja = 0;
  24. $harisenin = 0;
  25. $hariselasa = 0;
  26. $harirabu = 0;
  27. $harikamis = 0;
  28. $harijumat = 0;
  29. $harisabtu = 0;
  30. $hariminggu = 0;
  31. $tidak_hadir = 0;
  32. $sp1 = 0;
  33. $sp2 = 0;
  34. $sp3 = 0;
  35. $data_presensi = array();
  36. if(count($karyawan[$i]->presensis) == 0) {
  37. for($j = 0; $j < count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']); $j++) {
  38. // ambil 1 trus stop
  39. if($harisenin < 1) {
  40. $harisenin = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_senin'];
  41. }
  42. if($hariselasa < 1) {
  43. $hariselasa = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_selasa'];
  44. }
  45. if($harirabu < 1) {
  46. $harirabu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_rabu'];
  47. }
  48. if($harikamis < 1) {
  49. $harikamis = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_kamis'];
  50. }
  51. if($harijumat < 1) {
  52. $harijumat = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_jumat'];
  53. }
  54. if($harisabtu < 1) {
  55. $harisabtu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_sabtu'];
  56. }
  57. if($hariminggu < 1) {
  58. $hariminggu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_minggu'];
  59. }
  60. }
  61. $harikerja = $harisenin + $hariselasa + $harirabu + $harikamis + $harijumat + $harisabtu + $hariminggu;
  62. // ambil jumlah minggu trus kalikan dengan harikerja
  63. $minggu = (strtotime(date('Y-m-d'), 0) - strtotime($karyawan[$i]->tanggal_reset, 0)) / 604800;
  64. $tidak_hadir = $minggu * $harikerja;
  65. } else {
  66. // cek jadwal, ambil hari kerja
  67. for($j = 0; $j < count($karyawan[$i]->jadwal_karyawan['jadwal_masuk']); $j++) {
  68. // ambil 1 trus stop
  69. if($harisenin < 1) {
  70. $harisenin = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_senin'];
  71. }
  72. if($hariselasa < 1) {
  73. $hariselasa = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_selasa'];
  74. }
  75. if($harirabu < 1) {
  76. $harirabu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_rabu'];
  77. }
  78. if($harikamis < 1) {
  79. $harikamis = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_kamis'];
  80. }
  81. if($harijumat < 1) {
  82. $harijumat = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_jumat'];
  83. }
  84. if($harisabtu < 1) {
  85. $harisabtu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_sabtu'];
  86. }
  87. if($hariminggu < 1) {
  88. $hariminggu = $karyawan[$i]->jadwal_karyawan['jadwal_masuk'][$j]['checkbox_harikerja_minggu'];
  89. }
  90. }
  91. $harikerja = $harisenin + $hariselasa + $harirabu + $harikamis + $harijumat + $harisabtu + $hariminggu;
  92. // loop presensi
  93. for($p = 0; $p < count($karyawan[$i]->presensis); $j++) {
  94. // limit presensi berdasarkan tanggal_reset
  95. $tanggal_tap = date("Y-m-d",strtotime($karyawan[$i]->presensis[$p]->tanggal_dan_waktu_tap));
  96. $tanggal_reset = date("Y-m-d",strtotime($karyawan[$i]->tanggal_reset));
  97. if($tanggal_tap > $tanggal_reset) {
  98. array_push($data_presensi, $karyawan[$i]->presensis[$p]);
  99. if(($harisenin == 1) && ($tanggal_tap == null)) {
  100. $tidak_hadir = $tidak_hadir + 1;
  101. if($tidak_hadir >= $settingSp->sp1) {
  102. $sp1 = $sp1 + 1;
  103. }
  104. if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
  105. $sp2 = $sp2 + 1;
  106. }
  107. if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
  108. $sp3 = $sp3 + 1;
  109. }
  110. } else if(($harisenin == 1) && ($tanggal_tap != null)) {
  111. $tidak_hadir = 0;
  112. $sp1 = 0;
  113. $sp2 = 0;
  114. $sp3 = 0;
  115. }
  116. if(($hariselasa == 1) && ($tanggal_tap == null)) {
  117. $tidak_hadir = $tidak_hadir + 1;
  118. if($tidak_hadir >= $settingSp->sp1) {
  119. $sp1 = $sp1 + 1;
  120. }
  121. if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
  122. $sp2 = $sp2 + 1;
  123. }
  124. if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
  125. $sp3 = $sp3 + 1;
  126. }
  127. } else if(($hariselasa == 1) && ($tanggal_tap != null)) {
  128. $tidak_hadir = 0;
  129. $sp1 = 0;
  130. $sp2 = 0;
  131. $sp3 = 0;
  132. }
  133. if(($harirabu == 1) && ($tanggal_tap == null)) {
  134. $tidak_hadir = $tidak_hadir + 1;
  135. if($tidak_hadir >= $settingSp->sp1) {
  136. $sp1 = $sp1 + 1;
  137. }
  138. if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
  139. $sp2 = $sp2 + 1;
  140. }
  141. if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
  142. $sp3 = $sp3 + 1;
  143. }
  144. } else if(($harirabu == 1) && ($tanggal_tap != null)) {
  145. $tidak_hadir = 0;
  146. $sp1 = 0;
  147. $sp2 = 0;
  148. $sp3 = 0;
  149. }
  150. if(($harikamis == 1) && ($tanggal_tap == null)) {
  151. $tidak_hadir = $tidak_hadir + 1;
  152. if($tidak_hadir >= $settingSp->sp1) {
  153. $sp1 = $sp1 + 1;
  154. }
  155. if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
  156. $sp2 = $sp2 + 1;
  157. }
  158. if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
  159. $sp3 = $sp3 + 1;
  160. }
  161. } else if(($harikamis == 1) && ($tanggal_tap != null)) {
  162. $tidak_hadir = 0;
  163. $sp1 = 0;
  164. $sp2 = 0;
  165. $sp3 = 0;
  166. }
  167. if(($harijumat == 1) && ($tanggal_tap == null)) {
  168. $tidak_hadir = $tidak_hadir + 1;
  169. if($tidak_hadir >= $settingSp->sp1) {
  170. $sp1 = $sp1 + 1;
  171. }
  172. if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
  173. $sp2 = $sp2 + 1;
  174. }
  175. if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
  176. $sp3 = $sp3 + 1;
  177. }
  178. } else if(($harijumat == 1) && ($tanggal_tap != null)) {
  179. $tidak_hadir = 0;
  180. $sp1 = 0;
  181. $sp2 = 0;
  182. $sp3 = 0;
  183. }
  184. if(($harisabtu == 1) && ($tanggal_tap == null)) {
  185. $tidak_hadir = $tidak_hadir + 1;
  186. if($tidak_hadir >= $settingSp->sp1) {
  187. $sp1 = $sp1 + 1;
  188. }
  189. if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
  190. $sp2 = $sp2 + 1;
  191. }
  192. if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
  193. $sp3 = $sp3 + 1;
  194. }
  195. } else if(($harisabtu == 1) && ($tanggal_tap != null)) {
  196. $tidak_hadir = 0;
  197. $sp1 = 0;
  198. $sp2 = 0;
  199. $sp3 = 0;
  200. }
  201. if(($hariminggu == 1) && ($tanggal_tap == null)) {
  202. $tidak_hadir = $tidak_hadir + 1;
  203. if($tidak_hadir >= $settingSp->sp1) {
  204. $sp1 = $sp1 + 1;
  205. }
  206. if(($tidak_hadir >= $settingSp->sp2) && ($sp1 > 0)) {
  207. $sp2 = $sp2 + 1;
  208. }
  209. if(($tidak_hadir >= $settingSp->sp3) && ($sp2 > 0)) {
  210. $sp3 = $sp3 + 1;
  211. }
  212. } else if(($hariminggu == 1) && ($tanggal_tap != null)) {
  213. $tidak_hadir = 0;
  214. $sp1 = 0;
  215. $sp2 = 0;
  216. $sp3 = 0;
  217. }
  218. }
  219. }
  220. }
  221. $karyawan[$i]->setAttribute('data_presensi', $data_presensi);
  222. $karyawan[$i]->setAttribute('hari_kerja', $harikerja);
  223. $karyawan[$i]->setAttribute('tidak_hadir', $tidak_hadir);
  224. array_push($result, $karyawan[$i]);
  225. }
  226. }
  227. }
  228. return Response::json($result);
  229. }
Add Comment
Please, Sign In to add comment