// GET: Productos/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Productos productos = await db.Productos.FindAsync(id);

            CreateProductosViewModel prod = new CreateProductosViewModel
            {
                IdProducto         = productos.IdProducto,
                ProductoTitulo     = productos.ProductoTitulo,
                ProdutoDescripcion = productos.ProdutoDescripcion,
                ProductoPrecio     = productos.ProductoPrecio,
                ProductStock       = productos.ProductStock,
                CategoryKey        = productos.CategoryKey,
                UnidadesId         = productos.UnidadesId
            };

            if (productos == null)
            {
                return(HttpNotFound());
            }
            ViewBag.CategoryKey = new SelectList(db.Categories, "CategoryKey", "CotegoryName", productos.CategoryKey);
            ViewBag.UnidadesId  = new SelectList(db.Unidades, "UnidadesId", "UnidadesNombre", productos.UnidadesId);
            return(View(prod));
        }
        public async Task <ActionResult> Create(CreateProductosViewModel productos)
        {
            if (ModelState.IsValid)
            {
                Productos newProduct = null;
                if (productos.ProductoImagenes.ElementAt(0) == null)
                {
                    newProduct = new Productos
                    {
                        ProductoTitulo     = productos.ProductoTitulo,
                        ProdutoDescripcion = productos.ProdutoDescripcion,
                        ProductoPrecio     = productos.ProductoPrecio,
                        ProductStock       = productos.ProductStock,
                        CategoryKey        = productos.CategoryKey,
                        UnidadesId         = productos.UnidadesId,
                        ProductoImagenes   = "/img/noimage.jpg"
                    };
                    db.Productos.Add(newProduct);
                    await db.SaveChangesAsync();
                }
                else
                {
                    newProduct = new Productos
                    {
                        ProductoTitulo     = productos.ProductoTitulo,
                        ProdutoDescripcion = productos.ProdutoDescripcion,
                        ProductoPrecio     = productos.ProductoPrecio,
                        ProductStock       = productos.ProductStock,
                        CategoryKey        = productos.CategoryKey,
                        UnidadesId         = productos.UnidadesId,
                        ProductoImagenes   = "/img/" + Path.GetFileName(productos.ProductoImagenes.ElementAt(0).FileName)
                    };
                    db.Productos.Add(newProduct);
                    await db.SaveChangesAsync();
                }

                string uniqueName = null;
                if (productos.ProductoImagenes.ElementAt(0) != null)
                {
                    for (int i = 0; i < productos.ProductoImagenes.Count(); i++)
                    {
                        var    fileName = Path.GetFileName(productos.ProductoImagenes.ElementAt(i).FileName);
                        string pa       = Server.MapPath("/img").ToString();
                        var    Filepath = Path.Combine(Server.MapPath("/img"), fileName);
                        productos.ProductoImagenes.ElementAt(i).SaveAs(Filepath);
                        uniqueName = "/img/" + fileName;

                        var imagen = new ImagenProducto
                        {
                            urlImagen  = uniqueName,
                            IdProducto = newProduct.IdProducto
                        };
                        db.ImagenesProductos.Add(imagen);
                        await db.SaveChangesAsync();
                    }
                }
                else
                {
                    var imagen = new ImagenProducto
                    {
                        urlImagen  = "/img/noimage.jpg",
                        IdProducto = newProduct.IdProducto
                    };
                    db.ImagenesProductos.Add(imagen);
                    await db.SaveChangesAsync();
                }
                return(RedirectToAction("Index"));
            }

            ViewBag.CategoryKey = new SelectList(db.Categories, "CategoryKey", "CotegoryName", productos.CategoryKey);
            ViewBag.UnidadesId  = new SelectList(db.Unidades, "UnidadesId", "UnidadesNombre", productos.UnidadesId);
            return(View(productos));
        }
        public async Task <ActionResult> Edit(CreateProductosViewModel productos)
        {
            if (ModelState.IsValid)
            {
                Productos newProduct = null;
                if (productos.ProductoImagenes.ElementAt(0) == null)
                {
                    newProduct = new Productos
                    {
                        IdProducto         = productos.IdProducto,
                        ProductoTitulo     = productos.ProductoTitulo,
                        ProdutoDescripcion = productos.ProdutoDescripcion,
                        ProductoPrecio     = productos.ProductoPrecio,
                        ProductStock       = productos.ProductStock,
                        CategoryKey        = productos.CategoryKey,
                        UnidadesId         = productos.UnidadesId,
                        ProductoImagenes   = "/img/noimage.jpg"
                    };
                }
                else
                {
                    newProduct = new Productos
                    {
                        IdProducto         = productos.IdProducto,
                        ProductoTitulo     = productos.ProductoTitulo,
                        ProdutoDescripcion = productos.ProdutoDescripcion,
                        ProductoPrecio     = productos.ProductoPrecio,
                        ProductStock       = productos.ProductStock,
                        CategoryKey        = productos.CategoryKey,
                        UnidadesId         = productos.UnidadesId,
                        ProductoImagenes   = "/img/" + Path.GetFileName(productos.ProductoImagenes.ElementAt(0).FileName)
                    };
                }

                db.Entry(newProduct).State = EntityState.Modified;
                await db.SaveChangesAsync();

                string uniqueName = null;
                if (productos.ProductoImagenes.ElementAt(0) != null)
                {
                    //borrar imagenes que ya estaban almacenadas
                    var ima = db.ImagenesProductos.Where(x => x.IdProducto == newProduct.IdProducto);
                    foreach (var item in ima)
                    {
                        if (item.IdProducto == newProduct.IdProducto)
                        {
                            db.ImagenesProductos.Remove(item);
                            //await db.SaveChangesAsync();
                        }
                    }

                    for (int i = 0; i < productos.ProductoImagenes.Count(); i++)
                    {
                        var    fileName = Path.GetFileName(productos.ProductoImagenes.ElementAt(i).FileName);
                        string pa       = Server.MapPath("/img").ToString();
                        var    Filepath = Path.Combine(Server.MapPath("/img"), fileName);
                        productos.ProductoImagenes.ElementAt(i).SaveAs(Filepath);
                        uniqueName = "/img/" + fileName;

                        var imagen = new ImagenProducto
                        {
                            urlImagen  = uniqueName,
                            IdProducto = newProduct.IdProducto
                        };
                        db.ImagenesProductos.Add(imagen);
                        await db.SaveChangesAsync();
                    }
                }
                else
                {
                    var imagen = new ImagenProducto
                    {
                        urlImagen  = "/img/noimage.jpg",
                        IdProducto = newProduct.IdProducto
                    };
                    db.ImagenesProductos.Add(imagen);
                    await db.SaveChangesAsync();
                }

                return(RedirectToAction("Index"));
            }
            ViewBag.CategoryKey = new SelectList(db.Categories, "CategoryKey", "CotegoryName", productos.CategoryKey);
            ViewBag.UnidadesId  = new SelectList(db.Unidades, "UnidadesId", "UnidadesNombre", productos.UnidadesId);
            return(View(productos));
        }