<?php

namespace App\Http\Controllers\Backend;

use App\Models\Hasil;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;

class KuesionerLSController extends Controller
{
    public function store(Request $request)
    {
        $mappings = [
            1 => [
                "Mencari tahu tokonya apakah ada di suatu tempat yang saya ketahui" => 'K',
                "Tanya arah jalan kepada teman" => 'A',
                "Menulis petunjuk jalan" => 'R',
                "Menggunakan Peta atau Layanan Maps" => 'V'
            ],
            2 => [
                "Melihat diagramnya" => 'V',
                "Mendengarkan penjelasan orang tersebut" => 'A',
                "Membaca kata-kata yang tampil di video" => 'R',
                "Melakukan tindakan apa yang dilakukan oleh orang dalam video" => 'K'
            ],
            3 => [
                "Melihat hal-hal menarik pada tur tersebut" => 'K',
                "Menggunakan peta atau layanan maps dan melihat lokasi yang akan dituju" => 'V',
                "Membaca detail tur pada dokumen atau rencana tur" => 'R',
                "Berdiskusi dengan teman atau penyelenggara tur yang merencanakan tur tersebut" => 'A'
            ],
            4 => [
                "Saya akan menerapkan ilmu yang saya punya pada dunia kerja nanti" => 'K',
                "Saya akan bercakap dengan rekan kerja saat berdiskusi" => 'A',
                "Saya akan menggunakan gambar atau video untuk menunjukkan pekerjaan saya kepada rekan kerja" => 'V',
                "Saya akan menerapkan kata-kata yang baik saat mengirimkan pesan kepada rekan kerja" => 'R'
            ],
            5 => [
                "Saya suka berdiskusi" => 'A',
                "Saya suka melihat pola dari apa yang saya pelajari" => 'V',
                "Saya suka mencari contoh dari apa yang saya pelajari" => 'K',
                "Saya suka membaca buku atau artikel" => 'R'
            ],
            6 => [
                "Melakukan riset dan perbandingan langsung di lokasi" => 'K',
                "Membaca brosur yang berisi daftar barang yang saya cari" => 'R',
                "Melihat ulasan di YouTube atau Media Sosial" => 'V',
                "Berdiskusi dengan pakar" => 'A'
            ],
            7 => [
                "Melihat teman saya bermain catur dan memperhatikannya" => 'K',
                "Mendengarkan penjelasan ahli tentang bagaimana aturan permainan" => 'A',
                "Melihat tutorial di YouTube" => 'V',
                "Membaca instruksi tertulis dari permainan catur" => 'R'
            ],
            8 => [
                "Memberi saya buku atau data tentang penyakit jantung yang saya alami" => 'R',
                "Menggunakan alat peraga guna menjelaskan apa masalah jantung yang saya alami" => 'K',
                "Saya ingin dokter menjelaskan tentang penyakit saya" => 'A',
                "Menunjukkan grafik dan statistik dari penyakit jantung yang saya alami" => 'V'
            ],
            9 => [
                "Membaca instruksi yang muncul saat saya menjalankan aplikasi tersebut" => 'R',
                "Berdiskusi dengan seseorang yang paham fungsi dan kegunaan dari aplikasi tersebut" => 'A',
                "Saya langsung mencoba berbagai tombol pada aplikasi tersebut" => 'K',
                "Saya melihat gambar atau video yang menjelaskan tentang aplikasi tersebut" => 'V'
            ],
            10 => [
                "Video pendek atau video panjang" => 'K',
                "Interaksi pada desain yang menarik" => 'V',
                "Artikel atau buku digital" => 'R',
                "Radio atau Podcast" => 'A'
            ],
            11 => [
                "Diagram tahapan proyek" => 'V',
                "Laporan proyek yang sedang dikerjakan" => 'R',
                "Kesempatan untuk membahas proyek dengan manajer proyek" => 'A',
                "Contoh nyata terhadap proyek sejenis yang sukses" => 'K'
            ],
            12 => [
                "Bertanya kepada seseorang mengenai fitur dan apa yang bisa kamera tersebut lakukan" => 'A',
                "Membaca buku instruksi pada kotak kamera tentang bagaimana penggunaan yang benar" => 'R',
                "Melihat ulasan dari seseorang yang membahas mengenai kamera tersebut" => 'V',
                "Mengambil langsung beberapa foto dan membandingkannya untuk mendapat hasil terbaik" => 'K'
            ],
            13 => [
                "Demonstrasi, model atau praktek langsung" => 'K',
                "Tanya jawab dan berdiskusi" => 'A',
                "Buku, artikel, novel atau bahan bacaan" => 'R',
                "Grafik, diagram, peta atau video" => 'V'
            ],
            14 => [
                "Mencontohkan dari apa yang saya lakukan" => 'K',
                "Mencatat hasil yang saya peroleh" => 'R',
                "Seseorang yang mengatakan umpan balik langsung kepada saya" => 'A',
                "Menggunakan diagram atau video hasil dari apa yang saya lakukan" => 'V'
            ],
            15 => [
                "Menonton video atau rekaman ulasan dari seseorang yang mengunggahnya" => 'K',
                "Berdiskusi dengan pemilik langsung di lokasi" => 'A',
                "Membaca deskripsi mengenai fitur dan fasilitas yang diberikan" => 'R',
                "Menggunakan layanan maps untuk mencari lokasi" => 'V'
            ],
            16 => [
                "Video tutorial yang menunjukkan setiap tahapan perakitan" => 'V',
                "Saran dari seseorang yang berhasil melakukannya" => 'A',
                "Petunjuk tertulis yang disertakan dalam paket pembelian" => 'R',
                "Mencoba merakitnya langsung secara perlahan" => 'K'
            ]
        ];

        $visual = $auditory = $readwrite = $kinesthetic = 0;

        for ($i = 1; $i <= 16; $i++) {
            $answer = $request->input("soal{$i}");
            if ($answer && isset($mappings[$i]) && in_array($answer, $mappings[$i])) {
                switch ($answer) {
                    case 'V': $visual++; break;
                    case 'A': $auditory++; break;
                    case 'R': $readwrite++; break;
                    case 'K': $kinesthetic++; break;
                }
            }
        }

        $percentages = [
            'Visual' => $visual / 16 * 100,
            'Auditory' => $auditory / 16 * 100,
            'Read/Write' => $readwrite / 16 * 100,
            'Kinesthetic' => $kinesthetic / 16 * 100,
        ];

        arsort($percentages);
        $values = array_values($percentages);
        $keys = array_keys($percentages);

        $result = 'Multimodal';
        if ($values[0] - $values[1] >= 10) {
            $result = $keys[0];
        }

        $id_style = match ($result) {
            'Visual' => 1,
            'Auditory' => 2,
            'Read/Write' => 3,
            'Kinesthetic' => 4,
            default => 5, // Multimodal
        };

        Hasil::updateOrCreate(
            ['id_user' => Auth::id()],
            [
                'visual' => $visual,
                'auditory' => $auditory,
                'readwrite' => $readwrite,
                'kinesthetic' => $kinesthetic,
                'id_style' => $id_style,
                'result' => $result,
            ]
        );

        return redirect()->route('kuesioner-mai')->with('success', 'Jawaban kuesioner berhasil disimpan!');
    }
}