Exemple #1
0
        public async Task <ActionResult> RegisterAsync(EmailRegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                string userid = GetRandomUserNumber();
                if (string.IsNullOrEmpty(userid))
                {
                    ModelState.AddModelError("", "账号池可注册账号为空,系统暂不允许注册,请联系管理员解决");
                    return(View(model));
                }
                var userinfo = db.UserNumbers.Where(u => u.UserId == userid).FirstOrDefault();
                if (userinfo == null || userinfo.State != (int)EnumState.未使用)
                {
                    ModelState.AddModelError("", "账号池可注册账号为空,系统暂不允许注册,请联系管理员解决");
                    return(View(model));
                }
                AppUser user = new AppUser()
                {
                    Email    = model.Email,
                    UserName = userinfo.UserId
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    userinfo.UserName   = userinfo.UserId;
                    userinfo.CreateDate = DateTime.Now;
                    userinfo.State      = (int)EnumState.正常;
                    userinfo.Gender     = model.Gender;
                    if (model.Gender == (int)Gender.女)
                    {
                        userinfo.HeadImg = "Content/images/head1.png";
                    }
                    else
                    {
                        userinfo.HeadImg = "Content/images/head2.png";
                    }
                    db.SaveChanges();
                    if (userinfo.UserId == "Admin")
                    {
                        await UserManager.AddToRoleAsync(user.Id, "Admin");
                    }
                    //return RedirectToAction("Login");
                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code }, protocol: Request.Url.Scheme);
                    await UserManager.SendEmailAsync(user.Id, "确认你的帐户", "请通过单击 <a href=\"" + callbackUrl + "\">这里</a>来确认你的帐户");

                    return(RedirectToAction("RegisterConfirm", new { Email = model.Email }));
                }
            }
            return(View(model));
        }
        public async Task <IActionResult> Register(int id)
        {
            var ceClass = _repo.GetClassById(id);

            if (ceClass.RegisteredAgents.Count() < ceClass.MaxSize)
            {
                var currentUser = await _userManager.GetUserAsync(HttpContext.User);

                ceClass.RegisteredAgents.Add(new RegisteredAgent {
                    AppUser = currentUser, CEClass = ceClass
                });

                var emailRegisterViewModel = new EmailRegisterViewModel(ceClass);

                _emailSender.SendEmailAsync("*****@*****.**", $"Registered for {ceClass.ClassTitle}", "RegisteredClass", emailRegisterViewModel);

                _repo.SaveChanges();
            }

            return(Redirect("/CEClass/Classes"));
        }
        public async Task <IActionResult> Unregister(int id)
        {
            var ceClass = _repo.GetClassById(id);

            var currentUser = await _userManager.GetUserAsync(HttpContext.User);

            var registeredAgents = _repo.GetRegisteredAgents();

            foreach (var r in registeredAgents.ToList())
            {
                if (r.AppUserId == currentUser.Id && r.CEClassId == ceClass.Id)
                {
                    _repo.RemoveRegisteredAgent(r);

                    var emailRegisterViewModel = new EmailRegisterViewModel(ceClass);
                    _emailSender.SendEmailAsync("*****@*****.**", $"Unregistered for {ceClass.ClassTitle}", "UnregisteredClass", emailRegisterViewModel);
                    break;
                }
            }

            _repo.SaveChanges();

            return(Redirect("/CEClass/Classes"));
        }