<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\TahunAjaran;
use Illuminate\Http\Request;

class TahunAjaranController extends Controller
{
    public function index()
    {
        $data = TahunAjaran::orderByDesc('id')->get();
        return response()->json(['success' => true, 'data' => $data]);
    }

    public function store(Request $request)
    {
        $request->validate([
            'nama'            => 'required|string|max:20',
            'semester'        => 'required|in:1,2',
            'tanggal_mulai'   => 'required|date',
            'tanggal_selesai' => 'required|date|after:tanggal_mulai',
        ]);

        $data = TahunAjaran::create([...$request->only(['nama', 'semester', 'tanggal_mulai', 'tanggal_selesai']), 'is_aktif' => false]);

        return response()->json(['success' => true, 'message' => 'Tahun ajaran berhasil ditambahkan.', 'data' => $data], 201);
    }

    public function update(Request $request, TahunAjaran $tahunAjaran)
    {
        $request->validate([
            'nama'            => 'sometimes|string|max:20',
            'semester'        => 'sometimes|in:1,2',
            'tanggal_mulai'   => 'sometimes|date',
            'tanggal_selesai' => 'sometimes|date|after:tanggal_mulai',
        ]);

        $tahunAjaran->update($request->only(['nama', 'semester', 'tanggal_mulai', 'tanggal_selesai']));

        return response()->json(['success' => true, 'message' => 'Tahun ajaran berhasil diperbarui.', 'data' => $tahunAjaran]);
    }

    public function destroy(TahunAjaran $tahunAjaran)
    {
        if ($tahunAjaran->is_aktif) {
            return response()->json(['success' => false, 'message' => 'Tahun ajaran aktif tidak dapat dihapus.'], 422);
        }

        $tahunAjaran->delete();
        return response()->json(['success' => true, 'message' => 'Tahun ajaran berhasil dihapus.']);
    }

    public function aktifkan(TahunAjaran $tahunAjaran)
    {
        TahunAjaran::aktifkan($tahunAjaran->id);
        return response()->json(['success' => true, 'message' => "Tahun ajaran {$tahunAjaran->nama} berhasil diaktifkan."]);
    }
}
