public async Task <ActionResult> Register(RegisterViewModel model, HttpPostedFileBase image)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, DisplayName = model.Displayname
                };
                if (db.Users.Any(u => u.DisplayName == user.DisplayName))
                {
                    ModelState.AddModelError("DisplayName", "That display name is already being used.");
                    return(View(model));
                }
                #region Upload Image
                if (image == null)
                {
                    user.DisplayImage = "/Assets/images/profile-pics/defaultProfileImage.jpg";
                }
                if (image != null)
                {
                    var fileValidator = new FileUploadValidator();
                    var fileUrl       = fileValidator.ValidateAndSaveFile3(image);
                    var message       = "";

                    switch (fileUrl)
                    {
                    case "null":
                        message = "An Image Must Be Selected";
                        break;

                    case "small":
                        message = "Invalid Image: Must be larger than 3Kb.";
                        break;

                    case "large":
                        message = "Invalid Image: Must be smaller than 2Mb.";
                        break;

                    case "format":
                        message = "Invalid Image format";
                        break;
                    }

                    if (message != "")
                    {
                        TempData["FileError"] = message;
                        return(View(model));
                    }

                    user.DisplayImage = fileUrl;
                }

                #endregion

                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");


                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        public ActionResult ProfileChanges(string userId, string FullName, HttpPostedFileBase image)
        {
            var user = db.Users.Find(userId);

            //if (user.Protected == true)
            //{
            //    ViewBag.AdminError = "Can't change protected user.";
            //    return View(user);
            //}

            #region Check Image
            if (image != null)
            {
                var fileValidator = new FileUploadValidator();
                var fileUrl       = fileValidator.ValidateAndSaveFile3(image);
                var message       = "";

                switch (fileUrl)
                {
                case "null":
                    message = "An Image Must Be Selected";
                    break;

                case "small":
                    message = "Invalid Image: Must be larger than 3Kb.";
                    break;

                case "large":
                    message = "Invalid Image: Must be smaller than 2Mb.";
                    break;

                case "format":
                    message = "Invalid Image format";
                    break;
                }

                if (message != "")
                {
                    TempData["FileError"] = message;
                    ApplicationUser applicationUser = db.Users.Find(userId);
                    if (applicationUser == null)
                    {
                        return(HttpNotFound());
                    }
                    return(View(applicationUser));
                }

                user.DisplayImage = fileUrl;
            }
            #endregion
            if (!string.IsNullOrWhiteSpace(FullName))
            {
                if (FullName.Trim().Length < 5)
                {
                    TempData["DisplayNameError"] = "Display name must be greater than 5 characters";
                    ApplicationUser applicationUser = db.Users.Find(User.Identity.GetUserId());
                    if (applicationUser == null)
                    {
                        return(HttpNotFound());
                    }
                    return(View(applicationUser));
                }

                user.FullName = FullName;
            }

            //db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();
            if (user.HouseholdId == null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            return(RedirectToAction("ListMembers", "Households", new { hId = user.HouseholdId }));
        }
Beispiel #3
0
        public async Task <ActionResult> Register(RegisterViewModel model, string email, int?hId, string backTo, HttpPostedFileBase image)
        {
            if (ModelState.IsValid)
            {
                var user      = new ApplicationUser();
                var household = new Household();

                if (!string.IsNullOrWhiteSpace(email))
                {
                    user.Email    = email;
                    user.UserName = email;
                }
                else
                {
                    user.Email    = model.Email;
                    user.UserName = model.Email;
                }

                user.FirstName = model.FirstName;
                user.LastName  = model.LastName;
                user.FullName  = model.FirstName + " " + model.LastName;



                #region Upload Image
                if (image == null)
                {
                    user.DisplayImage = "/Assets/images/profile-pics/defaultProfileImage.jpg";
                }
                if (image != null)
                {
                    var fileValidator = new FileUploadValidator();
                    var fileUrl       = fileValidator.ValidateAndSaveFile3(image);
                    var message       = "";

                    switch (fileUrl)
                    {
                    case "null":
                        message = "An Image Must Be Selected";
                        break;

                    case "small":
                        message = "Invalid Image: Must be larger than 3Kb.";
                        break;

                    case "large":
                        message = "Invalid Image: Must be smaller than 2Mb.";
                        break;

                    case "format":
                        message = "Invalid Image format";
                        break;
                    }

                    if (message != "")
                    {
                        TempData["FileError"] = message;
                        return(View(model));
                    }

                    user.DisplayImage = fileUrl;
                }

                #endregion

                var result = await UserManager.CreateAsync(user, model.Password);



                if (result.Succeeded)
                {
                    if (TempData["ManualAddMember"] == null)
                    {
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);
                    }


                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    if (hId != null)
                    {
                        householdhelper.AddMemberByEmail(email, (int)hId);
                        return(RedirectToAction("MyHousehold", "Households", new { id = hId }));
                    }
                    else
                    {
                        usersHelper.AddToRole(user.Id, "Guest");
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }