public IList<FbGroup> GetGroups(string fogBugzUrl, string token) { //string cacheKey = MsCacheKey.Gen(MsCacheDataType.FogBugz_ClientCacheByFogBugzUrl, fogBugzUrl); //object fbAgentCacheObject = null; //var fbAgentCache = new FogBugzClientCache(); //if (MsCache.TryGet(cacheKey, ref fbAgentCacheObject)) //{ // fbAgentCache = (FogBugzClientCache)fbAgentCacheObject; // if (fbAgentCache.Groups != null) return fbAgentCache.Groups; //} if (token == String.Empty) return null; fogBugzUrl = fogBugzUrl.TrimEnd(new[] { '/' }); var persons = FogBugzClient.GetPersons(); var groupHtmlNode = GetGroupsHtmlNode(token, fogBugzUrl); var result = new List<FbGroup>(); if (groupHtmlNode != null) { var groupTable = groupHtmlNode.SelectSingleNode("//table[@id='staticGroupTableFalse']"); if (groupTable == null) return null; var tableRowsOdd = groupTable.SelectNodes("//tr[@class='r-a ']"); var tableRows = groupTable.SelectNodes("//tr[@class='row ']"); if (tableRows != null) { foreach (var tableRowOdd in tableRowsOdd) { tableRows.Add(tableRowOdd); } } else { tableRows = tableRowsOdd; } foreach (var tableRow in tableRows) { var columns = tableRow.SelectNodes("./td"); var group = new FbGroup(); var groupUrl = columns[2].SelectSingleNode("./a").GetAttributeValue("href", null); groupUrl = groupUrl.Replace("amp;", String.Empty); var groupName = Regex.Replace(columns[2].InnerText, "[\r\n\t]", String.Empty); if (groupName.ToLower().Contains("holiday")) { group.Name = groupName; groupUrl = fogBugzUrl + "/" + groupUrl; var groupHtml = GetSingleGroupHtmlNode(token, fogBugzUrl, groupUrl); if (groupHtml != null) { var membersTable = groupHtml.SelectSingleNode("//table[contains(@id, 'staticMembersTable')]"); var membersTableRowsOdd = membersTable.SelectNodes("//tr[@class='r-a ']"); var membersTableRows = membersTable.SelectNodes("//tr[@class='row ']"); if (membersTableRows != null) { foreach (var membersTableRowOdd in membersTableRowsOdd) { membersTableRows.Add(membersTableRowOdd); } } else { membersTableRows = membersTableRowsOdd; } if (membersTableRows != null) { foreach (var membersTableRow in membersTableRows) { var memberColumns = membersTableRow.SelectNodes("./td"); var userName = Regex.Replace(memberColumns[1].InnerText, "[\r\n\t ]", String.Empty); foreach (var person in persons) { if (person.Name == userName) group.Persons.Add(person); } } } result.Add(group); } } } } //fbAgentCache.Groups = result; //MsCache.Set(cacheKey, fbAgentCache); return result; }
private List<TimeOffRange> GetGroupSchedule(Schedule siteSchedule, FbGroup group) { var groupName = group.Name.TrimEnd('s') + ": "; var timeRanges = siteSchedule.TimeOffRanges .Where(tr => tr.Name.IndexOf(groupName) == 0) .ToList(); return timeRanges; }