private async Task <bool> SendEmailToUser(ObjectId userId, Event eventDb, string scheduleId, CancellationToken cancellationToken) { var userQry = await _db.UserCollection.FindAsync(u => u.Id == userId, cancellationToken : cancellationToken); var user = await userQry.SingleOrDefaultAsync(cancellationToken); try { if (user != null) { var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "name", user.Name }, { "eventTitle", eventDb.Title }, { "valuateUrl", _options.Value.SiteUrl + $"/configuracoes/avaliar-evento/{eventDb.Id}/{scheduleId}/" } } }; await _provider.SendEmail(emailData, "Avaliação de Evento", "BTG-EventStudentValuation"); await SaveNotification(user.Id, eventDb, scheduleId, true); return(true); } return(false); } catch (Exception ex) { await SaveNotification(user.Id, eventDb, scheduleId, false); return(false); } }
private async Task <bool> SendEmail(ObjectId userId, CustomEmail message, List <string> variables, List <string> variablesToLower, CancellationToken cancellationToken) { var user = await GetUser(userId, cancellationToken); if (user != null && !string.IsNullOrEmpty(user.Email)) { var text = GetEmailText(user, message.Text, variables, variablesToLower); try { var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "title", message.Title }, { "text", text } } }; await _provider.SendEmail(emailData, message.Title, "BTG-CustomEmail"); await SaveNotification(user.Id, message.Title, true); return(true); } catch (Exception ex) { return(false); } } return(false); }
private async Task <bool> SendManagerEmail(User user, Track track, List <NewUser> newUsers, CancellationToken token) { try { var usersList = "<ul style=\"list-style-type: none; padding: 0;\" >"; int userIndex = 1; foreach (var newUser in newUsers) { var userLi = "<li style=\"margin-bottom: 10px; padding-left: 10px\" >"; userLi += "<b>Usuário " + userIndex + ":</b> " + newUser.Username + "<br>"; userLi += "<b>Senha: </b>" + newUser.Password; userLi += "</li>"; usersList += userLi; userIndex++; } usersList += "</ul>"; var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "name", user.Name }, { "track", track.Title }, { "users", usersList }, { "siteurl", _configuration[$"DomainOptions:SiteUrl"] } } }; await _provider.SendEmail( emailData, "Usuários Criados" + " - " + track.Title, "BTG-NewUserAndSubordinatesMessage" ); return(true); } catch (Exception error) { await CreateErrorLog( "new-user-mail", JsonConvert.SerializeObject(error), token ); return(false); } }
public async Task <Result> Handle(Contract request, CancellationToken cancellationToken) { string siteUrl = _configuration[$"DomainOptions:SiteUrl"]; var userQry = await _db.UserCollection.FindAsync(u => u.UserName == request.Username, cancellationToken : cancellationToken); var user = await userQry.SingleOrDefaultAsync(cancellationToken); if (user == null) { return(Result.Fail("Usuário não encontrado")); } var token = await _userManager.GeneratePasswordResetTokenAsync(user); var randomPassword = Guid.NewGuid().ToString("d").Substring(1, 6); var pass = await _userManager.ResetPasswordAsync(user, token, randomPassword); if (!pass.Succeeded) { return(Result.Fail("Não foi possivel resetar a senha")); } var tokenResource = await _tokenGenerator.GenerateUserToken(user); await SaveRefreshToken(user.Id, tokenResource.RefreshToken, cancellationToken); var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "name", user.UserName }, { "token", randomPassword }, { "siteurl", siteUrl } } }; await _provider.SendEmail(emailData, "Esqueci minha senha", "BTG-ForgotPasswordTemplate"); return(Result.Ok()); }
private async Task <bool> SendEmailToForumActiveUsers(ForumQuestion question, ForumAnswer answer, CancellationToken cancellationToken) { var moduleQry = await _db.ModuleCollection.FindAsync(m => m.Id == question.ModuleId, cancellationToken : cancellationToken); var module = await moduleQry.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/{module.Title}/{question.ModuleId}/{question.Id}" } } }; await _provider.SendEmail(emailData, "Uma atividade no módulo " + module.Title, "BTG-ForumActivity"); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } return(true); }
private async Task <bool> SendEmailToQuestioner(ForumQuestion question, CancellationToken cancellationToken) { var userQry = await _db.UserCollection.FindAsync(u => u.Id == question.CreatedBy, cancellationToken : cancellationToken); var user = await userQry.SingleOrDefaultAsync(cancellationToken); var moduleQry = await _db.ModuleCollection.FindAsync(m => m.Id == question.ModuleId, cancellationToken : cancellationToken); var module = await moduleQry.SingleOrDefaultAsync(cancellationToken); try { if (user != null && module != null) { var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "name", user.Name }, { "forumTitle", question.Title }, { "forumUrl", _options.Value.SiteUrl + $"/forum/{module.Title}/{question.ModuleId}/{question.Id}" } } }; await _provider.SendEmail(emailData, "Responderam sua pergunta", "BTG-ForumQuestionAnswered"); await SaveNotification(user.Id, module, question.Id, true); return(true); } return(false); } catch (Exception ex) { await SaveNotification(user.Id, module, question.Id, false); return(false); } }
private async Task <bool> SendActivationCode(User user, UserVerificationEmail email) { try { var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "nome", user.Name }, { "code", email.Code } } }; await _provider.SendEmail(emailData, "Código de autenticação", "BTG-UserActivationCode"); return(true); } catch (Exception err) { return(false); } }
private async Task <bool> SendEmail(User user, string password, CancellationToken token) { try { var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "name", user.Name }, { "token", password }, { "username", user.UserName }, { "siteurl", _configuration[$"DomainOptions:SiteUrl"] }, { "studentmanual", _configuration[$"DomainOptions:StudentManual"] }, { "platformtutorial", _configuration[$"DomainOptions:PlatformTutorial"] } } }; await _provider.SendEmail( emailData, "Seja bem-vindo à Academia!", "BTG-NewUserMessage" ); return(true); } catch (Exception error) { await CreateErrorLog( "new-user-mail", JsonConvert.SerializeObject(error), token ); return(false); } }
private async Task <bool> SendEmailModuleInstructor(ForumQuestion forumQuestion, CancellationToken cancellationToken) { var moduleQry = await _db.ModuleCollection.FindAsync(m => m.Id == forumQuestion.ModuleId, cancellationToken : cancellationToken); var module = await moduleQry.SingleOrDefaultAsync(cancellationToken); if (module != null && module.InstructorId != null && module.InstructorId != ObjectId.Empty) { var userQry = await _db.UserCollection.FindAsync(u => u.Id == module.InstructorId, cancellationToken : cancellationToken); var user = await userQry.SingleOrDefaultAsync(cancellationToken); try { if (user != null) { var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "name", user.Name }, { "forumTitle", forumQuestion.Title }, { "moduleName", module.Title }, { "forumUrl", _options.Value.SiteUrl + $"/forum/{module.Title}/{forumQuestion.ModuleId}/{forumQuestion.Id}" } } }; await _provider.SendEmail(emailData, "Uma pergunta foi feita no modulo que você é o instrutor", "BTG-ForumQuestionInstructor"); await SaveNotification(user.Id, module, forumQuestion.Id, true, "Nova pergunta no modulo que você é o instrutor"); } } catch (Exception ex) { await SaveNotification(user.Id, module, forumQuestion.Id, false, "Nova pergunta no modulo que você é o instrutor"); } } if (module != null && module.TutorsIds != null && module.TutorsIds.Count > 0) { foreach (ObjectId tutorId in module.TutorsIds) { if (tutorId != null && tutorId != ObjectId.Empty) { var userQry = await _db.UserCollection.FindAsync(u => u.Id == tutorId, cancellationToken : cancellationToken); var user = await userQry.SingleOrDefaultAsync(cancellationToken); try { if (user != null) { var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "name", user.Name }, { "forumTitle", forumQuestion.Title }, { "moduleName", module.Title }, { "forumUrl", _options.Value.SiteUrl + $"/forum/{module.Title}/{forumQuestion.ModuleId}/{forumQuestion.Id}" } } }; await _provider.SendEmail(emailData, "Uma pergunta foi feita no modulo que você é o tutor", "BTG-ForumQuestionInstructor"); await SaveNotification(user.Id, module, forumQuestion.Id, true, "Nova pergunta no modulo que você é o tutor"); } } catch (Exception ex) { await SaveNotification(user.Id, module, forumQuestion.Id, false, "Nova pergunta no modulo que você é o tutor"); } } } } if (module != null && module.ExtraInstructorIds != null && module.ExtraInstructorIds.Count > 0) { foreach (ObjectId InstructorId in module.ExtraInstructorIds) { if (InstructorId != null && InstructorId != ObjectId.Empty) { var userQry = await _db.UserCollection.FindAsync(u => u.Id == InstructorId, cancellationToken : cancellationToken); var user = await userQry.SingleOrDefaultAsync(cancellationToken); try { if (user != null) { var emailData = new EmailUserData { Email = user.Email, Name = user.Name, ExtraData = new Dictionary <string, string> { { "name", user.Name }, { "forumTitle", forumQuestion.Title }, { "moduleName", module.Title }, { "forumUrl", _options.Value.SiteUrl + $"/forum/{module.Title}/{forumQuestion.ModuleId}/{forumQuestion.Id}" } } }; await _provider.SendEmail(emailData, "Uma pergunta foi feita no modulo que você é o tutor", "BTG-ForumQuestionInstructor"); await SaveNotification(user.Id, module, forumQuestion.Id, true, "Nova pergunta no modulo que você é o tutor"); } } catch (Exception ex) { await SaveNotification(user.Id, module, forumQuestion.Id, false, "Nova pergunta no modulo que você é o tutor"); } } } } var forumEmailUsers = _db.UserCollection.AsQueryable().Where(u => u.ForumActivities.HasValue && u.ForumActivities.Value).ToList(); try { if (forumEmailUsers != null && forumEmailUsers.Count > 0) { var activeUser = _db.UserCollection.AsQueryable().FirstOrDefault(u => u.Id == forumQuestion.CreatedBy); if (activeUser != null) { 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", activeUser.Name }, { "forumTitle", forumQuestion.Title }, { "forumUrl", _options.Value.SiteUrl + $"/forum/{module.Title}/{forumQuestion.ModuleId}/{forumQuestion.Id}" } } }; await _provider.SendEmail(emailData, "Uma atividade no módulo " + module.Title, "BTG-ForumActivity"); } } } } } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } return(true); }