get('search'); $data_latih = $search ? DataLatih::where('kecamatan', 'like', '%' . $search . '%')->paginate(10) : DataLatih::paginate(10); return view('admin.data-latih.index', compact('data_latih')); } public function import(Request $request) { $request->validate([ 'file' => 'required|file|mimes:xlsx,xls' ]); $file = $request->file('file'); $spreadsheet = IOFactory::load($file); $sheet = $spreadsheet->getActiveSheet(); $rows = $sheet->toArray(); $dataToInsert = []; foreach ($rows as $index => $row) { if ($index === 0) continue; // Skip header $kecamatan = trim($row[1] ?? ''); if (empty($kecamatan)) continue; // Konversi jumlah penduduk, hapus format koma/titik dan jadi integer $jumlah_penduduk = $this->convertJumlahPenduduk($row[2] ?? 0); // Pastikan nilai numerik, jika tidak maka default 0 $phbs = is_numeric($row[3]) ? $row[3] : 0; $pcv1 = is_numeric($row[4]) ? $row[4] : 0; $pcv2 = is_numeric($row[5]) ? $row[5] : 0; $imunisasi = ($pcv1 + $pcv2) / 2; $merokok = is_numeric($row[7]) ? $row[7] : 0; $kasus_2023 = is_numeric($row[8]) ? $row[8] : 0; // Latitude dan longitude dibagi 1.000.000 untuk konversi ke desimal $latitude = is_numeric($row[9]) ? ($row[9] / 1000000) : 0; $longitude = is_numeric($row[10]) ? ($row[10] / 1000000) : 0; // Hipotesis = ambil string, trim dan pastikan nilainya "Naik" atau "Turun" $hipotesis = isset($row[11]) ? trim($row[11]) : null; if (!in_array($hipotesis, ['Naik', 'Turun'])) { // Jika hipotesis tidak valid, bisa set null atau default "Naik" misalnya $hipotesis = null; // atau 'Naik' sesuai kebutuhan } $dataToInsert[] = [ 'kecamatan' => $kecamatan, 'jumlah_penduduk' => $jumlah_penduduk, 'phbs' => $phbs, 'pcv1' => $pcv1, 'pcv2' => $pcv2, 'imunisasi' => $imunisasi, 'merokok' => $merokok, 'kasus_2023' => $kasus_2023, 'latitude' => $latitude, 'longitude' => $longitude, 'hipotesis' => $hipotesis, ]; } if (!empty($dataToInsert)) { DataLatih::insert($dataToInsert); } return redirect()->back()->with('success', 'Data berhasil diimpor!'); } public function edit($id) { $data = DataLatih::findOrFail($id); return view('admin.data-latih.edit', compact('data')); } public function update(Request $request, $id) { $request->validate([ 'kecamatan' => 'required|string|max:255', 'jumlah_penduduk' => 'required|integer', 'phbs' => 'required|numeric', 'pcv1' => 'required|numeric', 'pcv2' => 'required|numeric', 'imunisasi' => 'required|numeric', 'merokok' => 'required|numeric', 'kasus_2023' => 'required|integer', 'latitude' => 'required|numeric', 'longitude' => 'required|numeric', 'hipotesis' => 'required|string|in:Naik,Turun', 'data_tahun' => 'required|integer', // tambah ini kalau ada di DB ]); $data = DataLatih::findOrFail($id); $data->update($request->only([ 'kecamatan', 'jumlah_penduduk', 'phbs', 'pcv1', 'pcv2', 'imunisasi', 'merokok', 'kasus_2023', 'latitude', 'longitude', 'hipotesis', 'data_tahun', // tambah ini kalau ada ])); return redirect()->route('admin.data-latih')->with('success', 'Data berhasil diperbarui!'); } public function destroyAll() { DataLatih::truncate(); return redirect()->back()->with('success', 'Semua data berhasil dihapus.'); } public function delete($id) { $data = DataLatih::findOrFail($id); $data->delete(); return redirect()->route('admin.data-latih')->with('success', 'Data berhasil dihapus!'); } }