<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Models\Persona;
use Illuminate\Support\Facades\Redirect;
use App\Http\Requests\PersonaFormRequest;
use DB;

use Illuminate\Support\Facades\Session;
use Codedge\Fpdf\Fpdf\Fpdf;

class ClienteController extends Controller
{
    private $fpdf;
    public function __construct()
    {
        //validadndo acceso por un usuario
        $this->middleware('permission:cliente-list|cliente-create|cliente-edit|cliente-delete', ['only' => ['index','show']]);
         $this->middleware('permission:cliente-create', ['only' => ['create','store']]);
         $this->middleware('permission:cliente-edit', ['only' => ['edit','update']]);
         $this->middleware('permission:cliente-delete', ['only' => ['destroy']]);

    }
    public function index(Request $request)
    {
        if ($request) 
        {
            $query=trim($request->get('searchText'));
            $personas=DB::table('persona')
            ->where('nombre','LIKE','%'.$query.'%')
            ->where('tipo_persona','=','Cliente')
            ->orwhere('num_documento','LIKE','%'.$query.'%')
            ->where('tipo_persona','=','Cliente')
            ->orderBy('idpersona','desc')
            ->paginate(10);

            return view('ventas.cliente.index',["personas"=>$personas,"searchText"=>$query]);
        }

    }
    public function create()
    {
        return view("ventas.cliente.create");

    }
    public function store(PersonaFormRequest $request)
    {
        $persona=new Persona;
        $persona->tipo_persona='Cliente';
        $persona->nombre=$request->get('nombre');
        $persona->tipo_documento=$request->get('tipo_documento');
        $persona->num_documento=$request->get('num_documento');
        $persona->direccion=$request->get('direccion');
        $persona->telefono=$request->get('telefono');
        $persona->email=$request->get('email');
        $persona->save();

        session::flash('statuscode','success');
        return Redirect::to('ventas/cliente')->with('status','Cliente creado con éxito.');

    }
    public function show($id)
    {
        return view("ventas.cliente.show",["persona"=> Persona::findOrfail($id)]);

    }
    public function edit($id)
    {
        return view("ventas.cliente.edit",["persona"=> Persona::findOrfail($id)]);

    }
    public function update(PersonaFormRequest $request,$id)
    {
        $persona=Persona::findOrfail($id);
        $persona->nombre=$request->get('nombre');
        $persona->tipo_documento=$request->get('tipo_documento');
        $persona->num_documento=$request->get('num_documento');
        $persona->direccion=$request->get('direccion');
        $persona->telefono=$request->get('telefono');
        $persona->email=$request->get('email');
        $persona->update(); 

        session::flash('statuscode','success');
        return Redirect::to('ventas/cliente')->with('status','Cliente actualizado con éxito.');

    }
    public function destroy($id)
    {
        $persona=Persona::findOrfail($id);
        $persona->tipo_persona='Inactivo';
        $persona->update();

        session::flash('statuscode','success');
        return Redirect::to('ventas/cliente')->with('status','Cliente eliminado con éxito.');

    }
    public function reporte(){
         //Obtenemos los registros
         $registros=DB::table('persona')
            ->where ('tipo_persona','=','Cliente')
            ->orderBy('idpersona','desc')
            ->get();
        $empresas=DB::table('empresa')
           ->select('ruc','razon_social','direccion','telefono','correo','pag_web','logo')
           ->first();

           $pdf = new FPDF('P', 'mm','A4');
           $pdf->AddPage();
           $pdf->Image('imagenes/empresa/'.$empresas->logo,10,10,60);

           $pdf->SetFont('Arial','B',10);
           $pdf->SetXY(100,15);
           $pdf->Cell(20  ,0,utf8_decode(strtoupper($empresas->razon_social)),0,0,'C');

           $pdf->SetFont('Arial','',9);
           $pdf->SetXY(100,20);
           $pdf->Cell(20  ,0,utf8_decode(strtoupper('RUC: '.$empresas->ruc)),0,0,'C');

           $pdf->SetFont('Arial','',8);
           $pdf->SetXY(100,24);
           $pdf->Cell(20  ,0,utf8_decode(strtoupper($empresas->direccion)),0,0,'C');

           $pdf->SetFont('Arial','',8);
           $pdf->SetXY(100,28);
           $pdf->Cell(20  ,0,utf8_decode($empresas->correo ." - ". $empresas->pag_web ." - ". $empresas->telefono),0,0,'C');

           $pdf->SetFont('Arial','B',9);
           $pdf->SetXY(155,20);
           $pdf->MultiCell(55,0,utf8_decode('Fecha Impresión'),0,'C');
           $pdf->SetFont('Arial','',9);
           $pdf->SetXY(155,25);
           $pdf->MultiCell(55,0,utf8_decode(date('m - d - Y')),0,'C');

           $pdf->SetFont('Arial','B',12);
           $pdf->SetXY(80,37);
           $pdf->Cell(50,0,utf8_decode('LISTADO DE CLIENTES'),0,0,'C');

           $pdf->Line(10,41,200,41);
           $pdf->Line(10,42,200,42);

           $pdf->Ln(8);
           $pdf->SetTextColor(0,0,0);  // Establece el color del texto
           $pdf->SetFillColor(232, 232, 232); // establece el color del fondo de la celda
           $pdf->SetFont('Arial','B',11);
         //El ancho de las columnas debe de sumar promedio 190  
         $pdf->cell(10,8,utf8_decode("Id"),1,"","C",true);      
         $pdf->cell(80,8,utf8_decode("Nombre"),1,"","C",true);
         $pdf->cell(25,8,utf8_decode("Documento"),1,"","C",true);
         $pdf->cell(50,8,utf8_decode("Email"),1,"","C",true);
         $pdf->cell(25,8,utf8_decode("Teléfono"),1,"","C",true);
         
         $pdf->Ln();
         $pdf->SetTextColor(0,0,0);  // Establece el color del texto 
         $pdf->SetFillColor(255, 255, 255); // establece el color del fondo de la celda
         $pdf->SetFont("Arial","",9);
         
         foreach ($registros as $key => $reg)
         {
            $pdf->cell(10,6,utf8_decode($key + 1),1,"","L",true);
            $pdf->cell(80,6,utf8_decode($reg->nombre),1,"","L",true);
            $pdf->cell(25,6,utf8_decode($reg->num_documento),1,"","L",true);
            $pdf->cell(50,6,utf8_decode($reg->email),1,"","L",true);
            $pdf->cell(25,6,utf8_decode($reg->telefono),1,"","L",true);
            $pdf->Ln(); 
         }

         $pdf->Output();
         exit;
    }
}
