<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

Use Barryvdh\DomPDF\PDF;

use Sentinel;
use Redirect;

class PrintController extends Controller
{
    public function index()
    {
//        $pdf = \PDF::loadHTML('<h1>Hello World!!</h1>');
//        return $pdf->stream();
        
        $pdf = \App::make('dompdf.wrapper');
        $pdf->loadHTML('<h1>Hello World!!</h1>');
        return $pdf->stream();
    }
    
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $intervento = \App\Intervento::find($id);
        $intervento->elaboraDati();
        //$intervento->data_inserimento_ticket = Carbon::createFromFormat('Y-m-d', $intervento->data_inserimento_ticket)->format('d/m/Y');
        
        
        $data['datiRecuperati'] = $intervento;
        
        $cliente = \App\Anagrafica::find($intervento->cliente_id);
        $data['Cliente'] = $cliente;
        
//        $data['listaInterventoTipo'] = \App\InterventoTipo::lists('nome', 'id');
//        $data['listaInterventoStato'] = \App\InterventoStato::lists('nome', 'id');
//        $data['listaTecnici'] = \App\Tecnico::lists('nome', 'id');
//        $data['listaProdotti'] = \App\Prodotto::lists('descrizione', 'id');
//        $data['Clienti'] = \App\Anagrafica::clienti()->order()->get();
//        $data['Committenti'] = \App\Anagrafica::committenti()->order()->get();
//        $data['Tecnici'] = \App\Tecnico::order()->get();
//        $data['Prodotti'] = \App\Prodotto::order()->get();         
        //return view('admin.intervento.view', $data);

//        print_r($intervento->tecnici()->get());
        $data['Tecnici'] = $intervento->tecnici()->get();
                
//        $pdf = \App::make('dompdf.wrapper');
//        $pdf->loadHTML('<h1>Hello World!!</h1>');
//        return $pdf->stream();
       
//        $pdf = app('dompdf.wrapper');
//        $pdf->loadView('admin.pdf.prova', $data);
//        return $pdf->download('invoice.pdf');

//        return view('admin.pdf.intervento', $data);
        
        $pdf = \App::make('dompdf.wrapper');
        
        $user = Sentinel::getUser();
        
        if(Sentinel::inRole('admin')) {
            $pdf->loadView('admin.pdf.intervento', $data);
        } else if(Sentinel::inRole('tecnico')) {

            //---Controllo che possa accedervi
            $array_tecnici = $intervento->tecnici()->lists('tecnici.id')->all();
            
            if(!in_array($user->tecnico_id, $array_tecnici)) {
                //return redirect('tecnico/intervento/')->withErrors("Errore accesso negato");
                return $this->redirect();
            }
            
            $pdf->loadView('tecnico.pdf.intervento', $data);
        } else if(Sentinel::inRole('cliente')) {
            
            if(!$user->cliente_id == $intervento->cliente_id) {
                return $this->redirect();
            }
            
            $pdf->loadView('cliente.pdf.intervento', $data);
        }
        return $pdf->download('intervento_' . $intervento['anno'].'_' . $intervento['numero'] . '.pdf');
        
        //You can chain the methods:
        //return PDF::loadFile(public_path().'/myfile.html')->save('/path-to/my_stored_file.pdf')->stream('download.pdf');

//        if(Sentinel::inRole('admin')) {
//            return view('admin.intervento.view', $data);
//        } else if(Sentinel::inRole('tecnico')) {
//            return view('tecnico.intervento.view', $data);
//        } else if(Sentinel::inRole('cliente')) {
//            return view('cliente.intervento.view', $data);
//        }            
    }   
    
    protected function redirect() {
        if(Sentinel::inRole('admin')) {
            return redirect('admin/intervento/')->withErrors("Errore accesso negato");
        } else if(Sentinel::inRole('tecnico')) {
            return redirect('tecnico/intervento/')->withErrors("Errore accesso negato");
        } else if(Sentinel::inRole('cliente')) {
            return redirect('cliente/intervento/')->withErrors("Errore accesso negato");
        }        
    }    
}

