示例#1
0
        public async Task <IActionResult> Put(int id, [FromForm] PersonaFormInput input)
        {
            string url             = "";
            string imagenOriginal  = "";
            string imagen          = "";
            string imagenMiniatura = "";
            bool   actualiza       = false;

            if (input.imagen != null)
            {
                if (input.imagen.Length != 0)
                {
                    DateTime fechaActual = new DateTime();
                    fechaActual    = DateTime.Now;
                    imagenOriginal = input.imagen.FileName;
                    imagen         = String.Format("{0}{1}{2}{3}{4}{5}-{6}"
                                                   , fechaActual.Year, fechaActual.Month, fechaActual.Day,
                                                   fechaActual.Hour, fechaActual.Minute, fechaActual.Second,
                                                   input.imagen.FileName);

                    var rutaImagenOriginal = Path.Combine(environment.ContentRootPath, @"uploads/imagen/original", imagen);
                    url = HttpContext.Request.Host.Value;

                    using (var stream = new FileStream(rutaImagenOriginal, FileMode.Create))
                    {
                        await input.imagen.CopyToAsync(stream);
                    }
                    actualiza = true;

                    //guardar  miniatura
                    imagenMiniatura = String.Format("{0}{1}{2}{3}{4}{5}-m{6}"
                                                    , fechaActual.Year, fechaActual.Month, fechaActual.Day,
                                                    fechaActual.Hour, fechaActual.Minute, fechaActual.Second,
                                                    input.imagen.FileName);
                    var rutaImagenMiniatura = "";
                    rutaImagenMiniatura = Path.Combine(environment.ContentRootPath, @"uploads/imagen/miniatura", imagenMiniatura);
                    using (Image <Rgba32> image = Image.Load(rutaImagenOriginal))
                    {
                        image.Mutate(x => x
                                     .Resize(image.Width / 2, image.Height / 2)
                                     .Grayscale());
                        image.Save(rutaImagenMiniatura); // Automatic encoder selected based on extension.
                    }
                }
            }

            string urlImagen = "/uploads/imagen/original/original.png";

            if (actualiza == true)
            {
                urlImagen = "/uploads/imagen/original/" + imagen;
            }


            CheckStatus  checkStatus  = new CheckStatus();
            PersonaInput personaInput = new PersonaInput();

            personaInput.id              = id;
            personaInput.nombre          = input.nombre;
            personaInput.imagenOriginal  = imagenOriginal;
            personaInput.imagen          = imagen;
            personaInput.fecha           = input.fecha;
            personaInput.imagenMiniatura = imagenMiniatura;
            personaInput.validaImagen    = actualiza;

            checkStatus = personaRepository.Update(personaInput);

            if (checkStatus.status.Equals(Status.Error))
            {
                return(StatusCode(422, checkStatus));
            }
            else
            {
                checkStatus.codigo = urlImagen;
            }

            return(Ok(checkStatus));
        }