· 3 years ago · Mar 29, 2022, 04:50 AM
1 public function import()
2 {
3 $post_hari = $this->request->getVar('hari');
4 $post_datang = $this->request->getVar('datang');
5 $post_pulang = $this->request->getVar('pulang');
6 foreach ($post_hari as $idx => $val) {
7 $all_array[] = [$val, $post_datang[$idx], $post_pulang[$idx]];
8 $builder = $this->db->table('jadwal');
9 $builder->set('datang', $post_datang[$idx]);
10 $builder->set('pulang', $post_pulang[$idx]);
11 $builder->where('hari', $val);
12 $builder->update();
13 }
14 // dd($all_array);
15 // foreach ($all_array as $aa) {
16
17 // }
18 $inputFileName = $this->request->getFile('file_excel');
19 $ext = $inputFileName->getClientExtension();
20
21 // inisialisasi variable kosong
22 $temp_periode = '';
23 $rowuserid = array();
24 $rowtanggal = array();
25 $rowlog = array();
26 $rowhasilhitung = array();
27 $iduserarray = array();
28 $namaarray = array();
29 $datauser = array();
30 $datauserlog = array();
31
32 /** Create a new Xls Reader **/
33 if ($ext == 'xls') {
34 $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
35 } else {
36 $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
37 }
38 // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();
39 // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Ods();
40 // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();
41 // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Gnumeric();
42 // $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
43 /** Load $inputFileName to a Spreadsheet Object **/
44 $spreadsheet = $reader->load($inputFileName);
45
46 $worksheet = $spreadsheet->getActiveSheet(); // Not sure how to change between these
47
48 // Metode 1 pakai iterator
49 // // Use `setActiveSheetIndex(<worksheetindex>)`
50 // // or `setActiveSheetIndexByName(<worksheetname>)
51 // // to set the selected worksheet
52 // echo '<table border="1">';
53 // $row = 0;
54 // foreach ($worksheet->getRowIterator() as $row) {
55 // $cellIterator = $row->getCellIterator();
56 // echo '<tr>';
57 // foreach ($cellIterator as $cell) {
58 // $cell = $cell->getValue(); // Not sure what column this is looping through
59 // echo '<td>';
60 // // Kondisi untuk menemukan periode
61 // if (str_contains($cell, 'Attendance date')) {
62 // $temp_periode = $cell;
63 // }
64
65 // // Kondisi untuk menemukan UserID
66 // if (str_contains($cell, 'UserID')) {
67 // // $rowuserid = $row;
68 // }
69 // echo $cell;
70 // echo '</td>';
71 // // The $cell->getColumn() method will tell you the column
72 // }
73 // echo '</tr>';
74 // }
75 // echo '</table>';
76
77 // Metode 2 Pakai col dan row
78 // Get the highest row and column numbers referenced in the worksheet
79 $highestRow = $worksheet->getHighestRow(); // e.g. 10
80 $highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
81 $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); // e.g. 5
82
83 echo '<table border=1 style="solid black;border-collapse:collapse;">' . "\n";
84 for ($row = 1; $row <= $highestRow; ++$row) {
85 echo '<tr>' . PHP_EOL;
86 $tanggal = array();
87 $log = array();
88 $h = 0; // Kehadiran
89 $dt = 0; // Datang Terlambat
90 $pa = 0; // Pulang Awal
91 $tad = 0; // Tidak Absen Datang
92 $tap = 0; // Tidak Absen Pulang
93 $l = 0; // Libur
94 $jumlahcol = 0; // Jumlah Kolom
95 $akumulasiwaktutelat = 0; // Jumlah waktu telat
96 $akumulasiwaktupulangawal = 0; // Jumlah waktu pulang awal
97 for ($col = 1; $col <= $highestColumnIndex; ++$col) {
98 // $jumlahcol++;
99 $value = $worksheet->getCellByColumnAndRow($col, $row)->getValue();
100 // Kondisi untuk menemukan periode
101 // if (!empty($value) && str_contains($value, 'Attendance date')) {
102 // $temp_periode = $value;
103 // Olah periode
104 // $temp_periode1 = explode(':', $temp_periode);
105 // $temp_periode2 = explode(' ~', $temp_periode1[1]);
106 // $periode = explode('/', $temp_periode2[0]);
107 // $bulan = $periode[1];
108 // $tahun = $periode[0];
109 // $periode = $bulan . '-' . $tahun;
110 // $jumlah_hari = cal_days_in_month(CAL_GREGORIAN, (int)$bulan, $tahun);
111 // }
112
113 // Mengumpulkan row ID User, tanggal, dan log
114 // if (!empty($value) && str_contains($value, 'UserID')) {
115 // array_push($rowuserid, $row);
116 // array_push($rowtanggal, $row + 1);
117 // array_push($rowlog, $row + 2);
118 // array_push($rowhasilhitung, $row + 3);
119 // }
120
121 // Mengumpulkan ID user nya
122 // if (in_array($row, $rowuserid) && $col == 4) {
123 // array_push($iduserarray, $value);
124 // $iduser = $value;
125 // }
126
127 // Mengumpulkan Nama User
128 // if (in_array($row, $rowuserid) && $col == 12) {
129 // array_push($namaarray, $value);
130 // $namauser = $value;
131 // $datauser = [
132 // 'id_absen' => $iduser,
133 // 'nama' => $namauser,
134 // 'email' => str_replace(' ', '', strtolower($namauser)) . '@gmail.com',
135 // 'password_hash' => md5('123'),
136 // 'status' => 'user'
137 // ];
138 // $builder = $this->db->table('users');
139 // $builder->where('id_absen', $iduser);
140 // $builder->where('nama', $namauser);
141 // if ($builder->countAllResults() > 0) {
142 // continue;
143 // } else {
144 // $builder->insert($datauser);
145 // }
146 // }
147
148 // Mengumpulkan data tanggal dalam array
149 // if (in_array($row, $rowtanggal) && $col > 1 && $col <= $jumlah_hari + 1) {
150 // array_push($tanggal, $value);
151 // }
152 // json_encode($tanggal);
153
154 // Mengumpulkan data log dalam array
155 // if (in_array($row, $rowlog) && $col >= 1 && $col <= $jumlah_hari + 1) {
156 // array_push($log, $value);
157 // if (!empty($value)) {
158 // $h++;
159 // $strdulog = isset($value) ? strlen($value) : 0;
160 // $strspasi = isset($value) ? substr_count($value, ' ') : 0;
161 // dd($strspasi);
162 // $strenter = isset($value) ? substr_count($value, '/\r\n|\r|\n/') : 0;
163 // if ($strdulog >= 11) {
164 // $jam = preg_split('/\r\n|\r|\n/', $value);
165 // dd($jam);
166 // dd($strspasi);
167 // dd(max(array_keys($jam)));
168 // dd($jam[max(array_keys($jam))]);
169 // if (strtotime($jam[0]) < strtotime('12:00:00') && strtotime($jam[max(array_keys($jam))]) >= strtotime('12:00:00')) {
170 // $jam_masuk = $jam[0];
171 // $jam_keluar = $jam[max(array_keys($jam))];
172 // } elseif (strtotime($jam[0]) < strtotime('12:00:00') && strtotime($jam[max(array_keys($jam))]) < strtotime('13:00:00')) {
173 // $jam_masuk = $jam[0];
174 // $jam_keluar = '';
175 // $tap++;
176 // } elseif (strtotime($jam[0]) >= strtotime('12:00:00') && strtotime($jam[max(array_keys($jam))]) >= strtotime('12:00:00')) {
177 // $jam_masuk = '';
178 // $jam_keluar = $jam[max(array_keys($jam))];
179 // $tad++;
180 // } else {
181 // $jam_masuk = '';
182 // $jam_keluar = '';
183 // }
184
185 // if ($strspasi == 5) {
186 // dd($strspasi);
187 // $jam = '';
188 // if (strtotime($value) < strtotime('12:00:00')) {
189 // $jam_masuk = $value;
190 // $jam_keluar = '';
191 // $tap++;
192 // } else {
193 // $jam_masuk = '';
194 // $jam_keluar = $value;
195 // $tad++;
196 // }
197 // } else {
198 // $jam = preg_split('/\r\n|\r|\n/', $value);
199 // if (strtotime($jam[0]) < strtotime('12:00:00') && $jam[1] >= strtotime('12:00:00')) {
200 // $jam_masuk = $jam[0];
201 // $jam_keluar = $jam[1];
202 // } elseif (strtotime($jam[0]) < strtotime('12:00:00') && $jam[1] < strtotime('12:00:00')) {
203 // $jam_masuk = $jam[0];
204 // $jam_keluar = '';
205 // $tap++;
206 // } elseif (strtotime($jam[0]) >= strtotime('12:00:00') && $jam[1] >= strtotime('12:00:00')) {
207 // $jam_masuk = '';
208 // $jam_keluar = $jam[1];
209 // $tad++;
210 // } else {
211 // $jam_masuk = '';
212 // $jam_keluar = '';
213 // }
214 // }
215 // } elseif ($strdulog == 5) {
216 // if (strtotime($value) < strtotime('12:00:00')) {
217 // $jam_masuk = strtotime($value);
218 // $jam_keluar = '';
219 // $tap++;
220 // } else {
221 // $jam_masuk = '';
222 // $jam_keluar = strtotime($value);
223 // $tad++;
224 // }
225 // } else {
226 // $jam = '';
227 // $jam_masuk = '';
228 // $jam_keluar = '';
229 // }
230 // $tanggal = $tahun . '-' . $bulan . '-' . $col;
231 // $builder = $this->db->table('jadwal');
232 // $query = $builder->where('hari', sebut_hari($tanggal))->Get()->getRow();
233 // $jadwal_datang = !empty($query->datang) ? $query->datang : '';
234 // $jadwal_pulang = !empty($query->pulang) ? $query->pulang : '';
235 // if ($jam_masuk !== '' && $jam_keluar !== '') {
236 // if (strtotime($jam_masuk) > strtotime($jadwal_datang)) {
237 // $dt++; //Hitung jumlah telat
238 // $selisih_telat = round(abs(strtotime($jam_masuk) - strtotime($jadwal_datang)) / 60, 2);
239 // $akumulasiwaktutelat += $selisih_telat;
240 // } elseif (strtotime($jam_keluar) < strtotime($jadwal_pulang)) {
241 // $pa++; //Hitung jumlah pulang awal
242 // $selisih_pulang_awal = round(abs(strtotime($jadwal_pulang) - strtotime($jam_keluar)) / 60, 2);
243 // $akumulasiwaktupulangawal += $selisih_pulang_awal;
244 // } else {
245 // }
246 // } elseif ($jam_masuk !== '' && $jam_keluar == '') {
247 // if (strtotime($jam_masuk) > strtotime($jadwal_datang)) {
248 // $dt++; //Hitung jumlah telat
249 // $selisih_telat = round(abs(strtotime($jam_masuk) - strtotime($jadwal_datang)) / 60, 2);
250 // $akumulasiwaktutelat += $selisih_telat;
251 // } else {
252 // }
253 // } elseif ($jam_masuk == '' && $jam_keluar !== '') {
254 // if (strtotime($jam_keluar) < strtotime($jadwal_pulang)) {
255 // $pa++; //Hitung jumlah pulang awal
256 // $selisih_pulang_awal = round(abs(strtotime($jadwal_pulang) - strtotime($jam_keluar)) / 60, 2);
257 // $akumulasiwaktupulangawal += $selisih_pulang_awal;
258 // } else {
259 // }
260 // } else {
261 // $status = "Tidak checklog";
262 // dd('hai hai');
263 // }
264 // }
265 // }
266 // json_encode($log);
267 echo '<td>(' . $row . '|' . $col . ')' . $value . '</td>' . PHP_EOL;
268 }
269
270
271 // if (in_array($row, $rowlog)) {
272 // $datauserlog[] = [
273 // 'id_user' => $iduser,
274 // 'namauser' => $namauser,
275 // 'tanggal' => $tanggal,
276 // 'log' => $log,
277 // ];
278 // }
279 echo '</tr>' . PHP_EOL;
280 // if (in_array($row, $rowlog)) {
281 // echo '<tr>' . PHP_EOL;
282 // echo '<td colspan=' . $jumlahcol . '>Hadir : ' . $h . ' |
283 // Libur : ' . $l . ' |
284 // Telat : ' . $dt . ' (' . $akumulasiwaktutelat . ' Menit) |
285 // Pulang Awal : ' . $pa . ' (' . $akumulasiwaktupulangawal . ' Menit) |
286 // Tidak Absen Datang : ' . $tad . ' |
287 // Tidak Absen Pulang : ' . $tap . ' |</td>' . PHP_EOL;
288 // echo '</tr>' . PHP_EOL;
289 // }
290 }
291 echo '</table>' . PHP_EOL;
292
293 // d($periode);
294 // d($datauser);
295 // d($datauserlog);
296
297 // insert data log
298 // $periode = explode('-', $periode);
299 // $bulan = $periode[0];
300 // $tahun = $periode[1];
301 // foreach ($datauserlog as $dul) {
302 // echo $dul['id_user'] . ' - ' . $dul['namauser'] . '<br>';
303 // foreach ($dul['log'] as $key => $dulog) {
304 // if ($key == 0) {
305 // continue;
306 // }
307 // $tanggal = $tahun . '-' . $bulan . '-' . $key;
308 // $strdulog = isset($dulog) ? strlen($dulog) : 0;
309 // $strspasi = isset($dulog) ? substr_count($dulog, ' ') : 0;
310 // $strenter = isset($dulog) ? substr_count($dulog, '/\r\n|\r|\n/') : 0;
311 // if ($strdulog == 11 && !empty($dulog)) {
312 // if ($strspasi == 5) {
313 // $jam = '';
314 // $jam_masuk = $dulog;
315 // $jam_keluar = '';
316 // } else {
317 // $jam = preg_split('/\r\n|\r|\n/', $dulog);
318 // $jam_masuk = $jam[0];
319 // $jam_keluar = $jam[1];
320 // }
321 // } else {
322 // $jam = '';
323 // $jam_masuk = '';
324 // $jam_keluar = '';
325 // }
326 // $builder = $this->db->table('jadwal');
327 // $query = $builder->where('hari', sebut_hari($tanggal))->Get()->getRow();
328 // $jam_masuk_db = !empty($query->datang) ? $query->datang : '';
329 // $jam_keluar_db = !empty($query->pulang) ? $query->pulang : '';
330 // if ($jam_masuk !== '') {
331 // $status = $jam_masuk > $jam_masuk_db ? "<font style='color:red'>TELAT</font>" : "<font style='color:green'>TEPAT</font>";
332 // } else {
333 // $status = "Tidak checklog";
334 // }
335
336 // echo 'hari ini : ' . sebut_hari($tanggal) . ' | Jadwal masuk : ' . $jam_masuk_db . ' | Jadwal keluar : ' . $jam_keluar_db . '<br>';
337 // echo $tanggal . ' : ' . $dulog . ' | Jam masuk : ' . $jam_masuk . ' (' . $status . ') | Jam Keluar : ' . $jam_keluar . ' (' . $strdulog . '-' . $strspasi . '-' . $strenter . ')<br><br>';
338 // $data = [
339 // 'id_absen' => $dul['id_user'],
340 // 'tanggal' => $tanggal,
341 // 'waktu' => $dulog,
342 // 'datang' => $jam_masuk,
343 // 'pulang' => $jam_keluar
344 // ];
345 // $builder = $this->db->table('log');
346 // $builder->where('id_absen', $dul['id_user']);
347 // $builder->where('tanggal', $tanggal);
348 // if ($builder->countAllResults() > 0) {
349 // $builder->where('waktu', $dulog);
350 // if ($builder->countAllResults() > 0) {
351 // continue;
352 // } else {
353 // $builder->set('waktu', $dulog);
354 // $builder->set('datang', $jam_masuk);
355 // $builder->set('pulang', $jam_keluar);
356 // $builder->insert();
357 // }
358 // } else {
359 // $builder->insert($data);
360 // }
361 // }
362 // }
363 // if ($builder->insert($data) || $builder->insert()) {
364 // session()->setFlashData('success', 'Pesan ');
365 // } else {
366 // session()->setFlashData('danger', 'Pesan ');
367 // };
368 // return redirect()->to(base_url('home'));
369 }