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(int idUsuarioEnvio, int idConta, short idTipo, string mensagem, List <int> idsUsuarioNaoEnviar = null) { var usuariosVinculados = _contaConjuntaRepository.Get(null, idConta).Where(x => x.IndicadorAprovado == "A").ToList(); if (!usuariosVinculados.Any()) { return; } var usuariosNotificacao = usuariosVinculados.Select(x => new { Id = x.IdUsuarioEnvio }).ToList(); usuariosNotificacao.AddRange(usuariosVinculados.Select(x => new { Id = x.IdUsuarioConvidado })); usuariosNotificacao = usuariosNotificacao.Distinct().Where(x => x.Id != idUsuarioEnvio).ToList(); if (idsUsuarioNaoEnviar != null) { usuariosNotificacao = usuariosNotificacao.Where(x => !idsUsuarioNaoEnviar.Contains(x.Id)).ToList(); } foreach (var usuario in usuariosNotificacao) { _notificacaoRepository.Post(new NotificacaoDto { IdTipo = idTipo, IdUsuarioEnvio = idUsuarioEnvio, IdUsuarioDestino = usuario.Id, Mensagem = mensagem, ParametrosUrl = null // Não implementado nessa versão do sistema }); } }