private void AtualizaCategoriasContaConjunta(int idConta, int idCategoria) { if (_contaConjuntaRepository.Get(null, idConta).Any(x => x.IndicadorAprovado == "A") && _contaConjuntaRepository.GetCategoria(idConta).All(x => x.Id != idCategoria)) { _contaConjuntaRepository.PostCategoria(idConta, idCategoria); } }
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(); }