Пример #1
0
        /// <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);
        }
Пример #2
0
        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)));
        }
Пример #3
0
        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));
        }