public void Post(ContaConjuntaDto contaConjunta) { var usuarioConvidado = _usuarioRepository.Get(null, contaConjunta.EmailUsuarioConvidado); if (usuarioConvidado == null) { _notification.Add("Não foi encontrado nenhum usuário com o e-mail informado."); return; } if (usuarioConvidado.Id == contaConjunta.IdUsuarioEnvio) { _notification.Add("O e-mail informado não pode ser o mesmo do usuário desta conta"); return; } if (_contaConjuntaRepository.Get(null, contaConjunta.IdConta).Any(x => x.IdUsuarioConvidado == usuarioConvidado.Id && contaConjunta.IndicadorAprovado == "A")) { _notification.Add("O usuário já esta vinculado com esta conta"); return; } contaConjunta.IdUsuarioConvidado = usuarioConvidado.Id; _contaConjuntaRepository.OpenTransaction(); _contaConjuntaRepository.Post(contaConjunta); var conta = _contaFinanceiraRepository.Get(contaConjunta.IdConta); _notificacaoRepository.Post(new NotificacaoDto { IdTipo = 1, // Convite para conta conjunta IdUsuarioEnvio = contaConjunta.IdUsuarioEnvio, IdUsuarioDestino = contaConjunta.IdUsuarioConvidado, Mensagem = $"Deseja compartilhar sua conta {conta.Nome.ToUpper()} com você", ParametrosUrl = null // Não implementado nessa versão do sistema }); // Cadastra notificações para todos os usuarios (caso seja conta conjunta) var msg = $"Enviou um convite para compartilhar a conta {conta.Nome.ToUpper()} com o usuário {usuarioConvidado.Nome}"; _notificacaoService.Post(contaConjunta.IdUsuarioEnvio, conta.Id, 1, msg, new List <int> { contaConjunta.IdUsuarioConvidado }); // 1: Convite para conta conjunta _contaConjuntaRepository.CommitTransaction(); }
public void Post(TransferenciaDto transferencia) { var contaOrigem = _contaFinanceiraRepository.Get(transferencia.IdContaOrigem); var contaDestino = _contaFinanceiraRepository.Get(transferencia.IdContaDestino); var msg = $"Transferiu ({transferencia.Descricao} o valor de R$ {transferencia.Valor:##.###,##}) da conta {contaOrigem.Nome.ToUpper()} para a conta {contaDestino.Nome.ToUpper()}"; _transferenciaRepository.OpenTransaction(); _notificacaoService.Post(transferencia.IdUsuarioCadastro, contaOrigem.Id, 7, msg); // 7: Cadastro de transferência em conta conjunta _notificacaoService.Post(transferencia.IdUsuarioCadastro, contaDestino.Id, 7, msg); _transferenciaRepository.Post(transferencia); _transferenciaRepository.CommitTransaction(); }
public void Post(LancamentoDto lancamento) { _lancamentoRepository.OpenTransaction(); // caso seja conta conjunta aprovada AtualizaCategoriasContaConjunta(lancamento.IdConta, lancamento.IdCategoria); var conta = _contaFinanceiraRepository.Get(lancamento.IdConta); var msg = $"Cadastrou uma nova {(lancamento.IndicadorReceitaDespesa == "R" ? "receita" : "despesa")} ({lancamento.Descricao}) na conta {conta.Nome.ToUpper()}"; // Cadastra notificações para todos os usuarios (caso seja conta conjunta) _notificacaoService.Post(lancamento.IdUsuarioCadastro, lancamento.IdConta, 4, msg); // 4: Cadastro de lançamento em conta conjunta if (string.IsNullOrEmpty(lancamento.IndicadorFixoParcelado)) { _lancamentoRepository.Post(lancamento); _lancamentoRepository.CommitTransaction(); return; } // get periodos if (!lancamento.IdPeriodo.HasValue) { _notification.Add("Favor informar o periodo para lançamentos fixo/parcelado"); return; } var periodo = _lancamentoRepository.GetPeriodo((byte)lancamento.IdPeriodo); if (periodo == null) { _notification.Add("Os dados do periodo informado não foram encontrados"); return; } var idCompromisso = _compromissoRepository.Post(new CompromissoDto { Descricao = lancamento.Descricao, IdPeriodo = (byte)lancamento.IdPeriodo, DataInicio = lancamento.Data, TotalParcelasOriginal = lancamento.TotalParcelasOriginal, IdUsuarioCadastro = lancamento.IdUsuarioCadastro, DataCadastro = DateTime.Now, IdConta = lancamento.IdConta }); if (_notification.Any) { return; } var cont = 1; if (lancamento.IndicadorFixoParcelado == "F") { var dataLimite = DateTime.Today.AddYears(2); while (lancamento.Data <= dataLimite) { var idLancamento = _lancamentoRepository.Post(lancamento); _compromissoRepository.PostCompromissoLancamento(idCompromisso, idLancamento, cont++); lancamento.Data = AddDate(lancamento.Data, periodo); } _lancamentoRepository.CommitTransaction(); return; } // lançamentos parcelados if (!lancamento.TotalParcelasOriginal.HasValue || lancamento.TotalParcelasOriginal < 2) { _notification.Add("Favor informar mais que 1(uma) parcela"); return; } for (; cont <= lancamento.TotalParcelasOriginal; cont++) { var idLancamento = _lancamentoRepository.Post(lancamento); _compromissoRepository.PostCompromissoLancamento(idCompromisso, idLancamento, cont); lancamento.Data = AddDate(lancamento.Data, periodo); } _lancamentoRepository.CommitTransaction(); }