vitareinforce

implementasi pseudocode

Oct 18th, 2021 (edited)
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.59 KB | None | 0 0
  1. // cek jadwal ada 1
  2. if(count($jadwal == 1)) {
  3.  
  4. $existing_presensi_2 = Presensi::where('tanggal_dan_waktu_tap', $row[$i]['DateTime'][0])->
  5. where('karyawan_id', $row[$i]['PIN'][0])->
  6. // where('source', $jadwal[$iz]->source)->
  7. // where('source_id', $jadwal[$iz]->source_id)->
  8. // where('jadwal_id', $jadwal[$iz]->jadwal_id)->
  9. first();
  10.  
  11. if(!isset($existing_presensi_2)) {
  12.  
  13. $datang_awal = SettingDatangAwalKhusus::find(1);
  14. $setting_datang_awal = strtotime($datang_awal->datang_awal)-strtotime("00:00:00");
  15.  
  16. $tanggal_mulai = Carbon::parse($jadwal[$iz]->tanggal_mulai)->format('Y-m-d');
  17. $tanggal_selesai = Carbon::parse($jadwal[$iz]->tanggal_selesai)->format('Y-m-d');
  18. $hariini = Carbon::now()->format('Y-m-d');
  19.  
  20. $jam_masuk = $jadwal[$iz]->jam_masuk;
  21. $jam_istirahat_mulai = $jadwal[$iz]->jam_istirahat_mulai;
  22. $jam_istirahat_selesai = $jadwal[$iz]->jam_istirahat_selesai;
  23. $jam_pulang = $jadwal[$iz]->jam_pulang;
  24.  
  25. $before_jam_masuk_previous = date("H:i:s",strtotime($jadwal[0]->jam_masuk)-$setting_datang_awal);
  26. $after_jam_pulang_next = date("H:i:s",strtotime("+5 hours", strtotime($jadwal[0]->jam_pulang)));
  27.  
  28. }
  29. // cek jadwal lebih dari 1
  30. } else if(count($jadwal) > 1) {
  31.  
  32. for($iz = 0; $iz < count($jadwal); $iz++) {
  33.  
  34. $existing_presensi_2 = Presensi::where('tanggal_dan_waktu_tap', $row[$i]['DateTime'][0])->
  35. where('karyawan_id', $row[$i]['PIN'][0])->
  36. // where('source', $jadwal[$iz]->source)->
  37. // where('source_id', $jadwal[$iz]->source_id)->
  38. // where('jadwal_id', $jadwal[$iz]->jadwal_id)->
  39. first();
  40.  
  41. if(!isset($existing_presensi_2)) {
  42. $tanggal_mulai = Carbon::parse($jadwal[$iz]->tanggal_mulai)->format('Y-m-d');
  43. $tanggal_selesai = Carbon::parse($jadwal[$iz]->tanggal_selesai)->format('Y-m-d');
  44. $hariini = Carbon::now()->format('Y-m-d');
  45.  
  46. $jam_masuk = $jadwal[$iz]->jam_masuk;
  47. $jam_istirahat_mulai = $jadwal[$iz]->jam_istirahat_mulai;
  48. $jam_istirahat_selesai = $jadwal[$iz]->jam_istirahat_selesai;
  49. $jam_pulang = $jadwal[$iz]->jam_pulang;
  50.  
  51. /**
  52. * Cek Jadwal sebelumnya dan selanjutnya untuk menentukan jam masuk berikutnya
  53. */
  54. $after_jam_pulang_next = null;
  55. $before_jam_masuk_previous = null;
  56. if(count($jadwal) > 1) {
  57. if($iz == 0) {
  58.  
  59. //ketika jadwal di awal / jadwal pertama
  60. $after_jam_pulang_next = date("H:i:s",strtotime($jadwal[$iz + 1]->jam_masuk)-$toleransi);
  61. $before_jam_masuk_previous = date("H:i:s",strtotime($jadwal[$iz]->$jam_masuk)-$setting_datang_awal);
  62.  
  63. } else if($iz > 0) {
  64. $jarak_pulang = 0;
  65. $jarak_masuk = 0;
  66. // ketika jadwal di tengah tengah / bkn jadwal pertama atw jadwal terakhir
  67. if(isset($jadwal[$iz + 1])) {
  68. // ambil jarak pulang
  69. $jarak_pulang = abs(strtotime($jadwal[$iz]->jam_pulang) - strtotime($jadwal[$iz + 1]->jam_masuk)) / 60;
  70. // ambil jarak masuk
  71. $jarak_masuk = abs(strtotime($jadwal[$iz]->jam_masuk) - strtotime($jadwal[$iz - 1]->jam_pulang)) / 60;
  72.  
  73. if($jarak_masuk >= 150) {
  74. // jika jaraknya >= 2.5 jam maka pake datang awal
  75. $before_jam_masuk_previous = date("H:i:s",strtotime($jadwal[$iz]->jam_masuk)-$setting_datang_awal);
  76. } else {
  77. // jika jaraknya < 2.5 jam maka pake toleransi
  78. $before_jam_masuk_previous1 = date("H:i:s",strtotime($jadwal[$iz]->jam_masuk)-$toleransi);
  79. $before_jam_masuk_previous = date("H:i:s",strtotime("+1 second",strtotime($before_jam_masuk_previous1)));
  80. }
  81.  
  82. if($jarak_pulang >= 150) {
  83. // jika jaraknya >= 2.5 jam maka patok + 2 jam
  84. $after_jam_pulang_next = date("H:i:s",strtotime("+2 hours", strtotime($jadwal[$iz]->jam_pulang)));
  85. } else {
  86. // jika jaraknya < 2.5 jam maka pake toleransi
  87. $after_jam_pulang_next = date("H:i:s",strtotime($jadwal[$iz]->jam_pulang)+$toleransi);
  88. }
  89.  
  90. // bwt jadwal di ujung
  91. } else if(!isset($jadwal[$iz + 1])) {
  92. // ambil jarak pulang
  93. $jarak_pulang = abs(strtotime($jadwal[$iz]->jam_pulang) - strtotime($jadwal[$iz + 1]->jam_masuk)) / 60;
  94. // ambil jarak masuk
  95. $jarak_masuk = abs(strtotime($jadwal[$iz]->jam_masuk) - strtotime($jadwal[$iz - 1]->jam_pulang)) / 60;
  96.  
  97. $after_jam_pulang_next = date("H:i:s",strtotime("+5 hours", strtotime($jadwal[$iz]->jam_pulang)));
  98.  
  99. if($jarak_masuk >= 150) {
  100. // jika jaraknya >= 2.5 jam maka pake datang awal
  101. $before_jam_masuk_previous = date("H:i:s",strtotime($jadwal[$iz]->jam_masuk)-$setting_datang_awal);
  102. } else {
  103. // jika jaraknya < 2.5 jam maka pake toleransi
  104. $before_jam_masuk_previous1 = date("H:i:s",strtotime($jadwal[$iz]->jam_masuk)-$toleransi);
  105. $before_jam_masuk_previous = date("H:i:s",strtotime("+1 second",strtotime($before_jam_masuk_previous1)));
  106. }
  107. }
  108.  
  109.  
  110. }
  111. }
Add Comment
Please, Sign In to add comment