/// <summary> /// Check if adress exist /// </summary> /// <param name="adress">adress to check</param> /// <returns>returns null if no adress found, otherwise returns adress</returns> public DbTables.Adresses AdressExist(DbTables.Adresses adress) { var adresses = _context.Set <DbTables.Adresses>(); foreach (var Adress in adresses) { if ((adress.StreetAdress == Adress.StreetAdress) && ((adress.PostCode == Adress.PostCode) & (adress.City == Adress.City)) && (adress.County == Adress.County)) { return(Adress); } } return(null); }
public async Task <ActionResult> RequestAccept() { var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(_context)); var id = int.Parse(Request.Form["requestid"]); var message = Request.Form["message"]; var req = _context.MembershipRequests.Find(id); //get the request ViewBag.page = Request.Form["page"]; var pageNumber = int.Parse(Request.Form["page"]); var requests = from s in _context.MembershipRequests orderby s.Lname select s; if (req == null) { ViewBag.Error = "Fant ikke forespørselen."; return(PartialView("_AccordionPartial", requests.ToPagedList(pageNumber, pageSize))); } var email = req.Email; var results = (from s in _context.Users where s.Email.Contains(email) select s).ToList(); if (results.Any()) { foreach (var r in results) { if (r.Email == email) //email of request is already being used. { ViewBag.Error = "Emailen er allerede i bruk."; return(PartialView("_AccordionPartial", requests.ToPagedList(pageNumber, pageSize))); } } } var newUser = new ApplicationUser //validation passed so far, create new user object { Email = email, UserName = email, Fname = req.Fname, Lname = req.Lname, Phone = req.Phone, RoleNr = 3, IsEnabeled = true, BirthNumber = req.BirthNumber }; var adress = new DbTables.Adresses { StreetAdress = req.StreetAdress, City = req.City, PostCode = req.PostCode, County = req.State }; var userAdress = AdressExist(adress); //check if adress already exist, create new if not newUser.Adress = userAdress; var result = await userManager.CreateAsync(newUser); if (result.Succeeded) { userManager.AddToRole(newUser.Id, ResolveUserRole(newUser.RoleNr)); //add to role based on role number (3, fadder) var provider = new DpapiDataProtectionProvider("ButterflyFriends"); userManager.UserTokenProvider = new DataProtectorTokenProvider <ApplicationUser>(provider.Create("Passwordresetting")); var code = await userManager.GeneratePasswordResetTokenAsync(newUser.Id); //create password reset token var callbackUrl = Url.Action("SetPassword", "Account", new { userId = newUser.Id, code, area = "" }, Request.Url.Scheme); //url for password setting var mailResult = SendEmail(req, callbackUrl, message); //attempt to send email if (!mailResult) { ViewBag.MailError = "Email ble ikke sendt"; } var successRequests = from s in _context.MembershipRequests orderby s.Lname select s; try { _context.MembershipRequests.Remove(req); _context.SaveChanges(); ViewBag.Success = "Brukeren " + newUser.Email + " ble lagt til i databasen"; return(PartialView("_AccordionPartial", successRequests.ToPagedList(pageNumber, pageSize))); } catch (EntityException ex) { ViewBag.Error = "Error: " + ex.Message; return(PartialView("_AccordionPartial", successRequests.ToPagedList(pageNumber, pageSize))); } } var errorstring = ""; foreach (var error in result.Errors) { errorstring += " " + error; } ViewBag.Error = "Noe gikk galt " + errorstring; return(PartialView("_AccordionPartial", requests.ToPagedList(pageNumber, pageSize))); }
public async Task <ActionResult> EditUser(changeProfileModel model) { if (ModelState.IsValid) { var userId = User.Identity.GetUserId(); if (userId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var store = new UserStore <ApplicationUser>(_context); var manager = new UserManager <ApplicationUser>(store); var user = manager.FindById(userId); //the current user //so far so good, change the details of the user user.Fname = model.Fname; user.Lname = model.Lname; user.Phone = model.Phone; user.BirthNumber = model.BirthNumber; var newAdress = new DbTables.Adresses { City = model.City, StreetAdress = model.StreetAdress, County = model.State, PostCode = model.PostCode }; var adress = AdressExist(newAdress); if (adress == null) { user.Adress = newAdress; adress = newAdress; _context.Adresses.Add(newAdress); _context.SaveChanges(); } else if (user.Adress == adress) { //do nothing } else { user.Adress = adress; } var result = await manager.UpdateAsync(user); //update the user in the databse store.Context.SaveChanges(); if (result.Succeeded) //if update succeeds { if (Request.IsAjaxRequest()) //it succeeds, show success status message { ViewBag.Success = "Profilinformasjon oppdatert."; var ProfileModel = new changeProfileModel { Id = user.Id, Fname = user.Fname, Lname = user.Lname, Phone = user.Phone, City = adress.City, State = adress.County, StreetAdress = adress.StreetAdress, PostCode = adress.PostCode, BirthNumber = user.BirthNumber }; return(PartialView("_UserInfoPartial", ProfileModel)); } } else { var ProfileModel = new changeProfileModel { Id = user.Id, Fname = user.Fname, Lname = user.Lname, Phone = user.Phone, City = adress.City, State = adress.County, StreetAdress = adress.StreetAdress, PostCode = adress.PostCode }; ViewBag.Error = "Noe gikk galt."; return(PartialView("_UserInfoPartial", ProfileModel)); } } else { var user = _context.Users.Find(User.Identity.GetUserId()); var adress = _context.Adresses.Find(user.AdressId); var ProfileModel = new changeProfileModel { Id = user.Id, Fname = user.Fname, Lname = user.Lname, Phone = user.Phone, City = adress.City, State = adress.County, StreetAdress = adress.StreetAdress, PostCode = adress.PostCode }; var messages = string.Join("\n", ModelState.Values .SelectMany(x => x.Errors) .Select(x => x.ErrorMessage)); ViewBag.Error = "Ugyldige verdier: " + messages; return(PartialView("_UserInfoPartial", ProfileModel)); } return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); }