/// <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 }); }
public void RetornaValidacaoTamanhoStringPrima() { ValidarStringPrimaDto entrada = new ValidarStringPrimaDto() { PalavraUm = "oi", PalavraDois = "ola" }; var resultado = new ValidacaoStringPrimaService().ValidarStringPrima(entrada).Result; Assert.AreEqual(false, resultado.Objeto.EhPrima); }
public void RetornaValidacaoStringPrima() { ValidarStringPrimaDto entrada = new ValidarStringPrimaDto() { PalavraUm = "abcd", PalavraDois = "cdab" }; var resultado = new ValidacaoStringPrimaService().ValidarStringPrima(entrada).Result; Assert.AreEqual(true, resultado.Objeto.EhPrima); }
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)); } }
/// <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 }); }