private GroupDetails GetGroupDetails(Card card, CardMember cardMember)
        {
            List <string> key   = new List <string>();
            List <string> title = new List <string>();

            if (GroupByMember)
            {
                key.Add(cardMember != null ? cardMember.FullName : "Unassigned");
                title.Add(cardMember != null ? cardMember.FullName : "Unassigned");
            }
            if (GroupByPriority)
            {
                Priority priority = TrelloUtility.GetPriority(card);
                key.Add(((int)priority).ToString());
                title.Add(priority.ToString());
            }
            if (GroupByList)
            {
                key.Add(string.Format("{0:#.###}", TrelloUtility.GetListPosition(card, m_lists)).PadLeft(10, '0'));
                title.Add(TrelloUtility.GetListName(card, m_lists));
            }
            return(new GroupDetails
            {
                Key = string.Join("|", key),
                Title = string.Join(" | ", title)
            });
        }
 public void Refresh()
 {
     m_allCards = TrelloUtility.GetAllTrelloCards();
     m_lists    = TrelloUtility.GetTrelloLists();
     m_members  = TrelloUtility.GetTrelloMembers();
     FilterCards();
 }
        private CardViewModel Map(Card card, CardMember member)
        {
            GroupDetails groupDetails = GetGroupDetails(card, member);
            string       assignedTo   = TrelloUtility.GetAssignedTo(card, m_members);

            return(new CardViewModel(
                       groupKey: groupDetails.Key,
                       groupTitle: groupDetails.Title,
                       title: card.Name,
                       description: card.Description,
                       list: TrelloUtility.GetListName(card, m_lists),
                       assignedTo: assignedTo,
                       assignedToMe: assignedTo != null && m_trelloFullName != null && assignedTo.Contains(m_trelloFullName),
                       url: card.ShortUrl,
                       creationDate: TrelloUtility.GetDateCreated(card),
                       priority: TrelloUtility.GetPriority(card)));
        }
        private IEnumerable <CardViewModel> GetCards()
        {
            List <Card>          cards     = m_allCards.Where(FilterCard).ToList();
            List <CardViewModel> cardViews = new List <CardViewModel>();

            if (!GroupByMember)
            {
                cardViews.AddRange(cards.Select(x => Map(x, null)));
            }
            else
            {
                foreach (CardMember member in m_members.Where(FilterMember))
                {
                    cardViews.AddRange(cards.Where(x => TrelloUtility.IsAssignedTo(x, member)).Select(x => Map(x, member)));
                }
            }

            return(cardViews);
        }
 private bool FilterCard(Card card)
 {
     return((
                m_listFilters.All(x => !x.IsSelected) ||
                m_listFilters.Any(x => x.IsSelected && x.FilterId == card.ListId)
                ) && (
                m_memberFilters.All(x => !x.IsSelected) ||
                m_memberFilters.Any(x => x.IsSelected && (
                                        (x.FilterId != "" && card.MemberIds.Contains(x.FilterId)) ||
                                        (x.FilterId == "" && (card.MemberIds == null || card.MemberIds.Length == 0))))
                ) && (
                m_priorityFilters.All(x => !x.IsSelected) ||
                m_priorityFilters.Any(x => x.IsSelected && x.FilterId == ((int)TrelloUtility.GetPriority(card)).ToString())
                ) && (
                m_statusFilters.All(x => !x.IsSelected) ||
                m_statusFilters.Any(x => x.IsSelected && (
                                        (x.FilterId == "open" && !card.IsClosed) ||
                                        (x.FilterId == "closed" && card.IsClosed)))
                ));
 }