コード例 #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);
        }
コード例 #2
0
        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);
        }