示例#1
0
        public async Task <ActionResult> ActivateUser(AdminActivateUserModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("ActivateUserModal", model));
            }

            var result = await AdminUserWriter.ActivateUser(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                return(View("ActivateUserModal", model));
            }

            return(CloseModalSuccess(result.Message));
        }
        public async Task <IWriterResult> ActivateUser(string adminUserId, AdminActivateUserModel model)
        {
            string            userId     = "";
            EmailMessageModel emailModel = new EmailMessageModel();

            using (var context = DataContextFactory.CreateContext())
            {
                var user = await context.Users.FirstOrDefaultNoLockAsync(x => x.UserName == model.UserName);

                if (user == null)
                {
                    return(new WriterResult(false, $"User '{model.UserName}' not found"));
                }

                if (user.EmailConfirmed)
                {
                    return(new WriterResult(false, $"User '{model.UserName}' already activated"));
                }

                userId = user.Id;
                user.EmailConfirmed = true;
                context.LogActivity(adminUserId, $"Activating user {user.UserName}");
                await context.SaveChangesAsync();

                var emailParameters = new List <object> {
                    model.UserName
                };
                emailModel = new EmailMessageModel
                {
                    BodyParameters = emailParameters.ToArray(),
                    Destination    = user.Email,
                    EmailType      = EmailTemplateType.AccountActivated
                };
            }
            await UserSyncService.SyncUser(userId);

            await EmailService.SendEmail(emailModel);

            return(new WriterResult(true, $"Successfully activated {model.UserName} - Email sent."));
        }