Esempio n. 1
0
    protected void btnCreateUser_Click(object sender, EventArgs e)
    {
        TextBox password = (TextBox)ctrlPD.FindControl("txtPassword");

        //Create Person with User.
        newPerson = ctrlPD.GetPersonDetails();
        newUser   = MembershipManager.CreateUser(newPerson.Id, password.Text);
        newUser.PasswordChangeRequired = true;
        newUser.Person = newPerson;
        PersonManager.CreatePerson(newUser, newPerson);

        //Attach regions to person if any.
        UpsertRegions(newUser.Person);

        //Attach sites to the person if any.
        UpsertSites(newUser.Person);

        //attach groups to the person if any.
        AddGroups(newUser.Person);

        //create feedback
        string   usernameLink = "<a href=../Directory/PersonDetails.aspx?id=" + newUser.Person.Id + ">" + newUser.Name + "</a>";
        Feedback feedBack     = new Feedback(BusiBlocksConstants.Blocks.Documents.BlockName, "User", Feedback.Actions.Created, usernameLink);

        Session["feedback"] = feedBack;

        Navigation.Admin_SearchUsers().Redirect(this);
    }
Esempio n. 2
0
    /// <summary>
    /// Deletes a user after confirming from Modal Popup. Accepts button's default parameters.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void DeleteUserClick(object sender, EventArgs e)
    {
        string personId = popDeleteUser.ReferrerId;

        try
        {
            Person person = PersonManager.GetPersonById(personId);
            User   user   = MembershipManager.GetUserByPerson(person);

            // Do not delete person if they are in a site or group.
            if (PersonManager.IsPersonInPersonRegion(personId) ||
                PersonManager.IsPersonInPersonSite(personId) ||
                PersonManager.IsPersonInPersonType(personId))
            {
                ((IFeedback)Page.Master).SetError(
                    GetType(),
                    Utilities.GetDisplayUserId(user.Id) + " could not be deleted because they are assigned to a Site, Region or Group"
                    );
                return;
            }

            PersonManager.DeletePerson(person.Id);

            //remove from ViewState
            List <string> personList = ViewState[PersonList].ToString().Split(',').ToList <string>();
            personList.Remove(personId);
            ViewState[PersonList] = string.Join(",", personList.ToArray());

            ((IFeedback)Master).ShowFeedback(BusiBlocksConstants.Blocks.Administration.BlockName, user.GetType().Name, Feedback.Actions.Deleted, user.Name);
            //if person deletes itself..logout him out.
            if (user.Name.Equals(Utilities.GetUserName(Page.User.Identity.Name)))
            {
                FormsAuthentication.SignOut();
                Navigation.Admin_SearchUsers().Redirect(this);
            }

            RadGrid1.MasterTableView.Rebind();
        }
        catch (Exception ex)
        {
            throw ex;
            ((IFeedback)Master).SetException(GetType(), ex);
        }
    }
