<?php

namespace App\DataTables;

use App\Models\PrimaNota;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Validation\Rule;
use Yajra\DataTables\DataTablesEditor;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
use Storage;
use Illuminate\Support\Str;

class PrimaNotaDataTableEditor extends DataTablesEditor
{
  protected $model = PrimaNota::class;
  // protected $uploadDir = '';
  // protected $disk = 'modelliRicevute';

  protected $messages = [
    'riferimento.required' => 'Il riferimento è richiesto',
    'cognome.required' => 'Il cognome è richiesto',
    'importo.required' => 'L\'importo è richiesto',
    'tipo_movimento.required' => 'Il tipo movimento è richiesto',
    'causale.required' => 'La causale è richiesta',
    'stato.required' => 'Il stato è richiesto',
    'categoria_contabile_id.required' => 'La categoria contabile è richiesta',
  ];

  /**
  * Get create action validation rules.
  *
  * @return array
  */
  public function createRules(): array
  {
    return [
      'attivita_id' => 'required|exists:attivita,id',
      'pagamento_id' => 'nullable|exists:pagamento,id',
      'ordine_id' => 'nullable|exists:ordine,id',
      'prenotazione_id' => 'nullable|exists:prenotazione,id',
      'evento_id' => 'nullable|exists:evento,id',
      'fornitore_id' => 'nullable|exists:fornitore,id',
      'riferimento' => 'nullable|string',
      'importo' => 'required|numeric',
      'tipo_movimento' => 'required|string',   
      'causale' => 'required|string',
      'categoria_contabile_id' => 'required|exists:categoria_contabile,id',
      // 'stato' => 'nullable|string',
      // 'note' => 'nullable|string',
      // 'codice' => 'nullable|string',
      'stato_pagamento' => 'nullable|string',
      'metodo_pagamento' => 'nullable|string',
    ];
  }

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

  /**
  * Get edit action validation rules.
  *
  * @param Model $model
  * @return array
  */
  public function editRules(Model $model): array
  {
    return [
      'attivita_id' => 'required|exists:attivita,id',
      'pagamento_id' => 'nullable|exists:pagamento,id',
      'ordine_id' => 'nullable|exists:ordine,id',
      'prenotazione_id' => 'nullable|exists:prenotazione,id',
      'evento_id' => 'nullable|exists:evento,id',
      'fornitore_id' => 'nullable|exists:fornitore,id',
      'riferimento' => 'nullable|string',
      'importo' => 'required|numeric',
      'tipo_movimento' => 'required|string',   
      'causale' => 'required|string',
      'stato' => 'nullable|string',
      'categoria_contabile_id' => 'required|exists:categoria_contabile,id',
      // 'note' => 'nullable|string',
      // 'codice' => 'nullable|string',
      'stato_pagamento' => 'nullable|string',
      'metodo_pagamento' => 'nullable|string',
    ];
  }

  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
  {
    // $model->roles()->sync([$data['ruolo_id']]);
    return $data;
  }

  public function updating(Model $model, array $data): array
  {
    // dd($data['ruolo']);
    // $model->roles()->sync([$data['ruolo_id']]);
    return $data;
  }
  public function messages(): array
  {
    return $this->messages;
  }

}
