<?php

namespace App\DataTables;

use App\Models\Dispositivo;
use Illuminate\Database\Eloquent\Model;
use Yajra\DataTables\DataTablesEditor;
use Auth;

class PuntoOperatoreDataTableEditor extends DataTablesEditor
{
  protected $model = Dispositivo::class;
  // protected $uploadDir = '';
  // protected $disk = 'modelliRicevute';

  protected $messages = [
    'nome.required' => 'Il nome è richiesto',
    'attivita_id.required' => 'La attività è richiesta',
    'tipo.required' => 'Il tipo è richiesto',
    'licenza.required' => 'La licenza è richiesta',
    'url_stampante.required' => 'L\'URL della stampante è richiesta',
    'ubicazione.required' => 'L\'ubicazione è richiesta',
    'note.required' => 'La note è richiesta',
    'is_attivo.required' => 'Indicare una delle due opzioni',
  ];

  /**
  * Get create action validation rules.
  *
  * @return array
  */
  public function createRules(): array
  {
    return [
      'nome'  => 'required',
      'attivita_id' => 'required|exists:attivita,id',
      'tipo' => 'required',
      'licenza' => 'nullable',
      'url_stampante' => 'nullable',
      'ubicazione' => 'nullable',
      'note' => 'nullable',
      'is_attivo' => 'boolean',
      'pin_sblocco' => 'nullable',
      'data_apertura_dispositivo' => 'nullable|date',
      'data_chiusura_dispositivo' => 'nullable|date',
    ];
  }

  public function createMessages(): array{
    return $this->messages;
  }

  /**
  * Get edit action validation rules.
  *
  * @param Model $model
  * @return array
  */
  public function editRules(Model $model): array
  {
    return [
      'nome'  => 'required',
      'attivita_id' => 'required|exists:attivita,id',
      'tipo' => 'required',
      'licenza' => 'nullable',
      'url_stampante' => 'nullable',
      'ubicazione' => 'nullable',
      'note' => 'nullable',
      'is_attivo' => 'boolean',
      'pin_sblocco' => 'nullable',
      'data_apertura_dispositivo' => 'nullable|date',
      'data_chiusura_dispositivo' => 'nullable|date',
    ];
  }

  public function editMessages(): array{
    return $this->messages;
  }

  /**
  * Get remove action validation rules.
  *
  * @param Model $model
  * @return array
  */
  public function removeRules(Model $model): array
  {
    return [];
  }

  public function creating(Model $model, array $data): array
  {
    // L'Editor manda `allergeni` come array di ID selezionati:
    // salviamo la relazione nella pivot `piatto_allergene`, non nella colonna `piatto.allergeni`.
    $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
    return $data;
  }

  public function updating(Model $model, array $data): array
  {
    $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
    return $data;
  }

  public function saved(Model $model, array $data): Model
  {
    return $model;
  }
  public function messages(): array
  {
    return $this->messages;
  }

}