Esempio n. 3
0
    protected void btnSave_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            JavaScriptSerializer             serializer = new JavaScriptSerializer();
            IList <SiteAccessDetail>         allSites   = serializer.Deserialize <List <SiteAccessDetail> >(listAllSitesDetails.Value);
            IList <PersonRegionAccessDetail> allRegions = serializer.Deserialize <List <PersonRegionAccessDetail> >(listRegionAccessDetails.Value);
            List <PersonType> allGroups = serializer.Deserialize <List <PersonType> >(listGroupsDetails.Value);

            //save personal details
            Person editedPerson = ctrlPD.GetPersonDetails();
            // Problem is that ctrlPD gives you a new person, not necessarily a real existing person.
            Person aPerson = PersonManager.GetPersonById(editedPerson.Id);
            if (aPerson == null)
            {
                // Find a person using their first name and last name.
                IList <Person> persons = PersonManager.SearchPersonsByFirstName(editedPerson.FirstName);
                if (persons.Count == 1)
                {
                    aPerson = persons[0];
                }
                else if (persons.Count > 1)
                {
                    IList <Person> personsLastName = PersonManager.SearchPersonsByLastName(editedPerson.LastName);
                    var            matches         = from x in personsLastName where persons.FirstOrDefault(y => y.Id.Equals(x.Id)) != null select x;
                    if (matches.Count() == 1)
                    {
                        aPerson = matches.First();
                    }
                    // Can't find em.
                }
            }
            if (aPerson == null)
            {
                throw new InvalidOperationException("There is no valid user to operate on");
            }

            editedPerson.Address = PersonManager.GetPersonById(editedPerson.Id).Address;
            IList <User> users = MembershipManager.GetAllUsers();
            User         user  = null;
            foreach (User u in users)
            {
                if (u.Person != null)
                {
                    if (u.Person.Id.Equals(editedPerson.Id))
                    {
                        user = u;
                    }
                }
            }

            string password = ctrlPD.GetPassword();

            if (!string.IsNullOrEmpty(password))
            {
                user.ChangePassword(password, true);
            }

            user.Name = ctrlPD.GetUserId();

            MembershipManager.UpdateUser(user);
            PersonManager.UpdatePerson(editedPerson);

            //save regions if changed
            if (allRegions != null)
            {
                IList <Region>       allRegionsList = SiteManager.GetAllRegions();
                IEnumerable <string> allRegionIds   = from st in allRegionsList select st.Id;

                IList <string> currentRegionIds = new List <string>();

                foreach (PersonRegionAccessDetail item in allRegions)
                {
                    Region tempRegion = SiteManager.GetRegionById(item.LocationId);

                    if (tempRegion != null)
                    {
                        PersonRegion PR = new PersonRegion();
                        PR = PersonManager.GetPersonRegionByPersonAndRegion(editedPerson, tempRegion);
                        //if PS is null that means a new site is being added for the person.
                        if (PR != null)
                        {
                            PR.IsView          = item.IsView;
                            PR.IsAdministrator = item.IsAdmin;
                            PR.IsManager       = item.IsManager;
                            PersonManager.UpdatePersonRegion(PR);
                        }
                        else
                        {
                            PersonManager.AddPersonToRegion(editedPerson.Id, tempRegion.Id, item.IsAdmin, item.IsManager);
                        }
                    }
                    currentRegionIds.Add(item.LocationId);
                }
                //remove regions
                foreach (string regionId in allRegionIds)
                {
                    if (!currentRegionIds.Contains(regionId))
                    {
                        PersonManager.DeletePersonFromRegion(editedPerson.Id, regionId);
                    }
                }
            }
            // save sites if changed
            if (allSites != null)
            {
                IList <Site> personSites = SiteManager.GetSitesByUser(user.Name, true);

                IEnumerable <string> siteIds = from st in personSites select st.Id;

                IList <string> sites = new List <string>();
                foreach (SiteAccessDetail item in allSites)
                {
                    Site tempSite = SiteManager.GetSiteById(item.LocationId);

                    if (tempSite != null)
                    {
                        PersonSite PS = new PersonSite();
                        PS = PersonManager.GetPersonSiteByPersonAndSite(editedPerson, tempSite, true);
                        //if PS is null that means a new site is being added for the person.
                        if (PS != null)
                        {
                            PS.IsAdministrator = item.IsAdmin;
                            PS.IsAssigned      = item.IsView;
                            PS.IsDefault       = item.IsPrimary;
                            PS.IsManager       = item.IsManager;
                            PersonManager.UpdatePersonSite(PS);
                        }
                        else
                        {
                            PersonManager.AddPersonToSite(editedPerson.Id, item.LocationId, item.IsAdmin, item.IsManager, item.IsView, item.IsPrimary);
                        }
                    }
                    sites.Add(item.LocationId);
                }
                //remove sites
                foreach (string siteId in siteIds)
                {
                    if (!sites.Contains(siteId))
                    {
                        PersonManager.DeletePersonFromSite(editedPerson.Id, siteId);
                    }
                }
            }

            // save groups
            foreach (PersonType pType in personTypes)
            {
                if (allGroups.Exists(x => x.Name.Equals(pType.Name)))
                {
                    bool isPersonType = PersonManager.IsPersonInPersonType(editedPerson, pType);

                    if (!isPersonType)
                    {
                        PersonManager.AddPersonToPersonType(editedPerson.Id, pType.Id);
                    }
                }
                else
                {
                    bool isPersonType = PersonManager.IsPersonInPersonType(editedPerson, pType);

                    if (isPersonType)
                    {
                        PersonManager.DeletePersonFromPersonType(editedPerson.Id, pType.Id);
                    }
                }
            }

            //show feedback!
            string   usernameLink = "<a href=../Directory/PersonDetails.aspx?id=" + editedPerson.Id + ">" + user.Name + "</a>";
            Feedback feedback     = new Feedback(BusiBlocksConstants.Blocks.Documents.BlockName, user.GetType().Name, Feedback.Actions.Saved, usernameLink);
            Session["feedback"] = feedback;
            Navigation.Admin_SearchUsers().Redirect(this);
        }
    }
Esempio n. 4
0
 protected void btnCancel_Click(object sender, EventArgs e)
 {
     Navigation.Admin_SearchUsers().Redirect(this);
 }