예제 #1
0
        public RequestResult Add(LancamentoViewModel entidade)
        {
            var lista = new List <string>();

            try
            {
                entidade.DataInclusao = DateTime.Now.ToString("yyyy-MM-dd hh:MM");
                entidade = mapper.Map <LancamentoViewModel>(service.Add(mapper.Map <Lancamento>(entidade)));

                var contaOrigem  = serviceConta.GetByConta(entidade.ContaOrigem);
                var contaDestino = serviceConta.GetByConta(entidade.ContaDestino);

                if (contaDestino == null || contaOrigem == null)
                {
                    lista.Add("Conta de Origem ou Destino não localizadas!");
                    return(new RequestResult(lista, entidade, StatusMensagem.Erro));
                }

                if (contaOrigem.Saldo < entidade.Valor)
                {
                    lista.Add("Conta de origem não possue saldo suficiente para está transação!");
                    return(new RequestResult(lista, entidade, StatusMensagem.Erro));
                }

                contaDestino.Saldo += entidade.Valor;
                contaOrigem.Saldo  -= entidade.Valor;

                var entidadeContaOrigem = serviceConta.Update(contaOrigem);
                if (entidadeContaOrigem.ValidationResult.Errors.Any())
                {
                    return(new RequestResult(entidadeContaOrigem.ValidationResult.Errors, entidadeContaOrigem, StatusMensagem.Erro));
                }

                var entidadeContaDestino = serviceConta.Update(contaDestino);
                if (entidadeContaDestino.ValidationResult.Errors.Any())
                {
                    return(new RequestResult(entidadeContaDestino.ValidationResult.Errors, entidadeContaDestino, StatusMensagem.Erro));
                }


                uow.Commit(entidade.ValidationResult);
                if (!entidade.ValidationResult.Errors.Any())
                {
                    lista.Add("Sucesso!");
                    return(new RequestResult(lista, entidade, StatusMensagem.Ok));
                }
                else
                {
                    return(new RequestResult(entidade.ValidationResult.Errors, entidade, StatusMensagem.Erro));
                }
            }
            catch (Exception ex)
            {
                lista.Add(ex.Message.ToString());
                return(new RequestResult(lista, entidade, StatusMensagem.Erro));
            }
        }
예제 #2
0
 public ContaCorrenteViewModel GetByConta(string nrConta)
 {
     return(mapper.Map <ContaCorrenteViewModel>(service.GetByConta(nrConta)));
 }