<?php

namespace App\Http\Controllers\Proveedor;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\{Proveedor, ProveedorCatalogo, ProveedorSeleccion, ProveedorSeleccionPuntos, Bitacora, Firma, RequisicionFormato};
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Carbon\Carbon;

class SeleccionController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        
    }

    /**
     * Busca un proveedor que aun no tengan seleccion, de acuerdo al termino que se mande del formulario
     * @param  Request $request [description]
     * @return [json]           json con los datos del proveedor
     */
    public function buscar(Request $request){
        $term = $request->input('term');
        $results = array();

        $queries = Proveedor::where('nombre', 'LIKE', '%'.$term.'%')
            ->where('estatus', '1')
            ->whereNotIn('id', ProveedorSeleccion::select('proveedor_id')->get())
            ->orderBy('nombre', 'asc')
            ->select('id', 'nombre as value', 'calle', 'numero', 'ciudad', 'telefono_1', 'correo', 'representante_legal', 'rfc')
            ->get()->toJSON();

        return $queries;
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('proveedor.seleccion.nuevo');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data = $request->all();

        $persona = json_decode(session('persona'));
        $depto = json_decode(session('departamento'));

        if ( Hash::check(md5($data['password']), $persona->password) ) {   
            $aux = DB::transaction(function () use ($data, $persona, $depto) {
                $idCatalogo = ProveedorCatalogo::where('estado', '1')->select('id')->first();
                $seleccion  = ProveedorSeleccion::create([ 'proveedor_id'=>$data['id'], 'catalogo_id'=>$idCatalogo->id, 'firma_id'=>0, 'fecha'=>$data['fecha'], 'comentarios'=>$data['comentarios'], 'total' => $data['puntos'] ]);
                
                for ($i=1; $i < 9; $i++) {  ProveedorSeleccionPuntos::create([ 'seleccion_id'=>$seleccion->id, 'seleccionCriterio_id'=>$i, 'puntos'=>$data['requisito_'.$i] ]); }

                $cadena = $depto->nombre."-".$persona->titulo." ".$persona->nombre." ".$persona->apellido_paterno." ".$persona->apellido_materno."-Autorización:".Carbon::now()->format('d-m-Y h:i A')."-IdentificadorSelección:".$seleccion->id;
                $firma = Firma::create(['cadena'=>$cadena, 'idPersonal'=>$persona->id]);

                $seleccion->firma_id = $firma->id;
                $seleccion->save();
                
                Bitacora::create(['operacion'=>'Se registro la seleccion del proveedor $data[id]', 'idPersonal'=>$persona->id ]);
            });
                    
            return response()->json(['status'=>'success', 'message'=>'Registro exitoso!!']);
        } else { return response()->json(['status'=>'error', 'message'=>'Las contraseñas no coinciden.']); }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        return view('proveedor.seleccion.datos')->with('p', Proveedor::where('id', $id)->with('seleccion.puntos', 'seleccion.firma')->first());
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }

    public function exportar($id){
        $proveedor = Proveedor::where('id', $id)->with('seleccion.puntos.criterios', 'seleccion.firma')->first();
        $opc = RequisicionFormato::where('estado', '1')->where('indicador', 'SELEC')->first();
        //retorna la vista html en el navegdor
        //return view('requisicion.exportar')->with("requisicion", $requisicion)->with("opc", $opc);
        $pdf = \PDF::loadView('proveedor/seleccion/exportar', compact('proveedor', 'opc'))->setPaper('A4', 'landscape');
        //visualiza el pdf en el navegador
        //return $pdf->stream('ejemplo.pdf'); 
        
        //Descarga el pdf en el navegador
        return $pdf->download('seleccion_'.$id.'.pdf');
    }
}
