public function upload_save(Request $request) { $this->validate($request, ['excel' => 'required']); $inputFileName = $request->excel; try { $inputFileType = PHPExcel_IOFactory::identify($inputFileName); $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel = $objReader->load($inputFileName); } catch (Exception $e) { die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME) . '": ' . $e->getMessage()); } $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); $start = false; $data_count = 0; $errors = 0; $semester = Semester::get_active_semester()->id; $id_siswa = null; for ($row = 1; $row <= $highestRow; $row++) { $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE); if (!$start) { if ($rowData[0][0] == "1" || $rowData[0][0] == "1.") { $start = true; } } if ($start) { if (empty($rowData[0][3]) || empty($rowData[0][4])) { continue; } $data_count++; $new = new Pkl(); if (!empty($rowData[0][1])) { $siswa = Siswa::where('nis', $rowData[0][1])->first(); if (!$siswa) { $errors++; $id_siswa = null; continue; } $id_siswa = $siswa->id; } else { if ($id_siswa == null) { continue; } } $created = null; $check = Pkl::where('mitra', $rowData[0][3])->where('lokasi', $rowData[0][4])->where('id_siswa', $id_siswa)->where('id_semester', $semester); $old = $check->first(); if ($old) { $created = $old->created_at; $check->delete(); } $new = new Pkl(); $new->mitra = $rowData[0][3]; $new->lokasi = $rowData[0][4]; $new->lama = $rowData[0][5]; $new->keterangan = $rowData[0][6]; $new->id_siswa = $id_siswa; $new->id_semester = $semester; if ($created) { $new->created_at = $created; } try { $new->save(); } catch (\Illuminate\Database\QueryException $e) { $errors++; } } } if (!$start) { $message = "Tidak ada data ditemukan. Pastikan kolom nomor ada pada kolom A dan dimulai dengan angka 1."; } else { $message = "Upload file selesai. Terbaca ada {$data_count} data. "; $message .= $errors > 0 ? "Ada masalah dengan {$errors} data, dan tidak dapat dimasukkan ke dalam database." : "Semua data berhasil ditambahkan."; } return redirect()->route('nilai.pkl')->with('message', $message); }