コード例 #1
0
        public ActionResult Edit(ProductoViewModel producto)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    //Verifico si hay algun request
                    if (Request.Files.Count > 0)
                    {
                        //obtengo el valor del Input del file de la vista
                        var file = Request.Files[0];
                        //Si esta vacio o es igual a 0 quiere decir que no se paso una imagen
                        if (file != null && file.ContentLength > 0)
                        {
                            // guardo la imagen en un la carpeta "Images" para luego llevarlo a la BD
                            var fileName = Path.GetFileName(file.FileName);
                            var path     = Path.Combine(Server.MapPath("~/Images" + fileName));
                            file.SaveAs(path);
                            // Realizo la conversion de datos
                            using (var binaryReader = new BinaryReader(file.InputStream))
                            {
                                byte[] array = binaryReader.ReadBytes(file.ContentLength);
                                // mapeo la foto convertida a bytes, hacia el viewmodel
                                var foto = Mapper.Map(array, producto.Imagen);
                                //mapeo el viewmodel como una entidad
                                var productoDominio = Mapper.Map <ProductoViewModel, Producto>(producto);
                                //agrego la foto en bytes a la entidad
                                productoDominio.Imagen = foto;
                                //actualizo la entidad en la BD
                                _productoAppService.Actualizar(productoDominio);
                            }
                        }

                        else
                        {
                            // Obtengo el Id de la imagen que estoy por Actualizar
                            var pasoid = producto.Id;
                            // Obtengo los datos de la imagen que estoy por actualizar con el Id
                            var pasofoto = _productoAppService.BuscarProductoImagen(pasoid);
                            //Convierto la Entidad a un viewmodel
                            var viewmodel = Mapper.Map <Producto, ProductoViewModel>(pasofoto);
                            //Modifico la propiedad imagen del viewmodel al nuevo viewmodel creado
                            producto.Imagen = viewmodel.Imagen;
                            //Mapeo el viewmodel "producto" a una entidad
                            var productoDominio = Mapper.Map <ProductoViewModel, Producto>(producto);
                            // Actualizo la entidad
                            _productoAppService.Actualizar(productoDominio);
                        }

                        return(RedirectToAction("Index"));
                    }
                }
                catch (Exception ex)
                {
                    return(View(ex.Message));
                }


                return(RedirectToAction("Index"));
            }
            ViewBag.MarcaId     = new SelectList(_marcaAppService.ObtenerTodo(), "Id", "Descripcion", producto.MarcaId);
            ViewBag.CategoriaId = new SelectList(_categoriaAppService.ObtenerTodo(), "Id", "Descripcion", producto.CategoriaId);
            ViewBag.TerceroId   = new SelectList(_terceroAppService.ObtenerTodo(), "Id", "Apellido", producto.TerceroId);


            return(View(producto));
        }