<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use App\Models\RigaFatturazione;
use App\Models\Attivita;
use App\Models\Dispositivo;
use App\DataTables\RigaFatturazioneDataTable;
use App\DataTables\RigaFatturazioneDataTableEditor;
use Illuminate\Support\Facades\Session;

class RigaFatturazioneController extends Controller
{
    public static $permission_group = 'riga_fatturazione';
    Public static $permissions = [
        'view-riga_fatturazione' => 'Vedi',
        'create-riga_fatturazione' => 'Crea',
        'edit-riga_fatturazione' => 'Modifica',
        'delete-riga_fatturazione' => 'Elimina',
    ];

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

    public function index(RigaFatturazioneDataTable $dataTable, Request $request)
    {
        $attivita_user_id = null;
        if(Session::has('attivita_attuale')){
            $dataTable->attivita_id = Session::get('attivita_attuale');
            $attivita_user_id = Attivita::find(Session::get('attivita_attuale'))->user_id;
        }

        if(Auth::user()->hasRole('superadmin')){
            $dataTable->superadmin = true;
        }

        if($request->has('tutti_i_consumi')){
            $dataTable->tutti_i_consumi = true;
        }
        $fattureEmesse = \App\Models\Fattura::where('user_id', $attivita_user_id)->where('stato', \App\Models\Fattura::EMESSA)->get();

        return $dataTable->render('fatturazione.index',['fattureEmesse' => $fattureEmesse]);
    }

    public function store(RigaFatturazioneDataTableEditor $editor)
    {
        // $editor->user_id = Auth::user()->id;
        // if($request->has('attivita_id')){
        //     $editor->attivita_id = $request->attivita_id;
        // }

        $request = request();
        $input = $request->all();
        if($request->has('action')){
            switch($input['action']){
                case 'create':
                    if(!Auth::user()->can('create-riga_fatturazione')) return response()->json(['error' => 'Non hai i permessi per creare una riga fatturazione'],403);
                    break;
                case 'edit':
                    if(!Auth::user()->can('edit-riga_fatturazione')) return response()->json(['error' => 'Non hai i permessi per modificare una riga fatturazione'],403);
                    break;
                case 'remove':
                    if(!Auth::user()->can('delete-riga_fatturazione')) return response()->json(['error' => 'Non hai i permessi per eliminare una riga fatturazione'],403);
                    break;
            }
        }
        return $editor->process($request);
    }
    
    
}
