Exemple #1
0
        public ResponseEnvelope <DebitoResponse> Processar(Guid usuarioId, Guid parceiroId, string descricao, string parceiroTransacaoId, int pontos)
        {
            var response = new ResponseEnvelope <DebitoResponse>();

            try
            {
                VerificarUsuarioExistente(usuarioId);

                VerificarParceiroExistente(parceiroId);

                ValidarPontos(pontos);

                ValidarParceiroTransacao(parceiroTransacaoId);

                var id = Guid.NewGuid();

                var debitou = repositorio.Debitar(id, usuarioId, descricao, parceiroId, parceiroTransacaoId, pontos);

                if (debitou)
                {
                    response.Item.Id = id;
                    saldoService.Processar(usuarioId);

                    var UsuarioParaProcessar = new comum.dto.UsuarioParaProcessar(usuarioId);

                    enfileirador.EnfileirarParaPosClassificador(UsuarioParaProcessar);
                }
                else
                {
                    response.HttpStatusCode = System.Net.HttpStatusCode.PaymentRequired;
                    response.Error.Messages.Add("insufficient balance");
                }
            }
            catch (ArgumentException aex)
            {
                response.HttpStatusCode = System.Net.HttpStatusCode.BadRequest;
                response.Error.Messages.Add(aex.Message);
            }
            catch (Exception ex)
            {
                // ## TODO log
                response.HttpStatusCode = System.Net.HttpStatusCode.InternalServerError;
            }

            return(response);
        }
        public ResponseEnvelope <EstornoResponse> Processar(Guid transacaoId, Guid parceiroId)
        {
            var response = new ResponseEnvelope <EstornoResponse>();

            try
            {
                VerificarParceiroExistente(parceiroId);

                ValidarTransacao(transacaoId);

                var transacao = Obter(transacaoId, parceiroId);

                if (transacao != null)
                {
                    var id = Guid.NewGuid();
                    repositorio.Estornar(id, transacaoId, parceiroId);
                    saldoService.Processar(transacao.UsuarioId);

                    var UsuarioParaProcessar = new comum.dto.UsuarioParaProcessar(transacao.UsuarioId, transacao.EmpresaId);

                    response.Item.Id = id;

                    enfileirador.EnfileirarParaPosClassificador(UsuarioParaProcessar);
                }
                else
                {
                    response.HttpStatusCode = System.Net.HttpStatusCode.NotFound;
                    response.Error.Messages.Add($"Transaction {transacaoId} doesn't exist.");
                }
            }
            catch (ArgumentException aex)
            {
                response.HttpStatusCode = System.Net.HttpStatusCode.BadRequest;
                response.Error.Messages.Add(aex.Message);
            }
            catch (Exception ex)
            {
                // ## TODO log
                response.HttpStatusCode = System.Net.HttpStatusCode.InternalServerError;
            }

            return(response);
        }