<?php
// Menginclude file header.php
include 'header.php';

// Menonaktifkan tampilan pesan error PHP
ini_set('display_errors', 0);

// Mengecek apakah metode HTTP yang digunakan adalah POST
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    // Mengambil gejala yang dipilih pengguna dari input formulir
    $gejala_terpilih = $_POST['gejala'];

    // Validasi: memastikan gejala dipilih
    if (empty($gejala_terpilih)) {
        die("Pilih gejala terlebih dahulu.");
    }

    // Menggabungkan gejala terpilih menjadi string untuk query SQL
    $gejala_in = "'" . implode("','", $gejala_terpilih) . "'";

    // Step 1: Mengambil daftar penyakit dari tabel penyakit
    $query_penyakit = "SELECT idpenyakit, kode_penyakit, namapenyakit FROM penyakit WHERE 1";
    $result_penyakit = $koneksi->query($query_penyakit);

    // Validasi: query gagal
    if (!$result_penyakit) {
        die("Query penyakit gagal: " . $koneksi->error);
    }

    // Inisialisasi array untuk menyimpan data penyakit
    $penyakit_diagnosa = [];
    while ($row_penyakit = $result_penyakit->fetch_assoc()) {
        $penyakit_diagnosa[$row_penyakit['kode_penyakit']] = [
            'kode_penyakit' => $row_penyakit['kode_penyakit'],
            'nama_penyakit' => $row_penyakit['namapenyakit'],
            'gejala' => [],
            'total_bobot' => 0,
            'nilai_dominan' => 0
        ];
    }

    // Step 2: Mengambil nilai fuzzy untuk gejala yang dipilih
    $query_fuzzy = "SELECT kode_gejala, kode_penyakit, nilai FROM penyakit_gejala WHERE kode_gejala IN ($gejala_in)";
    $result_fuzzy = $koneksi->query($query_fuzzy);

    // Validasi: query gagal
    if (!$result_fuzzy) {
        die("Query fuzzy gagal: " . $koneksi->error);
    }

    // Menyimpan nilai fuzzy ke dalam array penyakit_diagnosa
    while ($row = $result_fuzzy->fetch_assoc()) {
        $penyakit_diagnosa[$row['kode_penyakit']]['gejala'][] = $row['nilai'];
    }

    // Mengambil nilai default jika gejala tidak memiliki pengaruh signifikan
    $query_default_fuzzy = "SELECT nilai_interpretasi FROM interpretasi_fuzzy WHERE kategori = 'Kurang Berpengaruh'";
    $result_default_fuzzy = $koneksi->query($query_default_fuzzy);

    if ($result_default_fuzzy) {
        $row_default_fuzzy = $result_default_fuzzy->fetch_assoc();
        $nilai_default = $row_default_fuzzy['nilai_interpretasi'];
    }

    // Step 3: Menghitung total bobot untuk setiap penyakit
    foreach ($penyakit_diagnosa as $penyakit_id => $data) {
        $gejala_values = $data['gejala'];

        if (empty($gejala_values)) {
            // Jika tidak ada gejala yang relevan, gunakan nilai default
            $penyakit_diagnosa[$penyakit_id]['total_bobot'] = $nilai_default;
            $penyakit_diagnosa[$penyakit_id]['nilai_dominan'] = $nilai_default;
        } else {
            // Hitung total bobot gejala
            $total_bobot_gejala = array_sum($gejala_values);

            // Fuzzyfikasi nilai gejala
            $fuzzyfikasi_values = array_map(function ($nilai) use ($total_bobot_gejala) {
                return $nilai / $total_bobot_gejala;
            }, $gejala_values);

            // Simpan nilai dominan dan total bobot
            $penyakit_diagnosa[$penyakit_id]['nilai_dominan'] = max($fuzzyfikasi_values);
            $penyakit_diagnosa[$penyakit_id]['total_bobot'] = $total_bobot_gejala;
        }
    }

    // Step 4: Mengidentifikasi penyakit dengan nilai dominan tertinggi
    $penyakit_terpilih = "";
    $nilai_penyakit_terpilih = 0;
    $nilai_dominan_terpilih = 0;

    foreach ($penyakit_diagnosa as $penyakit_id => $data) {
        if ($data['nilai_dominan'] > $nilai_dominan_terpilih) {
            $penyakit_terpilih = $data['kode_penyakit'];
            $nama_penyakit = $data['nama_penyakit'];
            $nilai_penyakit_terpilih = $data['total_bobot'];
            $nilai_dominan_terpilih = $data['nilai_dominan'];
        }
    }

    // Jika tidak ada nilai dominan yang signifikan
    if ($nilai_penyakit_terpilih == 0) {
        $penyakit_terpilih = "Penyakit tidak terdeteksi";
    }
}
?>

<!-- Halaman Diagnosis -->
<div class="kontainer-besar halaman-atas jarakbawahatas-5 mb-5 wow fadeIn" data-wow-delay="0.1s">
    <div class="kontainer teks-tengah jarakbawahatas-5">
        <h1 class="tampilan-3 teks-hitam jarakbawah-4 animated slideInDown" style="color:white!important">Diagnosis</h1>
        <nav aria-label="bagian-atas animated slideInDown">
            <ol class="bagian-atas konten-tengah mb-0">
                <li class="bagian-atas-item"><a href="index.php">Home</a></li>
                <li class="bagian-atas-item active" aria-current="page">Diagnosis</li>
            </ol>
        </nav>
    </div>
</div>

