<?php

namespace App\Http\Controllers;
use App\Models\Mapel;
use App\Models\Kurikulum;
use Barryvdh\DomPDF\Facade\Pdf;

use Illuminate\Http\Request;

class MapelController extends Controller
{
    public function mapel()
    {
        $mapels = Mapel::with('kurikulum')->get();
        $kurikulums = Kurikulum::all();
        return view('admin.mapel', compact('mapels', 'kurikulums'));
    }


    public function tambahmapel(Request $request)
    {
    $request->validate([
        'kurikulum_id' => 'required|exists:kurikulums,id',
        'nama' => 'required|string',
        'kategori' => 'required|string',
    ]);

    $nama = $request->input('nama');

    // Cek apakah ada mapel dengan nama yang duplikat, tanpa memperhatikan kategori dan kurikulum
    $duplikatNama = Mapel::where('nama', $nama)
                         ->exists();

    if ($duplikatNama) {
        toastr()->error('Mapel dengan nama tersebut sudah ada.');
        return redirect()->back();
    }

    $mapel = new Mapel();
    $mapel->kurikulum_id = $request->kurikulum_id;
    $mapel->nama = $nama;
    $mapel->kategori = $request->kategori;

    if ($mapel->save()) {
        toastr()->success('Data mata pelajaran berhasil ditambahkan.');
    } else {
        toastr()->error('Gagal menambahkan data mata pelajaran.');
    }

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


    public function updatemapel(Request $request, $id)
    {
        $request->validate([
            'kurikulum_id' => 'required|exists:kurikulums,id',
            'nama' => 'required|string',
            'kategori' => 'required|string',
        ]);

        $mapel = Mapel::findOrFail($id);

        // Ambil nilai dari request
        $nama = $request->input('nama');

        // Cek apakah ada mapel dengan nama yang duplikat, tanpa memperhatikan kategori dan kurikulum
        $duplikatNama = Mapel::where('nama', $nama)
                             ->where('id', '!=', $id)
                             ->exists();

        if ($duplikatNama) {
            toastr()->error('Mata pelajaran dengan nama tersebut sudah ada.');
            return redirect()->back();
        }

        $mapel->kurikulum_id = $request->kurikulum_id;
        $mapel->nama = $nama;
        $mapel->kategori = $request->kategori;

        if ($mapel->save()) {
            toastr()->success('Data mata pelajaran berhasil diperbarui.');
        } else {
            toastr()->error('Gagal memperbarui data mata pelajaran.');
        }

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

    }

    public function hapusmapel($id)
    {
        $mapel = Mapel::findOrFail($id);
        $mapel->delete();
        
        toastr()->success('Data mata pelajaran berhasil dihapus.');
        return redirect()->route('mapel');
    }

    public function downloadmapel()
    {
        // Ambil data sekolah dari database
        $mapels = Mapel::all();
        $pdf = Pdf::loadView('admin.mapelpdf', compact('mapels'));
        // Download file PDF
        return $pdf->download('data_mapels.pdf');
    }
    
}
