<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\OpsiSubkriteria;
use App\Models\Alternatif; // Pastikan model Alternatif digunakan
use App\Models\Subkriteria;
use App\Models\Crip;
use Barryvdh\DomPDF\Facade\Pdf;

class OpsiSubkriteriaController extends Controller
{
    public function opsisubkriteria()
    {
    // Mengambil data opsi subkriteria, dengan relasi ke subkriteria, crips, dan alternatif
    $opsisubkriterias = OpsiSubkriteria::with(['subkriteria', 'crips', 'alternatif'])->get();

    // Mengambil semua data crips dan alternatif
    $crips = Crip::all();
    $alternatifs = Alternatif::all();
    $subkriterias = Subkriteria::all();
    
    return view('admin.opsisubkriteria', compact('opsisubkriterias', 'crips', 'alternatifs', 'subkriterias'));
    }

    public function tambahopsisubkriteria(Request $request)
    {
        // Validasi input
        $request->validate([
            'subkriteria_id' => 'required|exists:subkriterias,id',
            'alternatif_id' => 'required|exists:alternatifs,id',
            'crips_id' => 'required|exists:crips,id',
            'opsi' => 'required|string',
        ]);

        // Cek duplikat opsi untuk kombinasi subkriteria + alternatif
        $duplikat = OpsiSubkriteria::where('subkriteria_id', $request->subkriteria_id)
                    ->where('alternatif_id', $request->alternatif_id)
                    ->where('opsi', $request->opsi)
                    ->exists();

        if ($duplikat) {
            toastr()->error('Opsi tersebut sudah ada untuk kombinasi subkriteria dan alternatif ini.');
            return redirect()->back();
        }

        // Simpan data opsi subkriteria
        $opsi = new OpsiSubkriteria();
        $opsi->subkriteria_id = $request->subkriteria_id;
        $opsi->alternatif_id = $request->alternatif_id;
        $opsi->crips_id = $request->crips_id;
        $opsi->opsi = $request->opsi;

        if ($opsi->save()) {
            toastr()->success('Opsi subkriteria berhasil ditambahkan.');
        } else {
            toastr()->error('Gagal menambahkan opsi subkriteria.');
        }

        return redirect()->route('opsisubkriteria');
    }

    public function updateopsisubkriteria(Request $request, $id)
{
    // Validasi input
    $request->validate([
        'subkriteria_id' => 'required|exists:subkriterias,id',
        'alternatif_id' => 'required|exists:alternatifs,id',
        'crips_id' => 'required|exists:crips,id',
        'opsi' => 'required|string',
    ]);

    // Ambil data berdasarkan ID
    $opsi = OpsiSubkriteria::findOrFail($id);

    // Cek duplikat (kecuali jika data yang sama persis dengan yang sedang diedit)
    $duplikat = OpsiSubkriteria::where('subkriteria_id', $request->subkriteria_id)
                ->where('alternatif_id', $request->alternatif_id)
                ->where('opsi', $request->opsi)
                ->where('id', '!=', $id)
                ->exists();

    if ($duplikat) {
        toastr()->error('Opsi tersebut sudah ada untuk kombinasi subkriteria dan alternatif ini.');
        return redirect()->back();
    }

    // Update data
    $opsi->subkriteria_id = $request->subkriteria_id;
    $opsi->alternatif_id = $request->alternatif_id;
    $opsi->crips_id = $request->crips_id;
    $opsi->opsi = $request->opsi;

    if ($opsi->save()) {
        toastr()->success('Opsi subkriteria berhasil diperbarui.');
    } else {
        toastr()->error('Gagal memperbarui opsi subkriteria.');
    }

    return redirect()->route('opsisubkriteria')->with('reload', true);
}

public function hapusopsisubkriteria($id)
{
    // Cari data opsi subkriteria berdasarkan ID
    $opsisubkriteria = OpsiSubkriteria::findOrFail($id);

    // Hapus data opsi subkriteria
    $opsisubkriteria->delete();

    // Tampilkan pesan sukses
    toastr()->success('Data opsi subkriteria berhasil dihapus.');

    // Redirect kembali ke halaman opsi subkriteria
    return redirect()->route('opsisubkriteria');
}

    public function downloadopsisubkriteria()
    {
        // Ambil data sekolah dari database
        $opsisubkriterias = OpsiSubkriteria::all();
        $subkriterias = Subkriteria::all();
        $pdf = Pdf::loadView('admin.opsubpdf', compact('opsisubkriterias', 'subkriterias'));
        // Download file PDF
        return $pdf->download('data_opsisubkriterias.pdf');
    }



}
