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);
        }
示例#2
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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;
            }));
        }
示例#6
0
        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;
            }));
        }
示例#7
0
        public async Task EnviarMensagemAdocao(AdocaoDTO dto)
        {
            var mensagem = await ObterMensagemPrivada(dto);

            await _mensagemPrivadaREP.Registrar(mensagem);
        }