<?php

namespace App\Http\Controllers;

use App\Http\Requests\EmpresaFormRequest;
use App\Models\Empresa;
use Codedge\Fpdf\Fpdf\Fpdf;
use DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;

class EmpresaController extends Controller
{
    public function __construct()
    {
        $this->middleware('permission:empresa-list|empresa-create|empresa-edit|empresa-delete', ['only' => ['index', 'show']]);
        $this->middleware('permission:empresa-create', ['only' => ['create', 'store']]);
        $this->middleware('permission:empresa-edit', ['only' => ['edit', 'update']]);
        $this->middleware('permission:empresa-delete', ['only' => ['destroy']]);
    }

    public function index(Request $request)
    {
        if ($request) {
            $query = trim($request->get('searchText'));
            $empresas = DB::table('centro_medicos')
                ->select('id_centro_medico', 'nombre', 'logo', 'rnc', 'tipo', 'primer_telefono', 'segundo_telefono', 'correo', 'fax', 'especialidades', 'provincia', 'municipio', 'barrio', 'calle', 'pagina_web', 'seguro_medico', 'estado')
                ->where('nombre', 'LIKE', '%'.$query.'%')
                ->orwhere('rnc', 'LIKE', '%'.$query.'%')
                ->orderBy('id_centro_medico', 'desc')
                ->paginate(10);

            return view('almacen.empresa.index', ['empresas' => $empresas, 'searchText' => $query]);
        }
    }

    public function create()
    {
        return view('almacen.empresa.create');
    }

    public function store(EmpresaFormRequest $request)
    {
        $empresa = new Empresa;
        $empresa->nombre = $request->get('nombre');
        $empresa->rnc = $request->get('rnc');
        $empresa->tipo = $request->get('tipo');
        $empresa->primer_telefono = $request->get('primer_telefono');
        $empresa->segundo_telefono = $request->get('segundo_telefono');
        $empresa->correo = $request->get('correo');
        $empresa->fax = $request->get('fax');
        $empresa->especialidades = $request->get('especialidades');
        $empresa->provincia = $request->get('provincia');
        $empresa->municipio = $request->get('municipio');
        $empresa->barrio = $request->get('barrio');
        $empresa->calle = $request->get('calle');
        $empresa->pagina_web = $request->get('pagina_web');
        $empresa->seguro_medico = $request->get('seguro_medico');

        if ($request->hasFile('logo')) {
            $file = $request->file('logo');
            $file->move(public_path().'/imagenes/empresa/', $file->getClientOriginalName());
            $empresa->logo = $file->getClientOriginalName();
        }
        
        $empresa->save();

        session::flash('statuscode', 'success');

        return Redirect::to('almacen/empresa')->with('status', 'Centro Médico creado con éxito.');

    }

    public function show($id)
    {
        return view('almacen.empresa.show', ['empresa' => Empresa::findOrFail($id)]);
    }

    public function edit($id)
    {
        return view('almacen.empresa.edit', ['empresa' => Empresa::findOrfail($id)]);
    }

    public function update(EmpresaFormRequest $request, $id)
    {
        $empresa = Empresa::findOrFail($id);

        $empresa->nombre = $request->get('nombre');
        $empresa->rnc = $request->get('rnc');
        $empresa->tipo = $request->get('tipo');
        $empresa->primer_telefono = $request->get('primer_telefono');
        $empresa->segundo_telefono = $request->get('segundo_telefono');
        $empresa->correo = $request->get('correo');
        $empresa->fax = $request->get('fax');
        $empresa->especialidades = $request->get('especialidades');
        $empresa->provincia = $request->get('provincia');
        $empresa->municipio = $request->get('municipio');
        $empresa->barrio = $request->get('barrio');
        $empresa->calle = $request->get('calle');
        $empresa->pagina_web = $request->get('pagina_web');
        $empresa->seguro_medico = $request->get('seguro_medico');
        
        if ($request->hasFile('logo')) {
            $file = $request->file('logo');
            $file->move(public_path().'/imagenes/empresa/', $file->getClientOriginalName());
            $empresa->logo = $file->getClientOriginalName();
        }
        

        $empresa->update();

        session::flash('statuscode', 'success');

        return Redirect::to('almacen/empresa')->with('status', 'Centro Médico actualizado con éxito.');
    }

    public function destroy($id)
    {
        $articulo = Empresa::find($id);
        $articulo->delete();

        session::flash('statuscode', 'success');

        return Redirect::to('almacen/empresa')->with('status', 'Centro Médico eliminado con éxito.');
    }

    public function reporte()
    {
        //Obtenemos los registros
        $empresas = DB::table('centro_medicos')
            ->select('id_centro_medico', 'nombre', 'logo', 'rnc', 'tipo', 'primer_telefono', 'segundo_telefono', 'correo', 'fax', 'especialidades', 'provincia', 'municipio', 'barrio', 'calle', 'pagina_web', 'seguro_medico', 'estado')
            ->orderBy('id_centro_medico', 'desc')
            ->get();

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

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

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

        $pdf->SetFont('Arial', '', 8);
        $pdf->SetXY(100, 24);
        $pdf->Cell(20, 0, utf8_decode(strtoupper('centro@mail.com')), 0, 0, 'C');

        $pdf->SetFont('Arial', '', 8);
        $pdf->SetXY(100, 28);
        $pdf->Cell(20, 0, utf8_decode(strtoupper('centro@mail.com')), 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 CENTROS MÉDICOS'), 0, 0, 'C');

        $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(15, 8, utf8_decode('Id'), 1, '', 'C', true);
        $pdf->cell(40, 8, utf8_decode('Nombre'), 1, '', 'C', true);
        $pdf->cell(28, 8, utf8_decode('RNC'), 1, '', 'C', true);
        $pdf->cell(42, 8, utf8_decode('Correo'), 1, '', 'C', true);
        $pdf->cell(70, 8, utf8_decode('Direcion'), 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', '', 10);

        foreach ($empresas as $key => $reg) {
            $pdf->cell(15, 6, utf8_decode($key + 1), 1, '', 'C', true);
            $pdf->cell(40, 6, utf8_decode($reg->nombre), 1, '', 'L', true);
            $pdf->cell(28, 6, utf8_decode($reg->rnc), 1, '', 'L', true);
            $pdf->cell(42, 6, utf8_decode($reg->correo), 1, '', 'L', true);
            $pdf->cell(70, 6, $reg->provincia, 1, '', 'L', true);
            $pdf->Ln();
        }

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