<?php
namespace App\Controllers;

use App\Core\Auth;
use App\Core\Controller;
use App\Core\Csrf;
use App\Core\Permission;
use App\Models\Pricing;

final class PricingCourseController extends Controller
{
    public function index(): void
    {
        Auth::requireLogin();
        Permission::require('tarifs.view');

        $grid=Pricing::activeGrid();

        $this->view('pricing/index',[
            'pageTitle'=>'Grille tarifaire des cours',
            'year'=>Pricing::currentYear(),
            'grid'=>$grid,
            'lines'=>$grid ? Pricing::lines((int)$grid['id']) : [],
            'courses'=>Pricing::courseCatalog(),
        ]);
    }

    public function createGrid(): void
    {
        Auth::requireLogin();
        Permission::require('tarifs.manage');
        Csrf::verify($_POST['_csrf'] ?? null);

        // Réutilisation du contrôleur existant évitée :
        // ce fichier garde la route séparée, mais la logique de création
        // reste à reprendre depuis PricingController si elle est déjà stable.
        $_SESSION['error']=
            'La création de grille doit être faite depuis la grille annuelle existante.';
        $this->redirect('/tarifs');
    }

    public function addLine(): void
    {
        Auth::requireLogin();
        Permission::require('tarifs.manage');
        Csrf::verify($_POST['_csrf'] ?? null);

        $gridId=(int)($_POST['grille_id'] ?? 0);
        $courseId=(int)($_POST['atelier_id'] ?? 0);
        $amount=(float)($_POST['montant'] ?? -1);

        if(!$gridId || !$courseId || $amount<0){
            $_SESSION['error']='La ligne tarifaire est incomplète.';
            $this->redirect('/tarifs');
        }

        $course=null;
        foreach(Pricing::courseCatalog() as $row){
            if((int)$row['id']===$courseId){
                $course=$row;
                break;
            }
        }

        Pricing::addLine([
            'grille_id'=>$gridId,
            'atelier_id'=>$courseId,
            'libelle'=>$course
                ? $course['code'].' — '.$course['libelle']
                : 'Cours',
            'montant'=>$amount,
            'periodicite'=>$_POST['periodicite'] ?? 'annuel',
            'priorite'=>10,
        ]);

        $_SESSION['success']='Le tarif TTC du cours a été ajouté.';
        $this->redirect('/tarifs');
    }

    public function pdf(): void
    {
        Auth::requireLogin();
        Permission::require('tarifs.pdf.generate');
        (new PricingController())->pdf();
    }

    public function diffusion(): void
    {
        Auth::requireLogin();
        Permission::require('tarifs.diffusion.preview');
        (new PricingController())->diffusion();
    }
}
