<?php

namespace App\Http\Controllers;
use App\TipoSocio;
use App\Producto;
use App\Bonificacion;
use App\ListaPrecios;
use App\ListaPreciosProducto;
use App\ListaPreciosProductosBonificacion;

use Illuminate\Support\Facades\Validator;

use Illuminate\Http\Request;

class PreciosController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $listaPrecios=ListaPrecios::with('tipo_socio')
                ->get();
        return view('precios.lista',compact('listaPrecios'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        $tiposSocios=TipoSocio::all();
        $productos=Producto::all();
        $bonificaciones=Bonificacion::all();
        return view('precios.nuevo',compact('tiposSocios','productos','bonificaciones'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //

        $validator = Validator::make($request->all(), [
            'id_tipo_socio' => 'required|unique:crm_listas_precios',
        ]);
        if ($validator->fails()) {
            $arrResponse = [
                'message' => 'La lista ya existe, no se guardado correctamente'
            ];
            return redirect()->back()->withInput()->with($arrResponse);
            dd();
        }

        $listaPrecios = new ListaPrecios();
        $listaPrecios->nombre = $request->nombre_lista;
        $listaPrecios->id_tipo_socio = $request->id_tipo_socio;
        $listaPrecios->save();

        if($listaPrecios->id){
            $i=0;
            while(isset($request->id_producto[$i])){
                $listaPreciosProducto = new ListaPreciosProducto();
                $listaPreciosProducto->id_lista = $listaPrecios->id;
                $listaPreciosProducto->id_producto = $request->id_producto[$i];
                $listaPreciosProducto->precio_base = $request->precioBase[$i];
                $listaPreciosProducto->precio_piso = $request->precioPiso[$i];
                $listaPreciosProducto->porcentaje_eva = $request->porcentaje_eva[$i];
                $listaPreciosProducto->save();
                $i++;
                $nombre='id_bonificacion'.$i;
                $nombre2='id_bonificacion_eva'.$i;
                $kk=0;

                foreach ($request[$nombre] as $value) {
                    echo $request[$nombre2][$kk];

                    $bonificacion = new ListaPreciosProductosBonificacion();
                    $bonificacion->id_lista_producto = $listaPreciosProducto->id;
                    $bonificacion->id_bonificacion_eva = $request[$nombre2][$kk];
                    $bonificacion->id_bonificacion = $value;
                    $bonificacion->save();
                    $kk++;

                }
            }
            $arrResponse = [
                'message' => 'Lista de precios guardada correctamente'
            ];
            return redirect()->route('marketing.precios')->with($arrResponse);
        }
        $arrResponse = [
            'message' => 'Error no se guardado correctamente'
        ];
        return redirect()->route('marketing.precios')->with($arrResponse);
    }

    /**
     * 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(ListaPrecios $lista_precios)
    {
        //
        
        $tiposSocios=TipoSocio::all();
        $productos=Producto::all();
        $bonificaciones=Bonificacion::all();

        $listadoProductos=ListaPreciosProducto::where('id_lista',$lista_precios->id)->with('bonificaciones')->get();
        //dd($listadoProductos);
        return view('precios.editar',compact('tiposSocios','productos','bonificaciones','listadoProductos','lista_precios'));
        
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request,ListaPrecios $object)
    {
        //
        
        //$listaProductos->destroy();
        
        $object->nombre = $request['nombre_lista'];
        $object->id_tipo_socio = $request['id_tipo_socio'];
        $object->update();
        //Eliminar item lista
        $listaProductos = ListaPreciosProducto::where('id_lista', $object->id)->delete();

        $i=0;
        while(isset($request->id_producto[$i])){
            $listaPreciosProducto = new ListaPreciosProducto();
            $listaPreciosProducto->id_lista = $object->id;
            $listaPreciosProducto->id_producto = $request->id_producto[$i];
            $listaPreciosProducto->precio_base = $request->precioBase[$i];
            $listaPreciosProducto->precio_piso = $request->precioPiso[$i];
            $listaPreciosProducto->porcentaje_eva = $request->porcentaje_eva[$i];
            $listaPreciosProducto->save();
            $i++;
            $nombre='id_bonificacion'.$i;
            $nombre2='id_bonificacion_eva'.$i;
            $kk=0;

            foreach ($request[$nombre] as $value) {
                $bonificacion = new ListaPreciosProductosBonificacion();
                $bonificacion->id_lista_producto = $listaPreciosProducto->id;
                $bonificacion->id_bonificacion_eva = $request[$nombre2][$kk];
                $bonificacion->id_bonificacion = $value;
                $bonificacion->save();
                $kk++;

            }
        }
        $arrResponse = [
            'message' => 'Lista de precios actualizada correctamente'
        ];
        return redirect()->route('marketing.precios')->with($arrResponse);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
        ListaPrecios::destroy($id);
        $listaProductos = ListaPreciosProducto::where('id_lista', $id)->delete();
        $listaPreciosProductosBonificacion = ListaPreciosProductosBonificacion::where('id_lista_producto', $id)->delete();
        $arrResponse = [
            'message' => 'Lista de precio eliminada correctamente'
        ];
        return redirect()->route('marketing.precios')->with($arrResponse);
    }
}
