public void Put(ContaConjuntaDto contaConjunta) { _contaConjuntaRepository.OpenTransaction(); _contaConjuntaRepository.Put(contaConjunta); var conta = _contaFinanceiraRepository.Get(contaConjunta.IdConta); var msg = $"{(contaConjunta.IndicadorAprovado == "A" ? "Aceitou" : "Recusou")} seu convite para compartilhar a conta {conta.Nome.ToUpper()}"; // IdTipo - 2: Aceitação de convite para conta conjunta. 3: Recuso de convite para conta conjunta var idTipoNotificacao = (short)(contaConjunta.IndicadorAprovado == "A" ? 2 : 3); _notificacaoRepository.Post(new NotificacaoDto { IdTipo = idTipoNotificacao, IdUsuarioEnvio = contaConjunta.IdUsuarioConvidado, IdUsuarioDestino = contaConjunta.IdUsuarioEnvio, Mensagem = msg, ParametrosUrl = null // Não implementado nessa versão do sistema }); var usuarioEnvio = _usuarioRepository.Get(contaConjunta.IdUsuarioEnvio); msg = $"{(contaConjunta.IndicadorAprovado == "A" ? "Aceitou" : "Recusou")} o convite do {usuarioEnvio.Nome} para compartilhar a conta {conta.Nome.ToUpper()}"; // Cadastra notificações para todos os usuarios (caso seja conta conjunta) _notificacaoService.Post(contaConjunta.IdUsuarioConvidado, contaConjunta.IdConta, idTipoNotificacao, msg, new List <int> { contaConjunta.IdUsuarioEnvio }); // caso o usuario RECUSE o convite para conta conjunta if (contaConjunta.IndicadorAprovado != "A") { _contaConjuntaRepository.CommitTransaction(); return; } // caso o usuario ACEITE o convite para conta conjunta var categoriasConta = _lancamentoCategoriaRepository.GetCategoriasConta(contaConjunta.IdConta).ToList(); var categoriasContaConjunta = _contaConjuntaRepository.GetCategoria(contaConjunta.IdConta).ToList(); // insere as categorias que estão faltando ir para a tabela de categorias da conta conjunta foreach (var categoria in categoriasConta.Where(x => categoriasContaConjunta.All(y => y.Id != x.Id))) { _contaConjuntaRepository.PostCategoria(contaConjunta.IdConta, categoria.Id); } // exclui as categorias que estão na tabela de "contas conjuntas categorias" que não estão sendo utilizadas foreach (var categoriaContaConjunta in categoriasContaConjunta.Where(x => categoriasConta.All(y => y.Id != x.Id))) { _contaConjuntaRepository.DeleteCategoria(contaConjunta.IdConta, categoriaContaConjunta.Id); } _contaConjuntaRepository.CommitTransaction(); }
public void Delete(int idUsuario, int idConta) { if (_contaFinanceiraRepository.PossuiVinculos(idConta)) { return; } _contaFinanceiraRepository.OpenTransaction(); // excluindo categorias vinculadas a conta conjunta (caso a conta à ser excluida for uma conta conjunta) var categoriasContaConjunta = _contaConjuntaRepository.GetCategoria(idConta); foreach (var categoria in categoriasContaConjunta) { _contaConjuntaRepository.DeleteCategoria(idConta, categoria.Id); } // excluindo a conta _contaFinanceiraRepository.Delete(idUsuario, idConta); _contaFinanceiraRepository.CommitTransaction(); }