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); }