<?php

namespace App\Http\Controllers;

use App\Models\Producto;
use App\Models\Categoria;
// use App\Models\Color;
use App\Models\Contacto;
use App\Models\Redes;
use Illuminate\Http\Request;

use Illuminate\Support\Facades\Storage;

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

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $categorias = Categoria::orderBy('orden', 'asc')->get();
        $productos = Producto::orderBy('orden', 'asc')->get();
        return view('adm.productos.create')->with('productos', $productos)->with('categorias', $categorias);
        
        // 
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $producto = new Producto;
        $producto->nombre = $request->nombre;
        $producto->descripcion = $request->descripcion;
        $producto->texto_izq = $request->texto_izq;
        $producto->texto_der = $request->texto_der;
        $producto->datos_tecnicos = $request->datos_tecnicos;
        $producto->datos_electricos = $request->datos_electricos;
        
        $producto->categoria_id = $request->categoria_id;
        $producto->orden = $request->orden;
        if($request->hasFile('foto_circuito')){
            if($request->file('foto_circuito')->isValid()){
                $producto->foto_circuito = $request->file('foto_circuito')->store('public/productos');
            }
        }
        if($request->hasFile('ficha_tecnica')){
            if($request->file('ficha_tecnica')->isValid()){
                $producto->nombre_archivo = $request->file('ficha_tecnica')->getClientOriginalName();
                $producto->ficha_tecnica = $request->file('ficha_tecnica')->store('public/productos');
            }
        }
        if($request->hasFile('foto')){
            if($request->file('foto')->isValid()){
                $producto->foto = $request->file('foto')->store('public/productos');
            }
        }
        if($request->hasFile('foto2')){
            if($request->file('foto2')->isValid()){
                $producto->foto2 = $request->file('foto2')->store('public/productos');
            }
        }
        if($request->hasFile('foto3')){
            if($request->file('foto3')->isValid()){
                $producto->foto3 = $request->file('foto3')->store('public/productos');
            }
        }
        if($request->hasFile('foto4')){
            if($request->file('foto4')->isValid()){
                $producto->foto4 = $request->file('foto4')->store('public/productos');
            }
        }
        if($request->hasFile('foto5')){
            if($request->file('foto5')->isValid()){
                $producto->foto5 = $request->file('foto5')->store('public/productos');
            }
        }
        if($producto->save()){
            $productos = Producto::orderBy('orden', 'asc')->get();
            return redirect()->route('indexProductos')->with('productos', $productos);
            // return view('adm.productos.index')->with('productos', $productos);
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Producto  $producto
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $producto = Producto::find($id);
        $categorias = Categoria::where('seccion', 'productos')->orderBy('orden', 'asc')->get();
        $categoria_id = $producto->categoria_id;
        $contacto = Contacto::find(1);
        $redes = Redes::find(1);
        return view('front.producto')->with('producto', $producto)
        ->with('contacto', $contacto)->with('redes', $redes)->with('categorias', $categorias)->with('id', $categoria_id);
        /*
            
        */
    }

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

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Producto  $producto
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request)
    {
        $producto = Producto::find($request->id);
        $producto->nombre = $request->nombre;
        $producto->descripcion = $request->descripcion;
        $producto->categoria_id = $request->categoria_id;
        $producto->orden = $request->orden;
        
        $producto->texto_izq = $request->texto_izq;
        $producto->texto_der = $request->texto_der;
        $producto->datos_tecnicos = $request->datos_tecnicos;
        $producto->datos_electricos = $request->datos_electricos;
        if($request->hasFile('foto_circuito')){
            if($request->file('foto_circuito')->isValid()){
                $producto->foto_circuito = $request->file('foto_circuito')->store('public/productos');
            }
        }
        if($request->hasFile('ficha_tecnica')){
            if($request->file('ficha_tecnica')->isValid()){
                $producto->nombre_archivo = $request->file('ficha_tecnica')->getClientOriginalName();
                if($producto->ficha_tecnica){
                    Storage::delete($producto->ficha_tecnica);
                }
                $producto->ficha_tecnica = $request->file('ficha_tecnica')->store('public/productos');
            }
        }
        
        if($request->hasFile('foto')){
            if($request->file('foto')->isValid()){
                Storage::delete($producto->foto);
                $foto = $request->file('foto')->store('public/productos');
                $producto->foto = $foto;
            }
        }
        if($request->hasFile('foto2')){
            if($request->file('foto2')->isValid()){
                if($producto->foto2){
                    Storage::delete($producto->foto2);
                }
                $foto2 = $request->file('foto2')->store('public/productos');
                $producto->foto2 = $foto2;
            }
        }
        if($request->hasFile('foto3')){
            if($request->file('foto3')->isValid()){
                if($producto->foto3){
                    Storage::delete($producto->foto3);
                }
                $foto3 = $request->file('foto3')->store('public/productos');
                $producto->foto3 = $foto3;
            }
        }
        if($request->hasFile('foto4')){
            if($request->file('foto4')->isValid()){
                if($producto->foto4){
                    Storage::delete($producto->foto4);
                }
                $foto4 = $request->file('foto4')->store('public/productos');
                $producto->foto4 = $foto4;
            }
        }
        if($request->hasFile('foto5')){
            if($request->file('foto5')->isValid()){
                if($producto->foto5){
                    Storage::delete($producto->foto5);
                }
                $foto5 = $request->file('foto5')->store('public/productos');
                $producto->foto5 = $foto5;
            }
        }
        if($producto->save()){
            $productos = Producto::orderBy('orden', 'asc')->get();
            return redirect()->route('indexProductos')->with('productos', $productos);
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Producto  $producto
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $producto = Producto::find($id);
        $producto->relacionados()->detach();
        Storage::delete($producto->foto);
        if($producto->foto2){
            Storage::delete($producto->foto2);
        }
        if($producto->foto3){
            Storage::delete($producto->foto3);
        }
        if($producto->foto4){
            Storage::delete($producto->foto4);
        }
        if($producto->foto5){
            Storage::delete($producto->foto5);
        }
        if($producto->delete()){
            $productos = Producto::orderBy('orden', 'asc')->get();
            return redirect()->route('indexProductos')->with('productos', $productos);
        }
    }
    
    public function descargarFicha($id){
        $producto = Producto::find($id);
        return Storage::download($producto->ficha_tecnica, $producto->nombre_archivo);
    }
    
    public function eliminarFoto2($id){
        $producto = Producto::find($id);
        Storage::delete($producto->foto2);
        $producto->foto2 = NULL;
        if($producto->save()){
            $categorias = Categoria::orderBy('orden', 'asc')->get();
            return redirect()->route('editarProducto', $id)->with('producto', $producto)->with('id', $id)->with('categorias', $categorias);
            // return view('adm.productos.edit')->with('producto', $producto)->with('id', $id)->with('categorias', $categorias);
        }
    }
    
    public function eliminarFoto3($id){
        $producto = Producto::find($id);
        Storage::delete($producto->foto3);
        $producto->foto3 = NULL;
        if($producto->save()){
            $categorias = Categoria::orderBy('orden', 'asc')->get();
            return redirect()->route('editarProducto', $id)->with('producto', $producto)->with('id', $id)->with('categorias', $categorias);
            // return view('adm.productos.edit')->with('producto', $producto)->with('id', $id)->with('categorias', $categorias);
        }
    }
    
    public function eliminarFoto4($id){
        $producto = Producto::find($id);
        Storage::delete($producto->foto4);
        $producto->foto4 = NULL;
        if($producto->save()){
            $categorias = Categoria::orderBy('orden', 'asc')->get();
            return redirect()->route('editarProducto', $id)->with('producto', $producto)->with('id', $id)->with('categorias', $categorias);
            // return view('adm.productos.edit')->with('producto', $producto)->with('id', $id)->with('categorias', $categorias);
        }
    }
    
    public function eliminarFoto5($id){
        $producto = Producto::find($id);
        Storage::delete($producto->foto5);
        $producto->foto5 = NULL;
        if($producto->save()){
            $categorias = Categoria::orderBy('orden', 'asc')->get();
            return redirect()->route('editarProducto', $id)->with('producto', $producto)->with('id', $id)->with('categorias', $categorias);
            // return view('adm.productos.edit')->with('producto', $producto)->with('id', $id)->with('categorias', $categorias);
        }
    }
}
