Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function subGenerateRutin($date, $folderName) {
- try {
- $today = Carbon::parse($date)->format("Y-m-d 00:00:00");
- $awal_minggu = Carbon::parse($date)->startOfWeek()->toDateString();
- $akhir_minggu = Carbon::parse($date)->endOfWeek()->toDateString();
- $minggu_ke = idate('W', strtotime($date));
- $day = Carbon::parse($date)->format('l');
- self::setDate($today);
- self::setAwalMinggu($awal_minggu);
- self::setAkhirMinggu($akhir_minggu);
- self::setMingguKe($minggu_ke);
- $jadwal_hari_ini = $this->getJadwalHariKerja($day);
- $count_file = 0;
- foreach(array_chunk($jadwal_hari_ini->toArray(), 50) as $key => $jadwal) {
- $array_temp = [];
- $exectime = 0;
- $start = microtime(true);
- foreach($jadwal as $j) {
- $status_izin = 0;
- $status_libur = 0;
- $status_izin = $this->statusJadwalIzinGenerator($j['karyawan_id'], $this->getDate());
- $status_libur = $this->statusJadwalLiburGenerator($j['karyawan_id'], $this->getDate());
- $created_at_rutin = Carbon::parse($j['created_at']);
- $tanggal_saat_ini = Carbon::parse($this->getDate())->addDay();
- $karyawan = Karyawan::select('id', 'group_id', 'nama', 'nik', 'status_karyawan')->find($j['karyawan_id']);
- $kph = KalkulasiPoinHarian::where('karyawan_id', $j['karyawan_id'])->whereDate('tanggal_hari_ini', $this->getDate())->first(['id']);
- if($kph == null && $karyawan != null && $status_izin == 0 && $status_libur == 0 && $tanggal_saat_ini->gte($created_at_rutin)) {
- $kph = new KalkulasiPoinHarian();
- $kph->karyawan_id = $karyawan->id;
- $kph->nama = $karyawan->nama;
- $kph->group_id = $karyawan->group_id;
- $kph->nama_group = $karyawan->nik;
- $kph->tanggal_hari_ini = $this->getDate();
- $kph->kalkulasi_poin_rutin = 0;
- $kph->hari = $this->getHari();
- $kph->status_hadir = 0;
- $kph->created_at = Carbon::now()->toDateTimeString();
- $kph->updated_at = Carbon::now()->toDateTimeString();
- $kph->ada_jadwal_rutin = $j['status'];
- $kph->tidak_hadir = 1;
- $kph->ada_izin = false;
- $kph->ada_libur = false;
- $kph->source_rutin = $j['source'];
- $kph->source_id_rutin = $j['source_id'];
- if(isset($j['tanggal_jadwal_rutin_diedit_baru']) && Carbon::parse($today)->lte(Carbon::parse($j['tanggal_jadwal_rutin_diedit_baru']))) {
- $kph->jam_masuk = $j['jam_masuk'];
- $kph->jam_istirahat_mulai = $j['jam_istirahat_mulai'];
- $kph->jam_istirahat_selesai = $j['jam_istirahat_selesai'];
- $kph->jam_pulang = $j['jam_pulang'];
- $kph->checkbox_harikerja_senin = $j['checkbox_harikerja_senin'];
- $kph->checkbox_harikerja_selasa = $j['checkbox_harikerja_selasa'];
- $kph->checkbox_harikerja_rabu = $j['checkbox_harikerja_rabu'];
- $kph->checkbox_harikerja_kamis = $j['checkbox_harikerja_kamis'];
- $kph->checkbox_harikerja_jumat = $j['checkbox_harikerja_jumat'];
- $kph->checkbox_harikerja_sabtu = $j['checkbox_harikerja_sabtu'];
- $kph->checkbox_harikerja_minggu = $j['checkbox_harikerja_minggu'];
- } else if(isset($j['tanggal_jadwal_rutin_diedit_baru']) && Carbon::parse($today)->gt(Carbon::parse($j['tanggal_jadwal_rutin_diedit_baru']))) {
- $kph->jam_masuk = $j['jam_masuk_baru'];
- $kph->jam_istirahat_mulai = $j['jam_istirahat_mulai_baru'];
- $kph->jam_istirahat_selesai = $j['jam_istirahat_selesai_baru'];
- $kph->jam_pulang = $j['jam_pulang_baru'];
- $kph->checkbox_harikerja_senin = $j['checkbox_harikerja_senin_baru'];
- $kph->checkbox_harikerja_selasa = $j['checkbox_harikerja_selasa_baru'];
- $kph->checkbox_harikerja_rabu = $j['checkbox_harikerja_rabu_baru'];
- $kph->checkbox_harikerja_kamis = $j['checkbox_harikerja_kamis_baru'];
- $kph->checkbox_harikerja_jumat = $j['checkbox_harikerja_jumat_baru'];
- $kph->checkbox_harikerja_sabtu = $j['checkbox_harikerja_sabtu_baru'];
- $kph->checkbox_harikerja_minggu = $j['checkbox_harikerja_minggu_baru'];
- } else {
- $kph->jam_masuk = $j['jam_masuk_baru'];
- $kph->jam_istirahat_mulai = $j['jam_istirahat_mulai_baru'];
- $kph->jam_istirahat_selesai = $j['jam_istirahat_selesai_baru'];
- $kph->jam_pulang = $j['jam_pulang_baru'];
- $kph->checkbox_harikerja_senin = $j['checkbox_harikerja_senin_baru'];
- $kph->checkbox_harikerja_selasa = $j['checkbox_harikerja_selasa_baru'];
- $kph->checkbox_harikerja_rabu = $j['checkbox_harikerja_rabu_baru'];
- $kph->checkbox_harikerja_kamis = $j['checkbox_harikerja_kamis_baru'];
- $kph->checkbox_harikerja_jumat = $j['checkbox_harikerja_jumat_baru'];
- $kph->checkbox_harikerja_sabtu = $j['checkbox_harikerja_sabtu_baru'];
- $kph->checkbox_harikerja_minggu = $j['checkbox_harikerja_minggu_baru'];
- }
- array_push($array_temp, $kph->toArray());
- }
- }
- $date_file = Carbon::parse($date)->timestamp;
- $json = json_encode($array_temp);
- $batch_file = fopen($folderName."/batch_".$key."_".$date_file.".txt", "w") or die("Unable to open file!");
- fwrite($batch_file, $json);
- fclose($batch_file);
- $count_file += 1;
- $end = microtime(true);
- // simpan exectime ketika hitungan baru jauh lebih besar
- if($exectime < ($end-$start)) {
- $exectime = ($end-$start);
- }
- $obj_var = array(
- "exectime" => $exectime,
- "count_file" => $count_file
- );
- $obj_var_encode = json_encode($obj_var);
- $exectime_file = fopen("exectime_countfile.txt", "w") or die("Unable to open file!");
- fwrite($exectime_file, $obj_var_encode);
- fclose($exectime_file);
- }
- return response()->json(['status' => 200, 'message' => 'Generate Success']);
- } catch (message $error) {
- $error->errorMessage();
- if ($errorMessage) {
- echo $errorMessage;
- }
- }
- }
- function getJadwalHariKerja($day) {
- return JadwalHariKerja::where(function ($query) use ($day) {
- switch($day) {
- case 'Monday':
- $query->where('checkbox_harikerja_senin_baru', 1)->orWhere('checkbox_harikerja_senin', 1);
- break;
- case 'Tuesday':
- $query->where('checkbox_harikerja_selasa_baru', 1)->orWhere('checkbox_harikerja_selasa', 1);
- break;
- case 'Wednesday':
- $query->where('checkbox_harikerja_rabu_baru', 1)->orWhere('checkbox_harikerja_rabu', 1);
- break;
- case 'Thursday':
- $query->where('checkbox_harikerja_kamis_baru', 1)->orWhere('checkbox_harikerja_kamis', 1);
- break;
- case 'Friday':
- $query->where('checkbox_harikerja_jumat_baru', 1)->orWhere('checkbox_harikerja_jumat', 1);
- break;
- case 'Saturday':
- $query->where('checkbox_harikerja_sabtu_baru', 1)->orWhere('checkbox_harikerja_sabtu', 1);
- break;
- case 'Sunday':
- $query->where('checkbox_harikerja_minggu_baru', 1)->orWhere('checkbox_harikerja_minggu', 1);
- break;
- default:
- break;
- }
- })->get(['id',
- 'source',
- 'source_id',
- 'karyawan_id' ,
- 'status',
- 'tanggal_jadwal_rutin_diedit_baru',
- 'jam_masuk',
- 'jam_istirahat_mulai',
- 'jam_istirahat_selesai',
- 'jam_pulang',
- 'jam_masuk_baru',
- 'jam_istirahat_mulai_baru',
- 'jam_istirahat_selesai_baru',
- 'jam_pulang_baru',
- 'created_at',
- 'checkbox_harikerja_senin',
- 'checkbox_harikerja_selasa',
- 'checkbox_harikerja_rabu',
- 'checkbox_harikerja_kamis',
- 'checkbox_harikerja_jumat',
- 'checkbox_harikerja_sabtu',
- 'checkbox_harikerja_minggu',
- 'checkbox_harikerja_senin_baru',
- 'checkbox_harikerja_selasa_baru',
- 'checkbox_harikerja_rabu_baru',
- 'checkbox_harikerja_kamis_baru',
- 'checkbox_harikerja_jumat_baru',
- 'checkbox_harikerja_sabtu_baru',
- 'checkbox_harikerja_minggu_baru']);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement