/// <summary>
        /// Chama o service de validacao de string prima
        /// </summary>
        /// <param name="entrada"></param>
        /// <returns></returns>
        public async Task <RetornoRequisicao <StringPrima> > ValidarStringPrima(ValidarStringPrimaDto entrada)
        {
            var retornoService = new RetornoRequisicao <StringPrima>();

            try
            {
                retornoService = await _validacaoStringPrimaService.ValidarStringPrima(entrada);

                if (retornoService.Status != HttpStatusCode.OK)
                {
                    return(new RetornoRequisicao <StringPrima>()
                    {
                        Objeto = retornoService.Objeto,
                        Mensagem = retornoService.Mensagem,
                        Status = retornoService.Status
                    });
                }
            }
            catch (Exception ex)
            {
                return(new RetornoRequisicao <StringPrima>()
                {
                    Objeto = null,
                    Mensagem = "Ocorreu um erro ao retornar os dados: " + ex,
                    Status = HttpStatusCode.InternalServerError
                });
            }

            return(new RetornoRequisicao <StringPrima>()
            {
                Objeto = retornoService.Objeto,
                Mensagem = retornoService.Mensagem,
                Status = retornoService.Status
            });
        }
コード例 #2
0
        public void RetornaValidacaoTamanhoStringPrima()
        {
            ValidarStringPrimaDto entrada = new ValidarStringPrimaDto()
            {
                PalavraUm   = "oi",
                PalavraDois = "ola"
            };

            var resultado = new ValidacaoStringPrimaService().ValidarStringPrima(entrada).Result;

            Assert.AreEqual(false, resultado.Objeto.EhPrima);
        }
コード例 #3
0
        public void RetornaValidacaoStringPrima()
        {
            ValidarStringPrimaDto entrada = new ValidarStringPrimaDto()
            {
                PalavraUm   = "abcd",
                PalavraDois = "cdab"
            };

            var resultado = new ValidacaoStringPrimaService().ValidarStringPrima(entrada).Result;

            Assert.AreEqual(true, resultado.Objeto.EhPrima);
        }
コード例 #4
0
        public async Task <IActionResult> ValidarStringPrima([FromBody] ValidarStringPrimaDto entrada)
        {
            try
            {
                var retorno = await _validacaoStringPrimaApplication.ValidarStringPrima(entrada);

                return(StatusCode(StatusCodes.Status200OK, retorno));
            }
            catch (Exception ex)
            {
                var retorno = new RetornoRequisicao <object>
                {
                    Objeto   = null,
                    Mensagem = $"Ocorreu um erro interno no servidor: {ex.Message}",
                    Status   = HttpStatusCode.NotFound
                };

                return(StatusCode(StatusCodes.Status500InternalServerError, retorno));
            }
        }
コード例 #5
0
        /// <summary>
        /// Criar um endpoint Web API onde receberá duas strings para validar se são "primas".
        /// Uma String é considerada prima se ambas tem o mesmo tamanho,  OK
        /// e se todos os caracteres em posições impares na primeira String estão em posições impares na segunda String,
        /// e se todos os caracteres em posições pares na primeira String estão em posições pares na segunda String.
        ///Exemplos:
        ///"oi" e "ola" não são Strings primas.
        ///"abcd" e "cdab" são Strings primas.
        ///"abcd" e "dcba" não são Strings primas.
        ///"sacada" e "casada" são Strings primas.
        ///"elvis" e "lives" não são Strings primas.
        /// </summary>
        /// <param name="entrada"></param>
        /// <returns></returns>
        public async Task <RetornoRequisicao <StringPrima> > ValidarStringPrima(ValidarStringPrimaDto entrada)
        {
            bool ehPrima = false;
            var  retorno = new StringPrima()
            {
                EhPrima     = false,
                PalavraUm   = entrada.PalavraUm,
                PalavraDois = entrada.PalavraDois
            };

            try
            {
                if (entrada.PalavraUm.Length != entrada.PalavraDois.Length)
                {
                    return(new RetornoRequisicao <StringPrima>()
                    {
                        Objeto = retorno,
                        Mensagem = "Palavras de tamanhos diferentes não são strings primas!",
                        Status = HttpStatusCode.OK
                    });
                }
                else
                {
                    var palavraUmArray   = entrada.PalavraUm.ToArray();
                    var palavraDoisArray = entrada.PalavraDois.ToArray();

                    // Percorre todas as letras
                    for (int i = 0; i < palavraUmArray.Length; i++)
                    {
                        for (int j = 0; j < palavraDoisArray.Length; j++)
                        {
                            // Verifica se a letraUm no indice 'i' existe no palavraDois no indice 'j'.
                            if (palavraUmArray[i] == palavraDoisArray[j])
                            {
                                //Verifica se a posicao do array eh par ou impar
                                var validaPosicaoUm   = i % 2 == 0 ? 0 : 1;
                                var validaPosicaoDois = j % 2 == 0 ? 0 : 1;

                                if (validaPosicaoUm == validaPosicaoDois)
                                {
                                    ehPrima = true;
                                }
                                else
                                {
                                    return(new RetornoRequisicao <StringPrima>()
                                    {
                                        Objeto = retorno,
                                        Mensagem = "Resultado validação: As strings não são primas!",
                                        Status = HttpStatusCode.OK
                                    });
                                }
                            }
                        }
                    }
                }

                retorno.EhPrima = true;
            }
            catch (Exception ex)
            {
                return(new RetornoRequisicao <StringPrima>()
                {
                    Objeto = null,
                    Mensagem = "Ocorreu um erro ao retornar os dados: " + ex,
                    Status = HttpStatusCode.InternalServerError
                });
            }

            return(new RetornoRequisicao <StringPrima>()
            {
                Objeto = retorno,
                Mensagem = "Resultado validação: As strings são primas!",
                Status = HttpStatusCode.OK
            });
        }