protected void loadDataFromConcierge() { Search sLeaders = GetOrganizationalLayerLeaderSearch(targetOrganizationalLayer.ID); SearchResult srLeaders = APIExtensions.GetSearchResult(sLeaders, 0, 1); leader = ConvertLeaderSearchResult(srLeaders); }
protected bool isModerator(IConciergeAPIService proxy) { if (hasLeaderSearchBeenRun) { return(leader != null && leader.CanModerateDiscussions); } if (targetChapter != null) { Search sChapterLeader = GetChapterLeaderSearch(targetChapter.ID); SearchResult srChapterLeader = proxy.GetSearchResult(sChapterLeader, 0, 1); leader = ConvertLeaderSearchResult(srChapterLeader); hasLeaderSearchBeenRun = true; } if (targetSection != null) { Search sSectionLeader = GetSectionLeaderSearch(targetSection.ID); SearchResult srSectionLeader = proxy.GetSearchResult(sSectionLeader, 0, 1); leader = ConvertLeaderSearchResult(srSectionLeader); hasLeaderSearchBeenRun = true; } if (targetOrganizationalLayer != null) { Search sOrganizationalLayerLeader = GetOrganizationalLayerLeaderSearch(targetOrganizationalLayer.ID); SearchResult srOrganizationalLayerLeader = proxy.GetSearchResult(sOrganizationalLayerLeader, 0, 1); leader = ConvertLeaderSearchResult(srOrganizationalLayerLeader); hasLeaderSearchBeenRun = true; } return(leader != null && leader.CanModerateDiscussions); }
protected void getLeader() { Search sLeaders = GetChapterLeaderSearch(targetChapter.ID); SearchResult srLeaders = APIExtensions.GetSearchResult(sLeaders, 0, 1); leader = ConvertLeaderSearchResult(srLeaders); }
/// <summary> /// Initializes the target object for the page /// </summary> /// <remarks>Many pages have "target" objects that the page operates on. For instance, when viewing /// an event, the target object is an event. When looking up a directory, that's the target /// object. This method is intended to be overriden to initialize the target object for /// each page that needs it.</remarks> protected override void InitializeTargetObject() { base.InitializeTargetObject(); targetSection = LoadObjectFromAPI <msSection>(ContextID); if (targetSection == null) { GoToMissingRecordPage(); return; } targetSectionLeader = targetSection.Leaders.Find(x => x.Individual == CurrentEntity.ID); if (targetSectionLeader == null) { GoToMissingRecordPage(); return; } targetMembershipOrganization = LoadObjectFromAPI <msMembershipOrganization>(targetSection.MembershipOrganization); if (targetMembershipOrganization == null) { GoToMissingRecordPage(); return; } targetSearchManifest = MultiStepWizards.ViewSectionMembers.SearchManifest; if (targetSearchManifest == null || targetSearchManifest.DefaultSelectedFields.Count == 0) { targetSearchManifest = buildSearchManifest(); MultiStepWizards.ViewSectionMembers.SearchManifest = targetSearchManifest; } using (IConciergeAPIService proxy = GetConciegeAPIProxy()) { List <string> availableFields = defaultFieldFullPaths; //If the Membership Organization has defined criteria fields available to leaders use them but prefix with "Membership." because the settings are based on the Membership search //while this is a section membership search if (targetMembershipOrganization.LeaderSearchFields != null) { availableFields = (from field in targetMembershipOrganization.LeaderSearchFields select "Membership." + field).ToList(); } targetCriteriaFields = proxy.GetSearchFieldMetadataFromFullPath(msSectionMembership.CLASS_NAME, null, availableFields).ResultValue; } }
/// <summary> /// Initializes the target object for the page /// </summary> /// <remarks>Many pages have "target" objects that the page operates on. For instance, when viewing /// an event, the target object is an event. When looking up a directory, that's the target /// object. This method is intended to be overriden to initialize the target object for /// each page that needs it.</remarks> protected override void InitializeTargetObject() { base.InitializeTargetObject(); //Load the chapter and individual from the context id in the query string targetChapter = LoadObjectFromAPI <msChapter>(ContextID); if (targetChapter == null) { GoToMissingRecordPage(); return; } if (targetChapter.Leaders == null) { targetChapter.Leaders = new List <msMembershipLeader>(); } if (string.IsNullOrWhiteSpace(IndividualID)) { targetLeader = new msMembershipLeader(); } else { //Check the individual ID - if it's specified then this is an edit command and load the individual targetIndividual = LoadObjectFromAPI <msIndividual>(IndividualID); targetLeader = targetChapter.Leaders.Where(x => x.Individual == IndividualID).SingleOrDefault(); if (targetIndividual == null) { GoToMissingRecordPage(); return; } IsInEditMode = true; } if (targetLeader == null) { GoToMissingRecordPage(); return; } currentLeader = targetChapter.Leaders.Find(x => x.Individual == CurrentEntity.ID); }
protected void loadDataFromConcierge() { var searches = new List <Search>(); // Get all the chapters for the chapter & member counts // Setup the clause to recursively find chapters that are somewhere nested under the current organizational layer var organizationalLayerChapterClause = new SearchOperationGroup { GroupType = SearchOperationGroupType.Or }; organizationalLayerChapterClause.Criteria.Add(Expr.Equals("Layer", ContextID)); // Add the recursive query for all the parent organizational layers var sbChapter = new StringBuilder("Layer"); // Add Organizational Layers for (int i = 0; i < PortalConfiguration.OrganizationalLayerTypes.Rows.Count - 1; i++) { sbChapter.Append(".{0}"); organizationalLayerChapterClause.Criteria.Add(Expr.Equals(string.Format(sbChapter.ToString(), "ParentLayer"), ContextID)); } var sChapters = new Search(msChapter.CLASS_NAME) { ID = msChapter.CLASS_NAME }; sChapters.AddOutputColumn("ID"); sChapters.AddOutputColumn("Name"); sChapters.AddOutputColumn("LinkedOrganization._Preferred_Address"); sChapters.AddCriteria(organizationalLayerChapterClause); sChapters.AddSortColumn("Name"); searches.Add(sChapters); var sLeaders = GetOrganizationalLayerLeaderSearch(targetOrganizationalLayer.ID); searches.Add(sLeaders); var searchResults = APIExtensions.GetMultipleSearchResults(searches, 0, null); dvChapters = new DataView(searchResults.Single(x => x.ID == msChapter.CLASS_NAME).Table); leader = ConvertLeaderSearchResult(searchResults.Single(x => x.ID == "OrganizationalLayerLeader")); }
protected void loadLeaders() { //If there's no chapters on this membership then the owner can't be a chapter leader if (dvChapterMembership.Count == 0) { leaders = new Dictionary <string, msMembershipLeader>(); return; } Search sLeaders = GetChapterLeaderSearch(null); sLeaders.AddOutputColumn("Chapter"); sLeaders.Criteria.Clear(); sLeaders.AddCriteria(Expr.Equals("Individual", ConciergeAPI.CurrentEntity.ID)); SearchOperationGroup chapterGroup = new SearchOperationGroup(); chapterGroup.FieldName = "Chapter"; chapterGroup.GroupType = SearchOperationGroupType.Or; foreach (DataRowView drvChapterMembership in dvChapterMembership) { chapterGroup.Criteria.Add(Expr.Equals("Chapter", drvChapterMembership["Chapter"].ToString())); } sLeaders.AddCriteria(chapterGroup); SearchResult srLeaders = APIExtensions.GetSearchResult(sLeaders, 0, null); leaders = new Dictionary <string, msMembershipLeader>(); foreach (DataRow drLeader in srLeaders.Table.Rows) { //Store and clear the chapter to avoid a casting exception string chapterId = drLeader["Chapter"].ToString(); drLeader["Chapter"] = DBNull.Value; msMembershipLeader leader = MemberSuiteObject.FromDataRow(drLeader).ConvertTo <msMembershipLeader>(); leaders[chapterId] = leader; } }
protected void loadDataFromConcierge() { var searches = new List <Search>(); // Search for the chapter to get aggregate information var sChapter = new Search { Type = msChapter.CLASS_NAME, ID = msChapter.CLASS_NAME }; sChapter.AddOutputColumn("ActiveMemberCount"); sChapter.AddOutputColumn("TotalMemberCount"); sChapter.AddOutputColumn("LocalID"); sChapter.AddOutputColumn("Name"); sChapter.AddOutputColumn("Description"); sChapter.AddOutputColumn("Layer"); sChapter.AddOutputColumn("Layer.Name"); sChapter.AddOutputColumn("Layer.Type.Name"); sChapter.AddCriteria(Expr.Equals("ID", ContextID)); searches.Add(sChapter); // Search for related committees var sChapterCommittees = new Search { Type = msCommittee.CLASS_NAME, ID = msCommittee.CLASS_NAME }; sChapterCommittees.AddOutputColumn("ID"); sChapterCommittees.AddOutputColumn("Name"); sChapterCommittees.AddOutputColumn("CurrentMemberCount"); sChapterCommittees.AddCriteria(Expr.Equals("Chapter.ID", ContextID)); sChapterCommittees.AddCriteria(Expr.Equals("ShowInPortal", true)); searches.Add(sChapterCommittees); // Search for related events var sChapterEvents = new Search { Type = msEvent.CLASS_NAME, ID = msEvent.CLASS_NAME }; sChapterEvents.AddOutputColumn("ID"); sChapterEvents.AddOutputColumn("Name"); sChapterEvents.AddOutputColumn("StartDate"); sChapterEvents.AddOutputColumn("EndDate"); sChapterEvents.AddCriteria(Expr.Equals("Chapter.ID", targetChapter.ID)); sChapterEvents.AddCriteria(Expr.Equals("VisibleInPortal", true)); sChapterEvents.AddSortColumn("StartDate"); sChapterEvents.AddSortColumn("EndDate"); sChapterEvents.AddSortColumn("Name"); searches.Add(sChapterEvents); //Search for the linked organization if (!string.IsNullOrWhiteSpace(targetChapter.LinkedOrganization)) { var sLinkedOrganizaition = new Search(msOrganization.CLASS_NAME) { ID = msOrganization.CLASS_NAME }; sLinkedOrganizaition.AddOutputColumn("ID"); sLinkedOrganizaition.AddOutputColumn("Name"); sLinkedOrganizaition.AddOutputColumn("Invoices_OpenInvoiceBalance"); sLinkedOrganizaition.AddOutputColumn("_Preferred_Address_Line1"); sLinkedOrganizaition.AddOutputColumn("_Preferred_Address_Line2"); sLinkedOrganizaition.AddOutputColumn("_Preferred_Address_City"); sLinkedOrganizaition.AddOutputColumn("_Preferred_Address_State"); sLinkedOrganizaition.AddOutputColumn("_Preferred_Address_PostalCode"); sLinkedOrganizaition.AddCriteria(Expr.Equals("ID", targetChapter.LinkedOrganization)); searches.Add(sLinkedOrganizaition); } var sLeader = GetChapterLeaderSearch(targetChapter.ID); searches.Add(sLeader); var searchResults = APIExtensions.GetMultipleSearchResults(searches, 0, null); if (searchResults.Single(x => x.ID == msChapter.CLASS_NAME).TotalRowCount == 0) { GoToMissingRecordPage(); } drTargetChapter = searchResults.Single(x => x.ID == msChapter.CLASS_NAME).Table.Rows[0]; dvChapterCommittees = new DataView(searchResults.Single(x => x.ID == msCommittee.CLASS_NAME).Table); dvChapterEvents = new DataView(searchResults.Single(x => x.ID == msEvent.CLASS_NAME).Table); var srLinkedOrganization = searchResults.FirstOrDefault(x => x.ID == msOrganization.CLASS_NAME); if (srLinkedOrganization != null) { drLinkedOrganization = srLinkedOrganization.Table.Rows[0]; } var srLeader = searchResults.Single(x => x.ID == "ChapterLeader"); if (srLeader != null) { leader = ConvertLeaderSearchResult(srLeader); } }
protected void loadDataFromConcierge() { var searches = new List <Search>(); // Search for the section to get aggregate information var sSection = new Search { Type = msSection.CLASS_NAME, ID = msSection.CLASS_NAME }; sSection.AddOutputColumn("ActiveMemberCount"); sSection.AddOutputColumn("TotalMemberCount"); sSection.AddOutputColumn("LocalID"); sSection.AddOutputColumn("Name"); sSection.AddOutputColumn("Description"); sSection.AddCriteria(Expr.Equals("ID", ContextID)); searches.Add(sSection); // Search for related committees var sSectionCommittees = new Search { Type = msCommittee.CLASS_NAME, ID = msCommittee.CLASS_NAME }; sSectionCommittees.AddOutputColumn("ID"); sSectionCommittees.AddOutputColumn("Name"); sSectionCommittees.AddOutputColumn("CurrentMemberCount"); sSectionCommittees.AddCriteria(Expr.Equals("Section.ID", ContextID)); sSectionCommittees.AddCriteria(Expr.Equals("ShowInPortal", true)); searches.Add(sSectionCommittees); // Search for related events var sSectionEvents = new Search { Type = msEvent.CLASS_NAME, ID = msEvent.CLASS_NAME }; sSectionEvents.AddOutputColumn("ID"); sSectionEvents.AddOutputColumn("Name"); sSectionEvents.AddOutputColumn("StartDate"); sSectionEvents.AddOutputColumn("EndDate"); sSectionEvents.AddCriteria(Expr.Equals("Section.ID", targetSection.ID)); sSectionEvents.AddCriteria(Expr.Equals("VisibleInPortal", true)); sSectionEvents.AddSortColumn("StartDate"); sSectionEvents.AddSortColumn("EndDate"); sSectionEvents.AddSortColumn("Name"); searches.Add(sSectionEvents); var sLeader = GetSectionLeaderSearch(targetSection.ID); searches.Add(sLeader); var searchResults = APIExtensions.GetMultipleSearchResults(searches, 0, null); var srSection = searchResults.Single(x => x.ID == msSection.CLASS_NAME); if (srSection.TotalRowCount == 0) { GoToMissingRecordPage(); } drTargetSection = srSection.Table.Rows[0]; dvSectionCommittees = new DataView(searchResults.Single(x => x.ID == msCommittee.CLASS_NAME).Table); dvSectionEvents = new DataView(searchResults.Single(x => x.ID == msEvent.CLASS_NAME).Table); var srLeader = searchResults.Single(x => x.ID == "SectionLeader"); if (srLeader != null) { leader = ConvertLeaderSearchResult(srLeader); } }
protected void loadDataFromConcierge() { var searches = new List <Search>(); // Search for the organizational layer to get aggregate information var sOrganizationalLayer = new Search { Type = msOrganizationalLayer.CLASS_NAME, ID = targetOrganizationalLayer.ID }; sOrganizationalLayer.AddOutputColumn("LocalID"); sOrganizationalLayer.AddOutputColumn("Name"); sOrganizationalLayer.AddOutputColumn("Description"); sOrganizationalLayer.AddOutputColumn("ParentLayer"); sOrganizationalLayer.AddOutputColumn("ParentLayer.Name"); sOrganizationalLayer.AddOutputColumn("ParentLayer.Type.Name"); sOrganizationalLayer.AddCriteria(Expr.Equals("ID", ContextID)); searches.Add(sOrganizationalLayer); // Search for related committees var sOrganizationalLayerCommittees = new Search { Type = msCommittee.CLASS_NAME, ID = msCommittee.CLASS_NAME }; sOrganizationalLayerCommittees.AddOutputColumn("ID"); sOrganizationalLayerCommittees.AddOutputColumn("Name"); sOrganizationalLayerCommittees.AddOutputColumn("CurrentMemberCount"); sOrganizationalLayerCommittees.AddCriteria(Expr.Equals("OrganizationalLayer.ID", ContextID)); sOrganizationalLayerCommittees.AddCriteria(Expr.Equals("ShowInPortal", true)); searches.Add(sOrganizationalLayerCommittees); // Search for related events var sOrganizationalLayerEvents = new Search { Type = msEvent.CLASS_NAME, ID = msEvent.CLASS_NAME }; sOrganizationalLayerEvents.AddOutputColumn("ID"); sOrganizationalLayerEvents.AddOutputColumn("Name"); sOrganizationalLayerEvents.AddOutputColumn("StartDate"); sOrganizationalLayerEvents.AddOutputColumn("EndDate"); sOrganizationalLayerEvents.AddCriteria(Expr.Equals("OrganizationalLayer.ID", targetOrganizationalLayer.ID)); sOrganizationalLayerEvents.AddCriteria(Expr.Equals("VisibleInPortal", true)); sOrganizationalLayerEvents.AddSortColumn("StartDate"); sOrganizationalLayerEvents.AddSortColumn("EndDate"); sOrganizationalLayerEvents.AddSortColumn("Name"); searches.Add(sOrganizationalLayerEvents); // Get all the chapters for the chapter & member counts // Setup the clause to recursively find chapters that are somewhere nested under the current organizational layer var organizationalLayerChapterClause = new SearchOperationGroup { GroupType = SearchOperationGroupType.Or }; organizationalLayerChapterClause.Criteria.Add(Expr.Equals("Layer", ContextID)); // Add the recursive query for all the parent organizational layers var sbChapter = new StringBuilder("Layer"); // Add Organizational Layers for (int i = 0; i < PortalConfiguration.OrganizationalLayerTypes.Rows.Count - 1; i++) { sbChapter.Append(".{0}"); organizationalLayerChapterClause.Criteria.Add(Expr.Equals(string.Format(sbChapter.ToString(), "ParentLayer"), ContextID)); } var sChapters = new Search(msChapter.CLASS_NAME) { ID = msChapter.CLASS_NAME }; sChapters.AddOutputColumn("ID"); sChapters.AddOutputColumn("Name"); sChapters.AddOutputColumn("ActiveMemberCount"); sChapters.AddOutputColumn("TotalMemberCount"); sChapters.AddCriteria(organizationalLayerChapterClause); sChapters.AddSortColumn("Name"); searches.Add(sChapters); // Search for child layers var sOrganizationalLayers = new Search(msOrganizationalLayer.CLASS_NAME) { ID = msOrganizationalLayer.CLASS_NAME }; sOrganizationalLayers.AddOutputColumn("ID"); sOrganizationalLayers.AddOutputColumn("Name"); sOrganizationalLayers.AddOutputColumn("Type"); sOrganizationalLayers.AddOutputColumn("Type.Name"); sOrganizationalLayers.AddCriteria(Expr.Equals("ParentLayer", ContextID)); sOrganizationalLayers.AddSortColumn("Type.ParentType.Name"); sOrganizationalLayers.AddSortColumn("Name"); searches.Add(sOrganizationalLayers); // Search for leaders (by searching it will include inherited leaders not included in the targetOrganizationalLayer.Leaders property) var sLeaders = GetOrganizationalLayerLeaderSearch(targetOrganizationalLayer.ID); searches.Add(sLeaders); var searchResults = APIExtensions.GetMultipleSearchResults(searches, 0, null); var targetOrganizationalLayerSearchResult = searchResults.Single(x => x.ID == targetOrganizationalLayer.ID); if (targetOrganizationalLayerSearchResult.TotalRowCount == 0) { GoToMissingRecordPage(); } drTargetOrganizationalLayer = targetOrganizationalLayerSearchResult.Table.Rows[0]; dvOrganizationalLayerCommittees = new DataView(searchResults.Single(x => x.ID == msCommittee.CLASS_NAME).Table); dvOrganizationalLayerEvents = new DataView(searchResults.Single(x => x.ID == msEvent.CLASS_NAME).Table); // Determine chapter counts var chapterSearchResult = searchResults.Single(x => x.ID == msChapter.CLASS_NAME); chapterCount = chapterSearchResult.Table.Rows.Count; // Determine member counts foreach (DataRow chapterRow in chapterSearchResult.Table.Rows) { activeMemberCount += !chapterRow.Table.Columns.Contains("ActiveMemberCount") || chapterRow["ActiveMemberCount"] == DBNull.Value ? 0 : (int)chapterRow["ActiveMemberCount"]; memberCount += !chapterRow.Table.Columns.Contains("TotalMemberCount") || chapterRow["TotalMemberCount"] == DBNull.Value ? 0 : (int)chapterRow["TotalMemberCount"]; } childOrganizationalLayers = new Dictionary <string, List <DataRow> >(); foreach (DataRow drOrganizationalLayer in searchResults.Single(x => x.ID == msOrganizationalLayer.CLASS_NAME).Table.Rows) { string typeName = (string)drOrganizationalLayer["Type.Name"]; if (!childOrganizationalLayers.ContainsKey(typeName)) { childOrganizationalLayers.Add(typeName, new List <DataRow>()); } childOrganizationalLayers[typeName].Add(drOrganizationalLayer); } leader = ConvertLeaderSearchResult(searchResults.Single(x => x.ID == "OrganizationalLayerLeader")); }