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)); }