Ejemplo n.º 1
0
        public ActionResult ManageMember(int id)
        {
            DataManager dm     = new DataManager();
            var         member = Members.GetById(id);

            if (member == null)
            {
                TempData["ErrorMessage"] =
                    "The member you are looking for could not be found. Please try again but if it persists please give your handy IT people a shout :)";
                _log.Error(
                    $"A member with the id of {id} could not be found in the admin surface controller ManageMember function");
                return(null);
            }

            var model = new ManageMemberViewModel();

            model.Member      = new Member(member);
            model.Memberships = dm.GetMembershipsForUser(id);

            //setup new membership
            var curMemberships = dm.GetMembershipsForUser(id);
            var startDate      = DateTime.Now;
            var endDate        = DateTime.Now.AddYears(1);

            if (curMemberships != null && curMemberships.Count > 0)
            {
                var previous = curMemberships.OrderByDescending(m => m.EndDate).First();
                startDate = previous.StartDate.AddYears(1);
                endDate   = startDate.AddYears(1).AddDays(-1);
            }

            model.NewMembership = new Membership()
            {
                StartDate      = startDate,
                EndDate        = endDate,
                Member         = id,
                IsSubscription = false
            };

            try
            {
                model.IsSubscribedToMailingList =
                    Task.Run(() => dm.IsUserSubscribedToMailChimpList(MailChimpListIds.MailingList, model.Member.Email))
                    .Result;
                model.IsSubscribedToMemberList =
                    Task.Run(() => dm.IsUserSubscribedToMailChimpList(MailChimpListIds.Membership, model.Member.Email))
                    .Result;
            }
            catch (Exception ex)
            {
                _log.Error("Error fetching mailchimp subscription information", ex);
            }

            model.HasMemberRole    = System.Web.Security.Roles.IsUserInRole(model.Member.Email, "Member");
            model.HasEditorRole    = System.Web.Security.Roles.IsUserInRole(model.Member.Email, "Editor");
            model.HasCommitteeRole = System.Web.Security.Roles.IsUserInRole(model.Member.Email, "Committee Member");
            return(PartialView("ManageMember", model));
        }
Ejemplo n.º 2
0
        public ActionResult UpdateMember(ManageMemberViewModel model)
        {
            if (ModelState.IsValid)
            {
                //No user id was passed in
                if (model.Member.Id == 0)
                {
                    _log.Error("Trying to update a member on the admin form but no userId was posted back");
                    ModelState.AddModelError("", "We could not find a user with that id to update");
                    return(CurrentUmbracoPage());
                }

                var memberService = Services.MemberService;
                var member        = memberService.GetById(model.Member.Id);
                //couldnt find member
                if (member == null)
                {
                    _log.Error(
                        $"Trying to update a member on the admin form but the member with id {model.Member.Id} could not be found");
                    ModelState.AddModelError("", "We could not find a user with that id to update");
                    return(CurrentUmbracoPage());
                }
                //update email if email is different
                if (model.Member.Email != member.Email)
                {
                    //check if the new email already exists in the system
                    if (memberService.GetByEmail(model.Member.Email) != null)
                    {
                        ModelState.AddModelError("Email",
                                                 "This email address already exists in the system and emails must be unique.");
                        return(CurrentUmbracoPage());
                    }
                }

                try
                {
                    DataManager dm = new DataManager();
                    dm.AddOrUpdateMember(model.Member, true);
                    //mailing list subscribe
                    if (model.IsSubscribedToMailingList)
                    {
                        Task.Run(
                            () =>
                            dm.AddOrUpdateUserToMailChimpList(MailChimpListIds.MailingList, model.Member.Email,
                                                              model.Member.FirstName, model.Member.LastName));
                    }
                    else
                    {
                        var mailingListMember =
                            Task.Run(
                                () =>
                                dm.IsUserSubscribedToMailChimpList(MailChimpListIds.MailingList, model.Member.Email))
                            .Result;
                        if (mailingListMember)
                        {
                            Task.Run(
                                () =>
                                dm.AddOrUpdateUserToMailChimpList(MailChimpListIds.MailingList, model.Member.Email,
                                                                  model.Member.FirstName, model.Member.LastName, true));
                        }
                    }

                    //members mailing list subscribe
                    if (model.IsSubscribedToMailingList)
                    {
                        Task.Run(
                            () =>
                            dm.AddOrUpdateUserToMailChimpList(MailChimpListIds.Membership, model.Member.Email,
                                                              model.Member.FirstName, model.Member.LastName));
                    }
                    else
                    {
                        var memberListMember =
                            Task.Run(
                                () =>
                                dm.IsUserSubscribedToMailChimpList(MailChimpListIds.Membership, model.Member.Email))
                            .Result;
                        if (memberListMember)
                        {
                            Task.Run(
                                () =>
                                dm.AddOrUpdateUserToMailChimpList(MailChimpListIds.Membership, model.Member.Email,
                                                                  model.Member.FirstName, model.Member.LastName, true));
                        }
                    }

                    //Security
                    if (model.HasMemberRole)
                    {
                        dm.AddUserToRole(model.Member.Id, "Member");
                    }
                    else
                    {
                        dm.RemoveUserFromRole(model.Member.Id, "Member");
                    }
                    if (model.HasEditorRole)
                    {
                        dm.AddUserToRole(model.Member.Id, "Editor");
                    }
                    else
                    {
                        dm.RemoveUserFromRole(model.Member.Id, "Editor");
                    }
                    if (model.HasCommitteeRole)
                    {
                        dm.AddUserToRole(model.Member.Id, "Committee Member");
                    }
                    else
                    {
                        dm.RemoveUserFromRole(model.Member.Id, "Committee Member");
                    }
                }
                catch (Exception ex)
                {
                    _log.Error("There was an error updating a profile with the exception as follows", ex);
                    ModelState.AddModelError("",
                                             "There was an error updating this profile. Give us a shout if this keeps happening and we will find out whats going on");
                    return(CurrentUmbracoPage());
                }
                TempData["SuccessMessage"] =
                    $"Hurray!! Everything worked and you have update the profile for {model.Member.FirstName} {model.Member.LastName}";
                return(RedirectToCurrentUmbracoPage("?id=" + model.Member.Id));
            }
            return(CurrentUmbracoPage());
        }