<?php

namespace App\Http\Controllers;

use App\Models\Categoria;
use App\Models\Producto;
use Illuminate\Http\Request;

use App\Models\Contacto;
use App\Models\Redes;

use Illuminate\Support\Facades\Storage;

class CategoriaController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index($seccion)
    {
        $categorias = Categoria::where('seccion', '=', $seccion)->orderBy('orden', 'asc')->get();
        return view('adm.categorias.index')->with('categorias', $categorias)->with('seccion', $seccion);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create($seccion)
    {
        return view('adm.categorias.create')->with('seccion', $seccion);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request, $seccion)
    {
        $categoria = new Categoria;
        if($request->nombre != ''){
            $categoria->nombre = $request->nombre;
        }
        if($request->orden != ''){
            $categoria->orden = $request->orden;
        }
        if($request->has('destacado')){
            $categoria->destacado = 1;
        } else {
            $categoria->destacado = 0;
        }
        $categoria->seccion = $seccion;
        if($request->hasFile('foto')){
            if($request->file('foto')->isValid()){
                $foto = $request->file('foto')->store('public/categorias');
                $categoria->foto = $foto;
            }
        }
        if($categoria->save()){
            $categorias = Categoria::where('seccion', '=', $seccion)->orderBy('orden', 'asc')->get();
            return redirect()->route('indexCategorias', $seccion)->with('categorias', $categorias);
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Categoria  $categoria
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
        $categoria = Categoria::find($id);
        $categoria->load('Productos');
        // dd($categoria->Productos);
        if(count($categoria->Productos) > 0){
            if(count($categoria->Productos) > 1){
                $productos = $categoria->Productos->sortBy('orden');
            } else {
                $productos = $categoria->Productos;
            }
            
        } else {
            $productos = [];
        }
        $contacto = Contacto::find(1);
        $redes = Redes::find(1);
        $categorias = Categoria::where('seccion', 'productos')->orderBy('orden', 'asc')->get();
        return view('front.categoria')->with('categoria', $categoria)->with('categorias', $categorias)->with('productos', $productos)->with('id', $id)
        ->with('contacto', $contacto)->with('redes', $redes);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Categoria  $categoria
     * @return \Illuminate\Http\Response
     */
    public function edit($id, $seccion)
    {
        $categoria = Categoria::find($id);
        return view('adm.categorias.edit')->with('categoria', $categoria)->with('seccion', $seccion);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Categoria  $categoria
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $seccion)
    {
        $categoria = Categoria::find($request->id);
        if($request->nombre != ''){
            $categoria->nombre = $request->nombre;
        }
        if($request->orden != ''){
            $categoria->orden = $request->orden;
        }
        if($request->has('destacado')){
            $categoria->destacado = 1;
        } else {
            $categoria->destacado = 0;
        }
        $categoria->seccion = $seccion;
        if($request->hasFile('foto')){
            if($request->file('foto')->isValid()){
                Storage::delete($categoria->foto);
                $foto = $request->file('foto')->store('public/categorias');
                $categoria->foto = $foto;
            }
        }
        if($categoria->save()){
            $categorias = Categoria::where('seccion', '=', $seccion)->orderBy('orden', 'asc')->get();
            return redirect()->route('indexCategorias', $seccion)->with('categorias', $categorias);
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Categoria  $categoria
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $categoria = Categoria::find($id);
        $seccion = $categoria->seccion;
        if($categoria->Productos){
            $productos = $categoria->Productos;
            foreach($productos as $producto){
                $producto->categoria->id = NULL;
                $producto->save();
            }
        }
        Storage::delete($categoria->foto);
        if($categoria->delete()){
            $categorias = Categoria::where('seccion', '=', $seccion)->orderBy('orden', 'asc')->get();
            return redirect()->route('indexCategorias', $seccion)->with('categorias', $categorias);
        }
    }
}
