<?php

namespace App\Http\Controllers;

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

class OfertaController extends Controller
{
    public function index(Request $request)
    {
        $filtro = $request->get('filtro');
        
        $ofertas = Oferta::orderBy('id', 'DESC')
            ->with('proveedor')
            ->paginate(5);
        
        return [
            'paginacion' => [
                'total'         => $ofertas->total(),
                'pagina_actual' => $ofertas->currentPage(),
                'por_pagina'    => $ofertas->perPage(),
                'ultima_pagina' => $ofertas->lastPage(),
                'desde'         => $ofertas->firstItem(),
                'hasta'         => $ofertas->lastItem(),
            ],
            'ofertas' => $ofertas
        ];
    }

    public function store(Request $request)
    {
        $oferta = Oferta::create($request->all());

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

            $oferta->imagen = asset($path);
            $oferta->save();
        }

        return;
    }

    public function update(Request $request, $id)
    {
        $oferta = Oferta::find($id);

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

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

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

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

            Storage::disk('public')->delete($oferta->imagen);
            
            $oferta->imagen = null;
        }

        $oferta->titulo = $request->titulo;
        $oferta->descripcion = $request->descripcion;
        $oferta->proveedor_id = $request->proveedor_id;
        $oferta->save();

        return;
    }
}
