<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\DataLatih;
use PhpOffice\PhpSpreadsheet\IOFactory;

class LatihController extends Controller
{
    private function convertJumlahPenduduk($nilai)
    {
        // Hapus titik dan ubah koma jadi titik
        $nilai_bersih = str_replace('.', '', $nilai);
        $nilai_bersih = str_replace(',', '.', $nilai_bersih);

        // Kembalikan sebagai integer
        return (int) $nilai_bersih;
    }

    public function index(Request $request)
    {
        $search = $request->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!');
    }
}
