<?php
namespace App\Handlers;

use Illuminate\Http\Request;
use Validator;
use Sentinel;

use Carbon\Carbon;

class InterventoHandler
{
    protected $request;

    public function __construct(Request $request){
        $this->request = $request;
    }

    public function datiValidi()
    {
        if(Sentinel::inRole('admin')) {
            
        
            $valida = Validator::make($this->request->all(), [
                'anno' => 'required'
                , 'numero' => 'required'
                , 'cliente_id' => 'required'
                , 'committente_id' => 'required'
            ],
            [
                'anno.required' => 'Il campo Anno è obbligatorio'
                , 'numero.required' => 'Il campo Numero è obbligatorio'
                , 'cliente_id.required' => 'Il campo cliente è obbligatorio'
                , 'committente_id.required' => 'Il campo committente è obbligatorio'
            ]);

        } else {
            $valida = Validator::make($this->request->all(), []);
        }
        
        if ($valida->fails()) {
            return $valida->errors();
        }
        
        return true;
    }

    public function recuperaDati($intervento){

        if(Sentinel::inRole('admin')) {
            
            //Carbon::createFromFormat('M/d/Y', $date)->format('Y-m-d');
            $intervento->anno = $this->request->input('anno');
            $intervento->numero = $this->request->input('numero');
            $intervento->data_inserimento_ticket = $this->RigiraData($this->request->input('data_inserimento_ticket'));   //$this->request->input('data_inserimento_ticket');
            $intervento->serial_number = $this->request->input('serial_number');
            $intervento->numero_ticket_cliente = $this->request->input('numero_ticket_cliente');
            $intervento->numero_lettera_vettura = $this->request->input('numero_lettera_vettura');
            $intervento->sede_intervento = $this->request->input('sede_intervento');
            $intervento->referente_nome = $this->request->input('referente_nome');
            $intervento->referente_telefono = $this->request->input('referente_telefono');
            $intervento->referente_citta = $this->request->input('referente_citta');
            $intervento->intervento_descrizione_da_svolgere = $this->request->input('intervento_descrizione_da_svolgere');
            $intervento->intervento_data_scadenza= $this->RigiraData($this->request->input('intervento_data_scadenza')); 
            //$intervento->intervento_data_scadenza = $this->request->input('intervento_data_scadenza');
        
        }
        
        $intervento->intervento_data= $this->RigiraData($this->request->input('intervento_data')); 
        //$intervento->intervento_data = $this->request->input('intervento_data');
        $intervento->intervento_ora_inizio = $this->request->input('intervento_ora_inizio');
        $intervento->intervento_ora_fine = $this->request->input('intervento_ora_fine');
        $intervento->intervento_durata = $this->request->input('intervento_durata');
        $intervento->intervento_descrizione_risoluzione = $this->request->input('intervento_descrizione_risoluzione');
        
        if(Sentinel::inRole('admin')) {
        
            $intervento->importo_ticket = $this->request->input('importo_ticket');
            $intervento->spesa_tecnico = $this->request->input('spesa_tecnico');
            $intervento->margine_ticket = $this->request->input('margine_ticket');
        
        }
        
        $intervento->note = $this->request->input('note');
        
        if(Sentinel::inRole('admin')) {  
        
            $intervento->intervento_stato_id = $this->request->input('intervento_stato_id');
            $intervento->cliente_id = $this->request->input('cliente_id');
            $intervento->committente_id = $this->request->input('committente_id');
            $intervento->intervento_tipo_id = $this->request->input('intervento_tipo_id');

        }
        
        //================================
        //---CAMBIO STATO SE HO UNA DATA
        //================================
        if( in_array($intervento->intervento_stato_id, array(1, 2)) )  { //Aperto, Assegnato
                
            if( $intervento->intervento_data != null 
                && $intervento->intervento_data != '0000-00-00')   {
                    $intervento->intervento_stato_id = 3;   //---CHIUSO
            }
        }
                      
        
        return $intervento;
    }

    public function inserisciDati(){
        $intervento = new \App\Intervento();
        $this->recuperaDati($intervento);
        $intervento->save();

        //---SALVA TECNICI        
        //$user->roles()->sync([1 => ['expires' => true], 2, 3]);
        $aTecnici = array();
        if($this->request->input('tecnici')) {
            $aTecnici = $this->request->input('tecnici');
        }
        $intervento->tecnici()->sync( $aTecnici );

        
        //---SALVA PRODOTTI
        //$user->roles()->sync([1 => ['expires' => true], 2, 3]);
        $aProdotti = array();
        if($this->request->input('prodotti')) {
            $aProdotti = $this->request->input('prodotti');
        }
        $intervento->prodotti()->sync( $aProdotti );    
    }

    public function aggiornaDati($id){
        $intervento = \App\Intervento::find($id);
        $this->recuperaDati($intervento);
        $intervento->save();
        
        //---SALVA TECNICI        
        //$user->roles()->sync([1 => ['expires' => true], 2, 3]);
        $aTecnici = array();
        if($this->request->input('tecnici')) {
            $aTecnici = $this->request->input('tecnici');
        }
        $intervento->tecnici()->sync( $aTecnici );

        
        //---SALVA PRODOTTI
        //$user->roles()->sync([1 => ['expires' => true], 2, 3]);
        $aProdotti = array();
        if($this->request->input('prodotti')) {
            $aProdotti = $this->request->input('prodotti');
        }
        $intervento->prodotti()->sync( $aProdotti );          
    }
    
    public function RigiraData($str) {
        
        return $str ? Carbon::createFromFormat('d/m/Y', $str)->format('Y-m-d') : ''; 
        
    }
}