public void Cadastrar(Lancamentos obj) { //método para impedir o cadastro quando o saldo está menor ou igual a -20000 if (ColsultarSaldoDia() <= -20000) { throw new ArgumentException("Não é possível cadastrar o lancamento. Saldo negativo!"); } else if (obj.DataLancamento < DateTime.Now) { throw new ArgumentException("Data de lancamento não pode ser do dia anterior"); } //verificar se o lancamento colocado vai exceder os - 20000, mesmo com o saldo acima de 0 ou //com o desconto do encargo do dia var _saldoTotal = ColsultarSaldoDia(); decimal _saldo = 0; if (obj.Tipo.Contains("entrada")) { _saldo = _saldoTotal + obj.ValorLancamento; } else { _saldo = _saldoTotal - obj.ValorLancamento; } if (_saldo < -20000) { throw new ArgumentException("Não é possível cadastrar o lancamento. Saldo negativo!"); } else { repository.Insert(obj); } //verificar se depois do saldo incluso ele ficou negativo if (ColsultarSaldoDia() < 0 && ColsultarSaldoDia() > -20000) { if (encargosDomain.SelectOne(DateTime.Now) == null) { encargosUtilidades.EncargosDia(obj); //inclui encargos e o lancamento na tabela lancamento com tipo "saida" obj.Tipo = "saida"; repository.Insert(obj); } } }