public async Task <ActionResult> RegisterGuestUser(RegisterGuestViewModel model) { model.UserType = "GuestProspect"; var user = new ApplicationUser() { UserName = model.UserName, UserType = model.UserType, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await SignInAsync(user, isPersistent : false); await UserManager.AddToRoleAsync(user.Id, model.UserType); UserVerificationHelper.VerificationResult r = UserVerificationHelper.generateVerificationLog(user.Id, model.Email); if (r.status.Equals("500")) { AddSingleError(r.message); return(View()); } Session["EMAIL"] = model.Email; Session["USER"] = user.Id; return(RedirectToAction("VerifyEmail")); } else { AddErrors(result); } return(View()); }
public ActionResult RegisterGuest(RegisterGuestViewModel vm) { var db = new WeddingManagementContext(); var userManager = new UserManager <User, int>(new UserStore <User, UserRole, int, UserLogin, UserUserRole, UserClaim>(new WeddingManagementContext())); string requestedGuestCode = (vm.GuestCode ?? string.Empty).ToUpper(); GuestCode dbCode = db.GuestCodes.FirstOrDefault(gc => gc.GuestCode1.ToUpper() == requestedGuestCode); if (dbCode == null) { ModelState.AddModelError("GuestCode", "Guest code not found!"); } else if (db.Users.Count(u => u.Claims.Any(c => c.ClaimType == "GuestCode" && c.ClaimValue == requestedGuestCode)) > dbCode.UseLimit) { ModelState.AddModelError("GuestCode", "Exceeded use allowance!"); } if (ModelState.IsValid) { // TODO: Save guest code claim. // TODO: Redirect to requested url in session. userManager.AddClaim(User.Identity.GetUserId <int>(), new Claim("GuestCode", dbCode.GuestCode1)); var identity = new ClaimsIdentity(User.Identity); identity.AddClaim(new Claim("GuestCode", dbCode.GuestCode1)); if (Session["RegisterGuestReturn"] != null) { return(Redirect(Session["RegisterGuestReturn"].ToString())); } else { return(RedirectToAction("Index", "Home")); } } else { return(View(vm)); } }
public JsonResult Register(RegisterGuestViewModel model) { if (!ModelState.IsValid) { var errors = new List<string>(); foreach (var modelState in ViewData.ModelState.Values) { errors.AddRange(modelState.Errors.Select(error => error.ErrorMessage)); } return Json(new { status = false, errors }); } var mappedModel = Mapper.Map<GuestPostDto>(model); var res = _guestService.Register(mappedModel); if (!res.ValidationErrors.Any()) { new EmailHelper<GuestRegisterEmail>(new GuestRegisterEmail(res.Result.Email, "*****@*****.**", "Rejestracja na konferencję.") { LastName = res.Result.LastName, FirstName = res.Result.FirstName, ConfirmationHash = res.Result.ConfirmationHash, CancelationHash = res.Result.CancelationHash, Id = res.Result.Id }).SendEmail(); } return Json(new { status = res.ValidationErrors.Count == 0, errors = res.ValidationErrors }); }