public bool JaEnviouSolicitacaoAdocao(AdocaoDTO dto) { var retorno = _mensagens.FindAs <MensagemPrivadaMOD>(Query.And(Query <MensagemPrivadaMOD> .EQ(_ => _.Remetente.IdUsuario, dto.Adotante.Id), Query <MensagemPrivadaMOD> .EQ(_ => _.Doacao.IdDoacao, dto.IdDoacao))).Any(); return(retorno); }
public async Task <JsonResult> Adocao(string idDoacao) { var json = default(dynamic); try { var dto = new AdocaoDTO(idDoacao, ObterUsuarioDaSecao()); await _mensagemPrivadaBUS.EnviarMensagemAdocao(dto); json = new { Mensagem = "Notificação enviada ao doador", Sucesso = true }; } catch (InvalidOperationException e) { json = new { Mensagem = e.Message, Sucesso = false }; } catch (Exception) { json = new { Mensagem = "Ocorreu um erro ao tentar enviar a notificação ao doador", Sucesso = false }; } return(Json(json)); }
public async Task SeEnviarMaisDeUmaSolicitacaoDeAdocaoDeveLancarExcecao() { var dto = new AdocaoDTO(_doacaoDefault.Id.ToString(), _adotante); await _mensagemPrivadaBUS.EnviarMensagemAdocao(dto); await _mensagemPrivadaBUS.EnviarMensagemAdocao(dto); }
private async Task <MensagemPrivadaMOD> ObterMensagemPrivada(AdocaoDTO dto) { if (_mensagemPrivadaREP.JaEnviouSolicitacaoAdocao(dto)) { throw new InvalidOperationException("Você já enviou uma solicitação ao doador. Por favor, aguarde a resposta do doador"); } var mensagemPrivadaDTO = await _usuarioREP.ObterMensagemPrivadaDTO(dto); var mensagem = new MensagemPrivadaMOD(mensagemPrivadaDTO); return(mensagem); }
public async Task <MensagemPrivadaDTO> ObterMensagemPrivadaDTO(AdocaoDTO dto) { return(await Task.Run(() => { var retorno = new MensagemPrivadaDTO { Remetente = new MensageiroMOD { IdUsuario = dto.Adotante.Id }, Doacao = new MensagemPrivadaDoacaoMOD { IdDoacao = dto.IdDoacao } }; return retorno; })); }
public async Task <MensagemPrivadaDTO> ObterMensagemPrivadaDTO(AdocaoDTO dto) { return(await Task.Run(() => { var usuario = _conn.Conectar("mongodb://localhost", "napegada", "usuario") .FindAs <UsuarioMOD>(Query <UsuarioMOD> .ElemMatch <DoacaoMOD>(_ => _.Doacoes, _ => _.EQ(doacao => doacao.Id, dto.IdDoacao))) .SetFields(Fields.ElemMatch("Doacoes", Query <DoacaoMOD> .EQ(_ => _.Id, dto.IdDoacao)) .Include("Nome") .Include("Email") .Include("Reputacao") .Include("NomeFotoPerfil")).Single(); var retorno = new MensagemPrivadaDTO { Destinatario = new MensageiroMOD { Email = usuario.Email, IdUsuario = usuario.Id, Nome = usuario.Nome, NomeFotoPerfil = usuario.NomeFotoPerfil, Reputacao = usuario.Reputacao }, Doacao = usuario.Doacoes.Select(_ => new MensagemPrivadaDoacaoMOD { IdDoacao = _.Id, NomeAnimal = _.NomeAnimal }).Single(), Remetente = new MensageiroMOD { Email = dto.Adotante.Email, IdUsuario = dto.Adotante.Id, Nome = dto.Adotante.Nome, Reputacao = dto.Adotante.Reputacao } }; return retorno; })); }
public async Task EnviarMensagemAdocao(AdocaoDTO dto) { var mensagem = await ObterMensagemPrivada(dto); await _mensagemPrivadaREP.Registrar(mensagem); }