<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Profesional;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File; 

class ProfesionalController extends Controller
{
    public function index(Request $request)
    {
        $filtro = $request->get('filtro');
        $paginar = $request->get('paginar') === 'true';
        
        $profesionales = Profesional::orderBy('id', 'DESC')
            ->orWhere('nombre', 'LIKE', '%'.$filtro.'%')
            ->orWhere('direccion', 'LIKE', '%'.$filtro.'%')
            ->orWhere('telefono', 'LIKE', '%'.$filtro.'%')
            ->orWhere('email', 'LIKE', '%'.$filtro.'%')
            ->orWhere('web', 'LIKE', '%'.$filtro.'%')
            ->with('tipos_profesional');
        
        if ($paginar)
        {
            $profesionales = $profesionales->paginate(5);
            $paginacion =
            [
                'total'         => $profesionales->total(),
                'pagina_actual' => $profesionales->currentPage(),
                'por_pagina'    => $profesionales->perPage(),
                'ultima_pagina' => $profesionales->lastPage(),
                'desde'         => $profesionales->firstItem(),
                'hasta'         => $profesionales->lastItem(),
            ];
        }
        else {
            $profesionales = $profesionales->get();
            $paginacion = [];
        }
        
        return [
            'paginacion' => $paginacion,
            'profesionales' => $profesionales
        ];
    }

    public function store(Request $request)
    {
        $this->validate($request, [
            'nombre'    => 'required',
        ]);
        
        $profesional = Profesional::create($request->all());

        if($request->hasFile('logo')) {
            $path = Storage::disk('public')->put('img/profesionales', $request->file('logo'));

            $profesional->logo = asset($path);
            $profesional->save();
        }

        return;
    }

    public function show($id)
    {
        return Profesional::find($id);
    }

    public function update(Request $request, $id)
    {
        $this->validate($request, [
            'nombre'    => 'required',
        ]);

        $profesional = Profesional::find($id);

        //Si se agrega o cambia la imágen
        if (!is_null($request->fileLogo)) {

            //Si se cambia
            if (!is_null($profesional->logo)) Storage::disk('public')->delete($profesional->logo);

            $path = Storage::disk('public')->put('img/profesionales', $request->file('fileLogo'));

            $profesional->logo = $path;
        }
        //Si se borra
        else if (is_null($request->logo) && !is_null($profesional->logo)){

            Storage::disk('public')->delete($profesional->logo);
            
            $profesional->logo = null;
        }

        $profesional->nombre = $request->nombre;
        $profesional->tipos_profesional_id = $request->tipos_profesional_id;
        $profesional->direccion = $request->direccion;
        $profesional->telefono = $request->telefono;
        $profesional->email = $request->email;
        $profesional->web = $request->web;
        
        $profesional->save();

        return;
    }

    public function destroy($id)
    {
        $profesional = Profesional ::find($id);

        $profesional->delete();
    }
}
