public async Task <ResultadoDto> ValidarDatosAsync(MudanzaDto mudanza)
        {
            string mensaje;

            if (String.IsNullOrEmpty(mudanza.Cedula))
            {
                mensaje = "El campo Cédula es obligatorio.";
            }
            else if (mudanza.Archivo == null)
            {
                mensaje = "El campo Archivo es obligatorio.";
            }
            else if (mudanza.Archivo.Length == 0)
            {
                mensaje = "El archivo esta vacio.";
            }
            else if (mudanza.Archivo.Length > 1000000)
            {
                mensaje = "El archivo es demasiado grande.";
            }
            else if (!mudanza.Archivo.ContentType.Contains("text/plain"))
            {
                mensaje = "Se esperaba un archivo .txt";
            }
            else
            {
                mensaje = await ValidarDatosArchivoAsync(mudanza.Archivo);
            }

            return(new ResultadoDto {
                Error = !String.IsNullOrEmpty(mensaje),
                ErrorMensaje = mensaje
            });
        }
        public async Task EjecutarProcesoMudanzaInvalidTest()
        {
            // Arrange
            var archivo = ContruirIFormFile();
            var mudanza = new MudanzaDto {
                Archivo = null
            };
            var ResultadoProceso = new ResultadoDto {
                Error = true
            };

            var mockMudanzaAplication = new Mock <IMudanzaAplication>();

            mockMudanzaAplication.Setup(x => x.EjecutarProcesoMudanzaAsync(mudanza))
            .ReturnsAsync(ResultadoProceso);

            MudanzaController controllador = new MudanzaController(mockMudanzaAplication.Object);

            // Act
            var resultado = await controllador.PostAsync(mudanza);

            // Assert
            var okObjectResult = resultado as OkObjectResult;

            Assert.NotNull(okObjectResult);
            Assert.Equal(200, okObjectResult.StatusCode);

            var presentations = okObjectResult.Value as ResultadoDto;

            Assert.True(presentations.Error);
        }
        public async Task EjecutarProcesoMudanzaTest()
        {
            // Arrange
            var archivo = ContruirIFormFile();
            var mudanza = new MudanzaDto {
                Cedula = "1065", Archivo = archivo
            };
            var ResultadoProceso = new ResultadoDto {
                Salida = "Case #1: 2\nCase #2: 1\nCase #3: 2\nCase #4: 3\nCase #5: 8\n"
            };

            var mockMudanzaAplication = new Mock <IMudanzaAplication>();

            mockMudanzaAplication.Setup(x => x.EjecutarProcesoMudanzaAsync(mudanza))
            .ReturnsAsync(ResultadoProceso);

            MudanzaController controllador = new MudanzaController(mockMudanzaAplication.Object);

            // Act
            var resultado = await controllador.PostAsync(mudanza);

            // Assert
            var okObjectResult = resultado as OkObjectResult;

            Assert.NotNull(okObjectResult);
            Assert.Equal(200, okObjectResult.StatusCode);

            var presentations = okObjectResult.Value as ResultadoDto;

            Assert.Equal(presentations.Salida, ResultadoProceso.Salida);
        }
Esempio n. 4
0
        public async Task ValidarDatosErrorAsyncTest()
        {
            // Arrange
            var datos = new MudanzaDto {
                Cedula = "1065", Archivo = null
            };

            // Act
            var resultado = await _mudanza.ValidarDatosAsync(datos);

            // Assert
            Assert.True(resultado.Error);
            Assert.NotEmpty(resultado.ErrorMensaje);
        }
        public async Task <ResultadoDto> EjecutarProcesoMudanzaAsync(MudanzaDto mudanza)
        {
            String[]     arregloDatos;
            EntradasDto  estrutura;
            ResultadoDto resultado;
            bool         resultadoEntity;

            resultado = await ValidarDatosAsync(mudanza);

            if (!resultado.Error)
            {
                //cargamos el archivo a ser procesado
                arregloDatos = await CargarArchivoAsync(mudanza.Archivo);

                //leemos el arreglo de datos para convertirlo en una estructura
                estrutura = LeerArregloDatos(arregloDatos);

                //Procesamos los datos para calcular los viajes por dia
                resultado.Salida = ProcesarDatos(estrutura);

                //se almacena la traza
                resultadoEntity = await _logRepository.InsertAsync(new TblLog
                {
                    Cedula = mudanza.Cedula,
                    Fecha  = DateTime.Now,
                    Traza  = resultado.Salida
                });

                if (!resultadoEntity)
                {
                    return new ResultadoDto {
                               Error = true, ErrorMensaje = "Error al guardar la traza."
                    }
                }
                ;
            }

            return(resultado);
        }
        public async Task <IActionResult> PostAsync([FromForm] MudanzaDto mudanza)
        {
            ResultadoDto resultado = await _mudanzaAplication.EjecutarProcesoMudanzaAsync(mudanza);

            return(Ok(resultado));
        }