//GET:
        // Para crear el objeto que tiene las lineas de pedido (productos y cantidad) y el proveedor para pasárselos a la vista SeleccionarProductos
        public async Task <IActionResult> SelectProductos(ProveedoresViewModel proveedorSeleccionadoViewModel)
        {
            List <Producto> productosTotales = await _context.Producto.ToListAsync(); //lista de todos los productos

            List <Producto> productosAsociados    = new List <Producto>();            //lista de productos asociados a un proveedor
            Proveedor       proveedorSeleccionado = new Proveedor();

            proveedorSeleccionado.idProveedor = proveedorSeleccionadoViewModel.idProveedor; //dejamos en la variable proveedorSeleccionado el proveedor

            productosAsociados = obtenerProductosDeProveedor(proveedorSeleccionado);        //llamamos al metodo para obtener los productos asociados al proveedor

            ProveedorProductosViewModel selectProveedorProductos = new ProveedorProductosViewModel();

            selectProveedorProductos.productos = productosAsociados;
            var proveedorRecuperado = await _context.Proveedor.Where <Proveedor>(p => p.idProveedor == proveedorSeleccionado.idProveedor).FirstAsync();

            selectProveedorProductos.proveedor   = proveedorRecuperado;
            selectProveedorProductos.idProveedor = proveedorRecuperado.idProveedor;
            //en mi objeto selectProveedorProductos dejo las lineasPedido (con los productos,cantidad y precio seleccionados) y el proveedor que los suministra
            if (proveedorSeleccionadoViewModel.noProductosSeleccionados)
            {
                ModelState.AddModelError("idProveedor", "Error. No ha seleccionado productos.");
            }
            if (proveedorSeleccionadoViewModel.noPositivo)
            {
                ModelState.AddModelError("idProveedor", "Error. La cantidad no puede ser menor que 0.");
            }
            if (proveedorSeleccionadoViewModel.mayorCien)
            {
                ModelState.AddModelError("idProveedor", "Error. La cantidad no puede ser mayor que 100.");
            }
            //me devuelve la vista con mi objeto selectProveedorProductos (producto, cantidad, precio seleccionados junto con el proveedor asociado)
            return(View(selectProveedorProductos));
        }
        // Prepara la vista para mostrar el resumen

        public async Task <IActionResult> ResumenPedido(ProveedorProductosViewModel proveedorProductosSeleccionados)
        {
            List <Producto> productos = new List <Producto>();

            foreach (int id in proveedorProductosSeleccionados.IdsProductosSeleccionados)
            {
                Producto producto = await _context.Producto.Where <Producto>(prod => prod.idProducto == id).FirstAsync();

                productos.Add(producto);
            }

            Proveedor proveedor = await _context.Proveedor.Where <Proveedor>(prod => prod.idProveedor == proveedorProductosSeleccionados.idProveedor).FirstAsync(); //obtengo el proveedor seleccionado


            List <LineaPedido> lineasPedido = new List <LineaPedido>();
            int idx = 0;

            foreach (Producto producto in productos)
            {
                int cantidad = (int)proveedorProductosSeleccionados.listaCantidades.GetValue(idx);
                if (cantidad != 0)
                {
                    LineaPedido lineaPedido = new LineaPedido();
                    lineaPedido.cantidad = cantidad;                                                                             //le añado las cantidades de mi objeto viewmodel
                    lineaPedido.precio   = (int)proveedorProductosSeleccionados.listaCantidades.GetValue(idx) * producto.precio; //le añado los precios de mi objeto viewmodel
                    lineaPedido.producto = producto;
                    // voy añadiendo en las lineasPedido con los datos del producto
                    lineasPedido.Add(lineaPedido); //para cada lineaPedido, creo lineasPedido, donde tengo listas de cada producto, listas de precio y listas de cantidad
                }
                idx++;
            }
            //creo un pedido con las lineas de pedido y el proveedor
            Pedido pedido = new Pedido();

            pedido.LineasPedido = lineasPedido; //le añado en el pedido mi linea de pedido (producto, cantidad, precio)
            pedido.Proveedor    = proveedor;    //le añado en pedido el proveedor seleccionado
            double precioTotal = 0;

            foreach (LineaPedido linea in lineasPedido)
            {
                precioTotal = linea.precio + precioTotal;
            }

            ResumenViewModel resumenPedidoViewModel = new ResumenViewModel(); //el objeto resumenPedidoViewModel tendrá el pedido creado

            resumenPedidoViewModel.pedido      = pedido;
            resumenPedidoViewModel.precioTotal = precioTotal;
            //para que llame a la vista resumen pedido pasando el objeto resumenPedioViewModel
            return(View(resumenPedidoViewModel));
        }
        public async Task <IActionResult> SelectProductos(ProveedorProductosViewModel proveedorProductosSeleccionadosViewModel)
        {
            if (ModelState.IsValid)
            {
                Boolean distintoCero = false;
                Boolean noPositivo   = false;
                Boolean mayorCien    = false;
                foreach (int cantidad in proveedorProductosSeleccionadosViewModel.listaCantidades)
                {
                    if (cantidad != 0)
                    {
                        distintoCero = true;
                    }
                    if (cantidad < 0)
                    {
                        noPositivo = true;
                    }
                    if (cantidad > 100)
                    {
                        mayorCien = true;
                    }
                }
                if (distintoCero == false)
                {
                    ProveedoresViewModel proveedorSeleccionadoViewModel = new ProveedoresViewModel();

                    proveedorSeleccionadoViewModel.idProveedor = proveedorProductosSeleccionadosViewModel.idProveedor; //dejamos en la variable proveedorSeleccionado el proveedor
                    proveedorSeleccionadoViewModel.noProductosSeleccionados = true;
                    return(RedirectToAction("SelectProductos", proveedorSeleccionadoViewModel));
                }

                else if (noPositivo == true)
                {
                    ProveedoresViewModel proveedorSeleccionadoViewModel = new ProveedoresViewModel();

                    proveedorSeleccionadoViewModel.idProveedor = proveedorProductosSeleccionadosViewModel.idProveedor; //dejamos en la variable proveedorSeleccionado el proveedor
                    proveedorSeleccionadoViewModel.noPositivo  = true;
                    return(RedirectToAction("SelectProductos", proveedorSeleccionadoViewModel));
                }
                else if (mayorCien == true)
                {
                    ProveedoresViewModel proveedorSeleccionadoViewModel = new ProveedoresViewModel();

                    proveedorSeleccionadoViewModel.idProveedor = proveedorProductosSeleccionadosViewModel.idProveedor; //dejamos en la variable proveedorSeleccionado el proveedor
                    proveedorSeleccionadoViewModel.mayorCien   = true;
                    return(RedirectToAction("SelectProductos", proveedorSeleccionadoViewModel));
                }

                else

                {
                    return(RedirectToAction("ResumenPedido", proveedorProductosSeleccionadosViewModel));
                }
            }
            else
            {
                ProveedoresViewModel proveedorSeleccionadoViewModel = new ProveedoresViewModel();

                proveedorSeleccionadoViewModel.idProveedor = proveedorProductosSeleccionadosViewModel.idProveedor; //dejamos en la variable proveedorSeleccionado el proveedor
                return(RedirectToAction("SelectProductos", proveedorSeleccionadoViewModel));
            }
        }