<div class="kontainer-xxl jarakbawahatas-5">
    <div class="kontainer">
        <div class="teks-tengah mx-auto wow fadeInUp" data-wow-delay="0.1s" style="max-width: 500px;">
            <p class="judul background-putih teks-tengah warnateks-utama jarakkirikanan-3">Diagnosis</p>
            <h1 class="mb-5">Form Diagnosis Penyakit Tembakau</h1>
        </div>

        <!-- Formulir Diagnosis -->
        <form action="diagnosis.php" method="POST">
            <div class="form-group">
                <label for="gejala" class="font-weight-bold" style="font-size:15pt">Pilih Gejala yang Dialami:</label>
                <div class="row">
                    <?php
                    // Mengambil daftar gejala dari tabel gejala
                    $query_gejala = "SELECT * FROM gejala";
                    $result_gejala = $koneksi->query($query_gejala);
                    $gejala_list = $result_gejala->fetch_all(MYSQLI_ASSOC);

                    foreach ($gejala_list as $row) {
                    ?>
                        <div class="col-md-4">
                            <div class="form-check">
                                <input class="form-check-input" type="checkbox" name="gejala[]" value="<?= $row['kodegejala'] ?>" id="gejala<?= $row['kodegejala'] ?>" style="width: 25px; height: 25px;">
                                <label class="form-check-label" for="gejala<?= $row['kodegejala'] ?>" style="font-size: 20pt;">
                                    <?= $row['kodegejala'] ?> - <?= $row['gejala'] ?>
                                </label>
                            </div>
                        </div>

                    <?php
                    }
                    ?>
                </div>
            </div>

            <button type="submit" class="tombol tombol-kedua mt-4">Diagnosa</button>
        </form>

        <?php if ($_SERVER['REQUEST_METHOD'] == 'POST'): ?>
            <div class="mt-5">
                <h4>Hasil Diagnosa :</h4>
                <!-- <h5>1. Fuzzyfikasi</h5>
                <p>Fuzzyfikasi dilakukan dengan menghitung nilai bobot setiap gejala yang terpilih dan membandingkannya dengan total bobot gejala.</p>

                <table class="table table-bordered">
                    <thead>
                        <tr>
                            <th>Penyakit</th>
                            <th>Total Bobot</th>
                            <th>Gejala yang Terpilih</th>
                            <th>Nilai Dominan</th>
                        </tr>
                    </thead>
                    <tbody>
                    <?php foreach ($penyakit_diagnosa as $penyakit_id => $data): ?>
                            <tr>
                                <td><?php echo $data['kode_penyakit']; ?></td>
                                <td><?php echo number_format($data['total_bobot'], 2); ?></td>
                                <td><?php echo implode(", ", $data['gejala']); ?></td>
                                <td><?php echo number_format($data['nilai_dominan'], 2); ?></td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>

                <h5>2. Agregasi</h5>
                <p>Proses agregasi dilakukan dengan memilih nilai maksimum dari nilai fuzzy setiap penyakit.</p>
                <p><strong>Maks = <?php echo number_format($nilai_dominan_terpilih, 2); ?></strong></p>
                <p>Nilai dominan terbesar didapatkan dari penyakit <strong><?php echo $penyakit_terpilih; ?></strong>.</p> -->


                <!-- <p>Defuzzyfikasi dilakukan untuk menghitung hasil akhir berdasarkan bobot dominan, dengan tujuan untuk memperoleh nilai persentase diagnosa.</p> -->

                <!-- <p><strong>Total Bobot Penyakit = </strong>
                    <?php
                    $nilai_total_bobot = array_sum(array_column($penyakit_diagnosa, 'nilai_dominan'));
                    echo number_format($nilai_total_bobot, 2);
                    ?>
                </p>

                <table class="table table-bordered">
                    <thead>
                        <tr>
                            <th>Penyakit</th>
                            <th>Nilai Dominan</th>
                            <th>Presentase</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                        foreach ($penyakit_diagnosa as $penyakit_id => $data):
                            $presentase = $nilai_total_bobot > 0 ? ($data['nilai_dominan'] / $nilai_total_bobot) * 100 : 0;
                        ?>
                            <tr>
                                <td><?php echo $data['kode_penyakit']; ?></td>
                                <td><?php echo number_format($data['nilai_dominan'], 2); ?></td>
                                <td><?php echo number_format($presentase, 2); ?>%</td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table> -->
                <p>Kesimpulan: Penyakit dengan nilai defuzzyfikasi tertinggi adalah <strong><?php echo $penyakit_terpilih; ?> - <?= $nama_penyakit ?> </strong> dengan nilai <strong><?php echo number_format(($nilai_dominan_terpilih / $nilai_total_bobot) * 100, 2); ?>%</strong>.</p>

                <div class="kolom-sedang-12">
                    <label class="mb-2">Solusi</label>
                    <textarea rows="10" name="solusi" class="gaya-formulir" readonly>
<?php
            // Menampilkan solusi berdasarkan penyakit terpilih
            if ($penyakit_terpilih !== "Penyakit tidak terdeteksi") {
                // Query untuk mengambil solusi dari tabel penyakit berdasarkan penyakit yang terpilih
                $query_solusi = "SELECT solusi FROM penyakit WHERE kode_penyakit = '$penyakit_terpilih'";
                $result_solusi = $koneksi->query($query_solusi);

                if ($result_solusi && $row_solusi = $result_solusi->fetch_assoc()) {
                    echo $row_solusi['solusi'];
                } else {
                    echo "Solusi untuk penyakit ini belum tersedia.";
                }
            } else {
                echo "Penyakit tidak terdeteksi. Tidak ada solusi yang dapat diberikan.";
            }
?>
            </textarea>
                </div>
            </div>
        <?php endif; ?>

    </div>
</div>

<?php include 'footer.php'; ?>