public ObservableSortedList <PollResponseGroup <UserModel> > GetGroupedPollResponses() { ObservableSortedList <PollResponseGroup <UserModel> > groupedResponses = new ObservableSortedList <PollResponseGroup <UserModel> >(); Dictionary <string, PollResponseGroup <UserModel> > responseToGroup = new Dictionary <string, PollResponseGroup <UserModel> >(); this.LoadPollResponses(); if (this.PollOptions != null) { foreach (string option in this.PollOptions) { PollResponseGroup <UserModel> group = new PollResponseGroup <UserModel>(option); responseToGroup.Add(option, group); groupedResponses.Add(group); } } if (this.IsCalendarMessage) { PollResponseGroup <UserModel> acceptGroup = new PollResponseGroup <UserModel>(Strings.CalendarAcceptMessage); responseToGroup.Add(Strings.CalendarAcceptMessage, acceptGroup); groupedResponses.Add(acceptGroup); PollResponseGroup <UserModel> declineGroup = new PollResponseGroup <UserModel>(Strings.CalendarDeclineMessage); responseToGroup.Add(Strings.CalendarDeclineMessage, declineGroup); groupedResponses.Add(declineGroup); } foreach (KeyValuePair <string, int> response in this.Responses) { PollResponseGroup <UserModel> group = null; string key = response.Key; if (this.IsCalendarMessage) { if (string.Compare(response.Key, MessageModel.CalendarAcceptStringNonLocalized, StringComparison.OrdinalIgnoreCase) == 0) { key = Strings.CalendarAcceptMessage; } if (string.Compare(response.Key, MessageModel.CalendarDeclineStringNonLocalized, StringComparison.OrdinalIgnoreCase) == 0) { key = Strings.CalendarDeclineMessage; } } if (!responseToGroup.TryGetValue(key, out group)) { group = new PollResponseGroup <UserModel>(response.Key); groupedResponses.Add(group); responseToGroup.Add(response.Key, group); } group.Add(DataSync.Instance.GetUser(response.Value)); } return(groupedResponses); }
public int CompareTo(object obj) { if (!(obj is ContactGroup <T>)) { return(-1); } PollResponseGroup <T> other = obj as PollResponseGroup <T>; return(string.Compare(this.Response, other.Response, StringComparison.OrdinalIgnoreCase)); }