Example #1
0
            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);
                }
            }
Example #2
0
            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);
            }
Example #3
0
            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);
                }
            }
Example #4
0
            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());
            }
Example #5
0
            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);
            }
Example #6
0
            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);
                }
            }
Example #7
0
            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);
                }
            }
Example #8
0
            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);
                }
            }
Example #9
0
            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);
            }