<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Alternatif;
use App\Models\Mapel;
use App\Models\Kurikulum;
use Barryvdh\DomPDF\Facade\Pdf;

class AlternatifController extends Controller
{
    public function alternatif()
    {
        $mapels = Mapel::where('kategori', 'Mata Pelajaran Pilihan')->get();
        $kurikulums = Kurikulum::all();
        $alternatifs = Alternatif::with('mapels')->get();
        return view('admin.alternatif', compact('alternatifs','mapels', 'kurikulums'));
    }

    public function tambahalternatif(Request $request)
    {
    $request->validate([
        
        'nama' => 'required|string|max:255',
        'kurikulum_id' => 'required|exists:kurikulums,id',
        'mapel_id' => 'required|array|min:1',
        'mapel_id.*' => 'exists:mapels,id',
    ]);

    // Cek duplikat nama
    $duplikatNama = Alternatif::where('nama', $request->nama)
        ->where('kurikulum_id', $request->kurikulum_id)
        ->exists();

    if ($duplikatNama) {
        toastr()->error('Nama alternatif sudah ada dalam kurikulum yang sama.');
        return redirect()->back()->withInput();
    }

    
    

    // Simpan alternatif dulu
    $alternatif = new Alternatif();
    
    $alternatif->nama = $request->nama;
    $alternatif->kurikulum_id = $request->kurikulum_id;

    if ($alternatif->save()) {
        $alternatif->mapels()->sync($request->mapel_id); // sinkronisasi setelah tersimpan
        toastr()->success('Alternatif berhasil ditambahkan');
    } else {
        toastr()->error('Gagal menambahkan alternatif');
    }

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

    public function updatealternatif(Request $request, $id)
    {
    $request->validate([
        
        'nama' => 'required|string|max:255',
        'kurikulum_id' => 'required|exists:kurikulums,id',
        'mapel_id' => 'required|array|min:1',
        'mapel_id.*' => 'exists:mapels,id',
    ]);

    $alternatif = Alternatif::findOrFail($id);

    // Cek duplikat nama (kecuali milik sendiri)
    $duplikatNama = Alternatif::where('nama', $request->nama)
        ->where('kurikulum_id', $request->kurikulum_id)
        ->where('id', '!=', $id)
        ->exists();

    if ($duplikatNama) {
        toastr()->error('Nama alternatif sudah ada dalam kurikulum yang sama.');
        return redirect()->back()->withInput();
    }

    

    // Update data
    
    $alternatif->nama = $request->nama;
    $alternatif->kurikulum_id = $request->kurikulum_id;

    if ($alternatif->save()) {
        $alternatif->mapels()->sync($request->mapel_id);
        toastr()->success('Alternatif berhasil diperbarui');
    } else {
        toastr()->error('Gagal memperbarui alternatif');
    }

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

    public function hapusalternatif($id)
    {
    $alternatif = Alternatif::findOrFail($id);
    if ($alternatif->delete()) {
        toastr()->success('Alternatif berhasil dihapus');
    } else {
        toastr()->error('Gagal menghapus alternatif');
    }
    return redirect()->route('alternatif');
    }

    public function downloadalternatif()
    {
        // Ambil data sekolah dari database
        $alternatifs = Alternatif::all();
        $pdf = Pdf::loadView('admin.alternatifpdf', compact('alternatifs'));
        // Download file PDF
        return $pdf->download('data_alternatif.pdf');
    }

}
