Example #1
0
        public async Task <GerarCompraResponse> GerarCodigo(GerarCompraRequest request)
        {
            var response = new GerarCompraResponse();

            try
            {
                var validationResult = request.Validate();
                if (!validationResult.IsValid)
                {
                    response.Valido = false;
                    foreach (var failure in validationResult.Errors)
                    {
                        response.AdicionarMensagemErro(TipoMensagem.Validacao, failure.ErrorMessage);
                    }
                }
                else
                {
                    request.GerarEGift.RequisicaoId = request.GerarEGift.RequisicaoId ?? request.GerarEGift.GerarRequisicaoId();
                    var gerarEGift = request.GerarEGift.Map();

                    if (!gerarEGift.Validar())
                    {
                        response.Valido = false;
                        response.AdicionarMensagemErro(TipoMensagem.ErroNegocio, "Dados para Geração do EGift inválidos");
                        return(response);
                    }

                    var result = await gerarEGift.Gerar(gerarEGift.RequisicaoId);

                    response.Valido = result.Valido;

                    if (!result.Valido)
                    {
                        response.AdicionarMensagemErro(TipoMensagem.ErroNegocio, "Não foi possível gerar o EGift");
                    }
                    else
                    {
                        response.EGift = gerarEGift.Map();
                    }
                }
            }
            catch (ApplicationException appEx)
            {
                response.Valido = false;
                response.AdicionarMensagemErro(TipoMensagem.ErroNegocio, appEx.Message);
            }
            catch (Exception ex)
            {
                response.Valido = false;
                response.AdicionarMensagemErro(TipoMensagem.ErroAplicacao, ex.Message);
                response.AdicionarMensagemErro(TipoMensagem.ErroAplicacao, ex.StackTrace);
            }
            return(response);
        }
Example #2
0
        public async void TestaExceptionProductConfigurationInvalida()
        {
            var request = new GerarCompraRequest()
            {
                GerarEGift = GerarEGiftDtoPadrao()
            };

            request.GerarEGift.SKUParceiro = "FAIL";

            var response = await ObterService().GerarCodigo(request);

            Assert.False(response.Valido);
        }
Example #3
0
        public async void TestaGeracaoKey()
        {
            var request = new GerarCompraRequest()
            {
                GerarEGift = GerarEGiftDtoPadrao()
            };

            request.GerarEGift.GerarCodigoAtivacao = true;

            var response = await ObterService().GerarCodigo(request);

            Assert.NotNull(response.EGift.Ativacao);
        }
Example #4
0
        public async void TestaGeracaoHash()
        {
            var request = new GerarCompraRequest()
            {
                GerarEGift = GerarEGiftDtoPadrao()
            };

            var response = await ObterService().GerarCodigo(request);

            Uri url;

            Assert.True(
                Uri.TryCreate(response.EGift.Ativacao, UriKind.Absolute, out url) &&
                (url.Scheme == Uri.UriSchemeHttp || url.Scheme == Uri.UriSchemeHttps)
                );
        }
Example #5
0
        public async void TestaChamadaKey()
        {
            var requestHash = new GerarCompraRequest()
            {
                GerarEGift = GerarEGiftDtoPadrao()
            };

            requestHash.GerarEGift.GerarCodigoAtivacao = true;

            var responseHash = await ObterService().GerarCodigo(requestHash);

            var request = requestHash;

            request.GerarEGift.Hash      = responseHash.EGift.Hash;
            request.GerarEGift.ClienteId = responseHash.EGift.ClienteId;

            var response = await ObterService().GerarCodigo(request);

            Assert.NotNull(response.EGift.Ativacao);
        }
Example #6
0
        public async void TestaDesfazimento()
        {
            var requestEGift = new GerarCompraRequest()
            {
                GerarEGift = GerarEGiftDtoPadrao()
            };

            var responseEGift = await ObterService().GerarCodigo(requestEGift);

            Assert.NotEmpty(responseEGift.EGift.RequisicaoId);

            var request = new DesfazimentoRequest()
            {
                RequisicaoId = responseEGift.EGift.RequisicaoId
            };

            var response = await ObterService().Desfazimento(request);

            Assert.True(response.Valido);
        }
Example #7
0
        public async Task <ActionResult> Post([FromBody] GerarCompraRequest request)
        {
            var response = await _service.GerarCodigo(request);

            return(this.GetHttpResponse(response));
        }