<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\VariantePiatto;
use App\DataTables\VariantePiattoDataTable;
use App\DataTables\VariantePiattoDataTableEditor;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Auth;

class VariantePiattoController extends Controller
{
    public static $permission_group = "Varianti Piatto";
    public static $permissions = [
        'view-variante-piatto' => 'Vedi',
        'create-variante-piatto' => 'Crea',
        'edit-variante-piatto' => 'Modifica',
        'delete-variante-piatto' => 'Elimina',
    ];

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

    public function index(VariantePiattoDataTable $dataTable)
    {
        $dataTable->attivita_id = Session::get('attivita_attuale');

        if (request()->boolean('dashboard')) {
            $dataTable->dashboard = true;
        }

        if (request()->has('cucina_id')) {
            $dataTable->cucina_id = (int) request()->get('cucina_id');
        }

        return $dataTable->render('variante_piatto.index');
    }

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

    public function datatable(VariantePiattoDataTable $dataTable , Request $request){
        $dataTable->attivita_id = Session::get('attivita_attuale');
  
        if(request()->has('cucina_id')){
          $dataTable->cucina_id = request()->get('cucina_id');
        }
        if(request()->has('dashboard')){
          $dataTable->dashboard = true;
        }
  
          return $dataTable->render('variante_piatto.datatable');
      }

    public function list(Request $request){
        $attivita = \App\Models\Attivita::find(Session::get('attivita_attuale'));
        if(!$attivita){
          return response()->json([
            'success' => false,
            'message' => 'Attività non trovata',
          ]);
        }
        $rigaOrdine = \App\Models\RigaOrdine::find($request->riga_ordine_id);
        if(!$rigaOrdine){
          return response()->json([
            'success' => false,
            'message' => 'Riga ordine non trovata',
          ]);
        }
    
      $variantiCucina = VariantePiatto::query()
      ->where('attivita_id', $attivita->id)
      ->where('cucina_id',$rigaOrdine->piatto->cucina->id);

      $variantiPiatto = VariantePiatto::query()
      ->where('attivita_id', $attivita->id)
      ->where('piatto_id',$rigaOrdine->piatto->id);


      return response()->json([
        'variantiCucina' => $variantiCucina->get(),
        'variantiPiatto' => $variantiPiatto->get(),
      ]);
    }
}
