예제 #1
0
        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());
        }
예제 #2
0
        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));
            }
        }
예제 #3
0
        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
            });
        }