示例#1
0
            private async Task <bool> SendEmailToForumActiveUsers(EventForumQuestion question, EventForumAnswer answer, CancellationToken cancellationToken)
            {
                var eventQry = await _db.EventCollection.FindAsync(m => m.Id == question.EventId, cancellationToken : cancellationToken);

                var dbEvent = await eventQry.SingleOrDefaultAsync(cancellationToken);

                var forumEmailUsers = _db.UserCollection.AsQueryable().Where(u => u.ForumActivities.HasValue && u.ForumActivities.Value).ToList();

                try
                {
                    if (forumEmailUsers != null && forumEmailUsers.Count > 0)
                    {
                        foreach (User user in forumEmailUsers)
                        {
                            if (user != null && (!string.IsNullOrEmpty(user.ForumEmail) || !string.IsNullOrEmpty(user.Email)))
                            {
                                var emailToSend = string.IsNullOrEmpty(user.ForumEmail) ? user.Email : user.ForumEmail;
                                var emailData   = new EmailUserData
                                {
                                    Email     = emailToSend,
                                    Name      = user.Name,
                                    ExtraData = new Dictionary <string, string>
                                    {
                                        { "name", user.UserName },
                                        { "username", answer.UserName },
                                        { "forumTitle", question.Title },
                                        { "forumUrl", _options.Value.SiteUrl + $"/forum-evento/{dbEvent.Id}/{question.EventScheduleId}/{question.Id}" }
                                    }
                                };
                                await _provider.SendEmail(emailData, "Uma atividade no evento " + dbEvent.Title, "BTG-ForumActivity");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return(false);
                }
                return(true);
            }
示例#2
0
            private async Task <bool> SendEmailToQuestioner(EventForumQuestion question, CancellationToken cancellationToken)
            {
                var userQry = await _db.UserCollection.FindAsync(u => u.Id == question.CreatedBy, cancellationToken : cancellationToken);

                var user = await userQry.SingleOrDefaultAsync(cancellationToken);

                var eventQry = await _db.EventCollection.FindAsync(m => m.Id == question.EventId, cancellationToken : cancellationToken);

                var dbEvent = await eventQry.SingleOrDefaultAsync(cancellationToken);

                try
                {
                    if (user != null && dbEvent != null)
                    {
                        var emailData = new EmailUserData
                        {
                            Email     = user.Email,
                            Name      = user.Name,
                            ExtraData = new Dictionary <string, string>
                            {
                                { "name", user.UserName },
                                { "forumTitle", question.Title },
                                { "forumUrl", _options.Value.SiteUrl + $"/forum-evento/{dbEvent.Id}/{question.EventScheduleId}/{question.Id}" }
                            }
                        };
                        await _provider.SendEmail(emailData, "Responderam sua pergunta", "BTG-ForumQuestionAnswered");
                        await SaveNotification(user.Id, dbEvent, question.EventScheduleId, question.Id, true);

                        return(true);
                    }
                    return(false);
                }
                catch (Exception ex)
                {
                    await SaveNotification(user.Id, dbEvent, question.EventScheduleId, question.Id, false);

                    return(false);
                }
            }
示例#3
0
 private List <string> GetLikedByWithoutUser(EventForumQuestion question, string userId)
 {
     return(question.LikedBy
            .Where(uId => uId != userId)
            .ToList());
 }
示例#4
0
 private bool IsQuestionLikedByUser(EventForumQuestion question, string userId)
 {
     return(question.LikedBy.Any(uId => uId == userId));
 }