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); }
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); } }
private List <string> GetLikedByWithoutUser(EventForumQuestion question, string userId) { return(question.LikedBy .Where(uId => uId != userId) .ToList()); }
private bool IsQuestionLikedByUser(EventForumQuestion question, string userId) { return(question.LikedBy.Any(uId => uId == userId)); }