<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\{Categoria,Producto};

class ProductoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $data=$request->all();
        $productos=null;
        $bandera=true;

        if (count($data)>0) {
            if ($data['estado']!=2) {
                $productos=Producto::where('estado',$data['estado']);
                $bandera=false;
            }
            if ($data['categoria']>0) {
                $productos=Producto::where('categoria_id',$data['categoria']);
                $bandera=false;
            }
            if ($data['nombre']!=null) {
                if ($bandera) {
                    $productos=Producto::where('nombre','like','%'.$data['nombre'].'%');
                    $bandera=false;
                }else {
                    $productos=$productos->where('nombre','like','%'.$data['nombre'].'%');
                }
            }
            if ($data['descripcion']!=null) {
                if ($bandera) {
                    $productos=Producto::where('descripcion','like','%'.$data['descripcion'].'%');
                    $bandera=false;
                }else {
                    $productos=$productos->where('descripcion','like','%'.$data['descripcion'].'%');
                }
            }
            if ($bandera) {
                $productos=Producto::where('estado',1)->orwhere('estado',0)->with('categoria')->get();;
            }else{
                $productos=$productos->with('categoria')->get();
            }

        }else{
             $productos=Producto::where('estado',1)->with('categoria')->get();
        }
        $categorias=Categoria::where('estado',1)->get();
        return view('admin.productos.listar',compact('productos','data','categorias'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $categorias=Categoria::where('estado',1)->get();
        return view('admin.productos.nuevo',compact('categorias'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        if (isset($_COOKIE['log'])) {
            //sacamos el id del usuario
          $usuario=json_decode($_COOKIE['log']);
          $ide=$usuario->idDP;
        }else {
          return response()->json([
              'estado'=>'error',
              'mensaje'=>'Su sesión a caducado por favor inicie de nuevo.'
          ]);
        }
        $nombre=ucfirst(mb_strtolower($request['nombre']));
        $descripcion=ucfirst($request['descripcion']);
        $precio=$request['precio'];
        $existencia=$request['existencias'];
        $categoria=$request['categoria'];
        $imagen=$request->file('imagen');
        $imagenE=$request->file('imagenE');
        $portada="";
        $imagenes="";
        if ($nombre!=null && $descripcion!=null && $precio!=null && $existencia!=null && $categoria!=null && $imagen!=null && $imagenE!=null) {
            $con="";
            $ruta="/img/productos/";
            //$ruta="\\img\\productos\\";

            $prod=Producto::latest('id')->first();
            if($prod==null){
                $producto_id=0;
            }else{
                $producto_id=$prod->id;
            }
            if (count($imagenE)==3) {
                $cont=0;
                foreach ($imagenE as $img){
                    $cont=$cont+1;
                    $una="extras".($producto_id+1)."-".$cont.".webp";
                    if($cont==1){
                        $imagenes.=$una;
                    }else{
                        $imagenes.=",".$una;
                    }
                    $this->guardar($img,$ruta,$una);
                }
            }else{
                return response()->json([
                    'estado'=>'error',
                    'mensaje'=>'No as llenado todos los campos requeridos.'
                    ]);
            }
            $portada="portada".($producto_id+1).".webp";
            $this->guardar($imagen,$ruta,$portada);
            Producto::create(['nombre'=>$nombre,'precio'=>$precio,'existencia'=>$existencia,'portada'=>$portada,'imagenes'=>$imagenes,'descripcion'=>$descripcion,'estado'=>1,'categoria_id'=>$categoria,'usuario_id'=>$ide]);
            return response()->json([
                'estado'=>'success',
                'mensaje'=>'Producto registrado con éxito.'
                ]);
            }else{
            return response()->json([
                'estado'=>'error',
                'mensaje'=>'No as llenado todos los campos requeridos.'
                ]);
        }

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $categorias=Categoria::where('estado',1)->get();
        $producto=Producto::where('id',$id)->first();
        return view('admin.productos.edit', compact('producto','categorias'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        if (isset($_COOKIE['log'])) {
            //sacamos el id del usuario
          $usuario=json_decode($_COOKIE['log']);
          $ide=$usuario->idDP;
        }else {
          return response()->json([
              'estado'=>'error',
              'mensaje'=>'Su sesión a caducado por favor inicie de nuevo.'
          ]);
        }
        $nombre=$request['nombre'];
        $descripcion=$request['descripcion'];
        $precio=$request['precio'];
        $existencia=$request['existencias'];
        $categoria=$request['categoria'];
        $imagen=$request->file('imagen');
        $imagenE=$request->file('imagenE');
        $portada="";
        $imagenes="";
        if ($nombre!=null && $descripcion!=null && $precio!=null && $existencia!=null && $categoria!=null) {
            $con="";
            $ruta="/img/productos/";
            //$ruta="\\img\\productos\\";
            if ($imagenE!=null) {
                if (count($imagenE)==3) {
                    $cont=0;
                    foreach ($imagenE as $img){
                        $cont=$cont+1;
                        $una="extras".$id."-".$cont.".webp";
                        if($cont==1){
                            $imagenes.=$una;
                        }else{
                            $imagenes.=",".$una;
                        }
                        $this->guardar($img,$ruta,$una);
                    }
                }else{
                    return response()->json([
                        'estado'=>'error',
                        'mensaje'=>'No as llenado todos los campos requeridos.'
                        ]);
                }
            }
            if ($imagen!=null) {
            $portada="portada".$id.".webp";
            $this->guardar($imagen,$ruta,$portada);
            }
            $producto=Producto::where('id',$id)->first();
            $producto->nombre=$nombre;
            $producto->precio=$precio;
            $producto->existencia=$existencia;
            if ($portada=="") {
                $portada=$producto->portada;
            }
            $producto->portada=$portada;
            if ($imagenes=="") {
                $imagenes=$producto->imagenes;
            }
            $producto->imagenes=$imagenes;
            $producto->descripcion=$descripcion;
            $producto->categoria_id=$categoria;
            $producto->usuario_id=$ide;
            $producto->save();
            return response()->json([
                'estado'=>'success',
                'mensaje'=>'Producto registrado con éxito.'
                ]);
            }else{
            return response()->json([
                'estado'=>'error',
                'mensaje'=>'No as llenado todos los campos requeridos.'
                ]);
        }

      
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if (isset($_COOKIE['log'])) {
            //sacamos el id del usuario
          $usuario=json_decode($_COOKIE['log']);
          $ide=$usuario->idDP;
        }else {
          return response()->json([
              'estado'=>'error',
              'mensaje'=>'Su sesión a caducado por favor inicie de nuevo.'
          ]);
        }
        $producto=Producto::where('id',$id)->first();
        $producto->estado=0;
        $producto->usuario_id=$ide;
        $producto->save();
        return response()->json([
            'estado'=>'success',
            'mensaje'=>'Producto eliminado con éxito.'
            ]);
    }
    public function guardar($imagen,$ruta,$nombre_img){
        $calidad=60;
        $nombre = explode(".",$imagen->getClientOriginalName());
        //dd(getcwd().$ruta.$nombre_img);
        //if (file_exists(getcwd().$ruta.$nombre_img)) {
        //    unlink(getcwd().$ruta, $nombre_img);
        //}
        if ($nombre[count($nombre)-1]=="webp"){
            $imagen->move(getcwd().$ruta.$nombre_img);
        }else{
            //dd($imagen);
            $img=\Image::make($imagen);
            $img->save(getcwd().$ruta.$nombre_img,$calidad);
            //dd(getcwd().$ruta.$nombre_img);

        }
    }

    public function detallesProducto($id){
        $producto=Producto::where('id',$id)->first();
        return view('productoDetalles',compact('producto'));
    }
}
