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); }
public ActionResult Create(ProductoViewModel producto) { if (ModelState.IsValid) { try { if (Request.Files.Count > 0) { var file = Request.Files[0]; if (file != null && file.ContentLength > 0) { // Guardo la foto en un espacio fisico primero en la carpeta /Images var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/Images" + fileName)); file.SaveAs(path); using (var binaryReader = new BinaryReader(file.InputStream)) { byte[] array = binaryReader.ReadBytes(file.ContentLength); var foto = Mapper.Map(array, producto.Imagen); // Aqui mapeo la foto var productoDominio = Mapper.Map<ProductoViewModel, Producto>(producto); productoDominio.Imagen = foto; //Se agrega la foto a la BD _productoAppService.Agregar(productoDominio); } return RedirectToAction("Index"); } //Mapeo el viewmodel "productoSinimagen" a una entidad var productoSinimagen = Mapper.Map<ProductoViewModel, Producto>(producto); // Actualizo la entidad _productoAppService.Agregar(productoSinimagen); return RedirectToAction("Index"); } } catch (Exception ex) { return View(ex.Message); } } 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); }