Advertisement
vitareinforce

generateRutin

Feb 26th, 2024
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.66 KB | None | 0 0
  1. public function subGenerateRutin($date, $folderName) {
  2.  
  3. try {
  4. $today = Carbon::parse($date)->format("Y-m-d 00:00:00");
  5. $awal_minggu = Carbon::parse($date)->startOfWeek()->toDateString();
  6. $akhir_minggu = Carbon::parse($date)->endOfWeek()->toDateString();
  7. $minggu_ke = idate('W', strtotime($date));
  8. $day = Carbon::parse($date)->format('l');
  9.  
  10. self::setDate($today);
  11. self::setAwalMinggu($awal_minggu);
  12. self::setAkhirMinggu($akhir_minggu);
  13. self::setMingguKe($minggu_ke);
  14.  
  15. $jadwal_hari_ini = $this->getJadwalHariKerja($day);
  16.  
  17. $count_file = 0;
  18.  
  19. foreach(array_chunk($jadwal_hari_ini->toArray(), 50) as $key => $jadwal) {
  20. $array_temp = [];
  21. $exectime = 0;
  22.  
  23. $start = microtime(true);
  24. foreach($jadwal as $j) {
  25. $status_izin = 0;
  26. $status_libur = 0;
  27.  
  28. $status_izin = $this->statusJadwalIzinGenerator($j['karyawan_id'], $this->getDate());
  29. $status_libur = $this->statusJadwalLiburGenerator($j['karyawan_id'], $this->getDate());
  30.  
  31. $created_at_rutin = Carbon::parse($j['created_at']);
  32. $tanggal_saat_ini = Carbon::parse($this->getDate())->addDay();
  33.  
  34. $karyawan = Karyawan::select('id', 'group_id', 'nama', 'nik', 'status_karyawan')->find($j['karyawan_id']);
  35. $kph = KalkulasiPoinHarian::where('karyawan_id', $j['karyawan_id'])->whereDate('tanggal_hari_ini', $this->getDate())->first(['id']);
  36. if($kph == null && $karyawan != null && $status_izin == 0 && $status_libur == 0 && $tanggal_saat_ini->gte($created_at_rutin)) {
  37.  
  38. $kph = new KalkulasiPoinHarian();
  39. $kph->karyawan_id = $karyawan->id;
  40. $kph->nama = $karyawan->nama;
  41. $kph->group_id = $karyawan->group_id;
  42. $kph->nama_group = $karyawan->nik;
  43. $kph->tanggal_hari_ini = $this->getDate();
  44. $kph->kalkulasi_poin_rutin = 0;
  45. $kph->hari = $this->getHari();
  46. $kph->status_hadir = 0;
  47.  
  48. $kph->created_at = Carbon::now()->toDateTimeString();
  49. $kph->updated_at = Carbon::now()->toDateTimeString();
  50.  
  51. $kph->ada_jadwal_rutin = $j['status'];
  52. $kph->tidak_hadir = 1;
  53. $kph->ada_izin = false;
  54. $kph->ada_libur = false;
  55. $kph->source_rutin = $j['source'];
  56. $kph->source_id_rutin = $j['source_id'];
  57.  
  58. if(isset($j['tanggal_jadwal_rutin_diedit_baru']) && Carbon::parse($today)->lte(Carbon::parse($j['tanggal_jadwal_rutin_diedit_baru']))) {
  59. $kph->jam_masuk = $j['jam_masuk'];
  60. $kph->jam_istirahat_mulai = $j['jam_istirahat_mulai'];
  61. $kph->jam_istirahat_selesai = $j['jam_istirahat_selesai'];
  62. $kph->jam_pulang = $j['jam_pulang'];
  63.  
  64. $kph->checkbox_harikerja_senin = $j['checkbox_harikerja_senin'];
  65. $kph->checkbox_harikerja_selasa = $j['checkbox_harikerja_selasa'];
  66. $kph->checkbox_harikerja_rabu = $j['checkbox_harikerja_rabu'];
  67. $kph->checkbox_harikerja_kamis = $j['checkbox_harikerja_kamis'];
  68. $kph->checkbox_harikerja_jumat = $j['checkbox_harikerja_jumat'];
  69. $kph->checkbox_harikerja_sabtu = $j['checkbox_harikerja_sabtu'];
  70. $kph->checkbox_harikerja_minggu = $j['checkbox_harikerja_minggu'];
  71. } else if(isset($j['tanggal_jadwal_rutin_diedit_baru']) && Carbon::parse($today)->gt(Carbon::parse($j['tanggal_jadwal_rutin_diedit_baru']))) {
  72. $kph->jam_masuk = $j['jam_masuk_baru'];
  73. $kph->jam_istirahat_mulai = $j['jam_istirahat_mulai_baru'];
  74. $kph->jam_istirahat_selesai = $j['jam_istirahat_selesai_baru'];
  75. $kph->jam_pulang = $j['jam_pulang_baru'];
  76.  
  77. $kph->checkbox_harikerja_senin = $j['checkbox_harikerja_senin_baru'];
  78. $kph->checkbox_harikerja_selasa = $j['checkbox_harikerja_selasa_baru'];
  79. $kph->checkbox_harikerja_rabu = $j['checkbox_harikerja_rabu_baru'];
  80. $kph->checkbox_harikerja_kamis = $j['checkbox_harikerja_kamis_baru'];
  81. $kph->checkbox_harikerja_jumat = $j['checkbox_harikerja_jumat_baru'];
  82. $kph->checkbox_harikerja_sabtu = $j['checkbox_harikerja_sabtu_baru'];
  83. $kph->checkbox_harikerja_minggu = $j['checkbox_harikerja_minggu_baru'];
  84. } else {
  85. $kph->jam_masuk = $j['jam_masuk_baru'];
  86. $kph->jam_istirahat_mulai = $j['jam_istirahat_mulai_baru'];
  87. $kph->jam_istirahat_selesai = $j['jam_istirahat_selesai_baru'];
  88. $kph->jam_pulang = $j['jam_pulang_baru'];
  89.  
  90. $kph->checkbox_harikerja_senin = $j['checkbox_harikerja_senin_baru'];
  91. $kph->checkbox_harikerja_selasa = $j['checkbox_harikerja_selasa_baru'];
  92. $kph->checkbox_harikerja_rabu = $j['checkbox_harikerja_rabu_baru'];
  93. $kph->checkbox_harikerja_kamis = $j['checkbox_harikerja_kamis_baru'];
  94. $kph->checkbox_harikerja_jumat = $j['checkbox_harikerja_jumat_baru'];
  95. $kph->checkbox_harikerja_sabtu = $j['checkbox_harikerja_sabtu_baru'];
  96. $kph->checkbox_harikerja_minggu = $j['checkbox_harikerja_minggu_baru'];
  97. }
  98.  
  99. array_push($array_temp, $kph->toArray());
  100. }
  101. }
  102.  
  103. $date_file = Carbon::parse($date)->timestamp;
  104. $json = json_encode($array_temp);
  105. $batch_file = fopen($folderName."/batch_".$key."_".$date_file.".txt", "w") or die("Unable to open file!");
  106. fwrite($batch_file, $json);
  107. fclose($batch_file);
  108.  
  109. $count_file += 1;
  110. $end = microtime(true);
  111.  
  112. // simpan exectime ketika hitungan baru jauh lebih besar
  113. if($exectime < ($end-$start)) {
  114. $exectime = ($end-$start);
  115. }
  116.  
  117. $obj_var = array(
  118. "exectime" => $exectime,
  119. "count_file" => $count_file
  120. );
  121.  
  122. $obj_var_encode = json_encode($obj_var);
  123. $exectime_file = fopen("exectime_countfile.txt", "w") or die("Unable to open file!");
  124. fwrite($exectime_file, $obj_var_encode);
  125. fclose($exectime_file);
  126. }
  127.  
  128. return response()->json(['status' => 200, 'message' => 'Generate Success']);
  129.  
  130. } catch (message $error) {
  131. $error->errorMessage();
  132. if ($errorMessage) {
  133. echo $errorMessage;
  134. }
  135. }
  136.  
  137. }
  138.  
  139. function getJadwalHariKerja($day) {
  140. return JadwalHariKerja::where(function ($query) use ($day) {
  141. switch($day) {
  142. case 'Monday':
  143. $query->where('checkbox_harikerja_senin_baru', 1)->orWhere('checkbox_harikerja_senin', 1);
  144. break;
  145. case 'Tuesday':
  146. $query->where('checkbox_harikerja_selasa_baru', 1)->orWhere('checkbox_harikerja_selasa', 1);
  147. break;
  148. case 'Wednesday':
  149. $query->where('checkbox_harikerja_rabu_baru', 1)->orWhere('checkbox_harikerja_rabu', 1);
  150. break;
  151. case 'Thursday':
  152. $query->where('checkbox_harikerja_kamis_baru', 1)->orWhere('checkbox_harikerja_kamis', 1);
  153. break;
  154. case 'Friday':
  155. $query->where('checkbox_harikerja_jumat_baru', 1)->orWhere('checkbox_harikerja_jumat', 1);
  156. break;
  157. case 'Saturday':
  158. $query->where('checkbox_harikerja_sabtu_baru', 1)->orWhere('checkbox_harikerja_sabtu', 1);
  159. break;
  160. case 'Sunday':
  161. $query->where('checkbox_harikerja_minggu_baru', 1)->orWhere('checkbox_harikerja_minggu', 1);
  162. break;
  163. default:
  164. break;
  165. }
  166.  
  167. })->get(['id',
  168. 'source',
  169. 'source_id',
  170. 'karyawan_id' ,
  171. 'status',
  172. 'tanggal_jadwal_rutin_diedit_baru',
  173. 'jam_masuk',
  174. 'jam_istirahat_mulai',
  175. 'jam_istirahat_selesai',
  176. 'jam_pulang',
  177. 'jam_masuk_baru',
  178. 'jam_istirahat_mulai_baru',
  179. 'jam_istirahat_selesai_baru',
  180. 'jam_pulang_baru',
  181. 'created_at',
  182. 'checkbox_harikerja_senin',
  183. 'checkbox_harikerja_selasa',
  184. 'checkbox_harikerja_rabu',
  185. 'checkbox_harikerja_kamis',
  186. 'checkbox_harikerja_jumat',
  187. 'checkbox_harikerja_sabtu',
  188. 'checkbox_harikerja_minggu',
  189. 'checkbox_harikerja_senin_baru',
  190. 'checkbox_harikerja_selasa_baru',
  191. 'checkbox_harikerja_rabu_baru',
  192. 'checkbox_harikerja_kamis_baru',
  193. 'checkbox_harikerja_jumat_baru',
  194. 'checkbox_harikerja_sabtu_baru',
  195. 'checkbox_harikerja_minggu_baru']);
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement