<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Pagamento;
use App\Models\MetodoPagamento;
use App\DataTables\PagamentoDataTable;
use App\DataTables\PagamentoDataTableEditor;
use Illuminate\Support\Facades\Auth;

class PagamentoController extends Controller
{
    public static $permission_group = "Pagamenti";
    public static $permissions = [
        'view-pagamento' => 'Vedi',
        'create-pagamento' => 'Crea',
        'edit-pagamento' => 'Modifica',
        'delete-pagamento' => 'Elimina',
    ];

    public static function middleware(): array
    {
        return [
            new Middleware('permission:view-pagamento', only: ['index', 'show']),
            new Middleware('permission:create-pagamento|edit-pagamento|delete-pagamento', only: ['store', 'update', 'destroy']),
        ];
    }

    public function index(PagamentoDataTable $dataTable)
    {
        $dataTable->attivita_id = session()->get('attivita_attuale');
        return $dataTable->render('pagamento.index');
    }

    public function store(PagamentoDataTableEditor $editor)
    {
        $request = request();
        $input = $request->all();
        if($request->has('action')){
            switch($input['action']){
                case 'create':
                    if(!Auth::user()->can('create-pagamento')) return;
                    break;
                case 'edit':
                    if(!Auth::user()->can('edit-pagamento')) return;
                    break;
                case 'remove':
                    if(!Auth::user()->can('delete-pagamento')) return;
                    break;
                }
        return $editor->process($request);
    }
}

    public function show(Request $request)
    {
        $pagamento = Pagamento::find($request->get('pagamento_id'));
        if(!$pagamento) return redirect()->route('pagamento.index')->with('error', 'Pagamento non trovato');

        if(!Auth::user()->can('view-pagamento')) return abort(403, 'Non hai permesso di vedere questo pagamento');
        // if($request->has('modal')){
        return view('pagamento.show', ['pagamento' => $pagamento]);
    }
}
