public override GNContact PopulateSelectLists(GNContact entity)
        {
            string[] selectedRoles = null;
            if (entity != null)
            {
                if (entity.GNContactRoles != null)
                {
                    selectedRoles = entity.GNContactRoles.Select(r => r.AspNetRoleId).ToArray();
                }
            }

            IQueryable <AspNetRole> aspNetRoles = null;

            int UserMinHierarchyOrder = UserContact.GetUserMinHierarchyOrder();

            if (UserContact.IsInRole("GN_ADMIN") || UserContact.IsInRole("ORG_MANAGER"))
            {
                aspNetRoles = this.identityDB.AspNetRoles.Where(r => r.Name != "GN_ADMIN" && !r.Name.Contains("GN_"));
            }
            else if (UserContact.IsInRole("TEAM_MANAGER"))
            {
                aspNetRoles = this.identityDB.AspNetRoles.Where(r => (!r.Name.Contains("GN_") && r.Name != "ORG_MANAGER") && r.HierarchyOrder > UserMinHierarchyOrder);
            }
            else
            {
                aspNetRoles = this.identityDB.AspNetRoles.Where(r => r.Name == "TEAM_MEMBER" && r.HierarchyOrder > UserMinHierarchyOrder);
            }

            ViewBag.AspNetRoleList = new MultiSelectList(aspNetRoles, "Id", "Name", selectedRoles);

            if (!string.IsNullOrEmpty(Request["organizationId"]) && entity != null)
            {
                entity.GNOrganization   = db.GNOrganizations.Find(Guid.Parse(Request["organizationId"]));
                entity.GNOrganizationId = entity.GNOrganization.Id;
            }
            else if (!string.IsNullOrEmpty(Request["teamId"]) && entity != null)
            {
                entity.GNOrganization   = db.GNTeams.Find(Guid.Parse(Request["teamId"])).Organization;
                entity.GNOrganizationId = entity.GNOrganization.Id;
            }
            else if (entity != null && entity.GNOrganizationId != Guid.Empty)
            {
                entity.GNOrganization = db.GNOrganizations.Find(entity.GNOrganizationId);
            }

            if (!string.IsNullOrEmpty(Request["aspNetUserId"]) && Guid.Parse(Request["aspNetUserId"]) != Guid.Empty)
            {
                if (entity == null)
                {
                    entity = new GNContact();
                }

                AspNetUser aspNetUser = identityDB.AspNetUsers.Find(Request["aspNetUserId"]);
                if (aspNetUser != null)
                {
                    entity.User         = aspNetUser;
                    entity.AspNetUserId = aspNetUser.Id;
                    entity.Email        = aspNetUser.Email;
                }
            }

            return(base.PopulateSelectLists(entity));
        }