• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rwjdk / TrelloDotNet / 5985906022

26 Aug 2023 04:42PM UTC coverage: 71.075% (-2.5%) from 73.62%
5985906022

push

github

rwjdk
Added Search Features

825 of 1493 branches covered (0.0%)

Branch coverage included in aggregate %.

105 of 105 new or added lines in 12 files covered. (100.0%)

2077 of 2590 relevant lines covered (80.19%)

63.5 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/TrelloDotNet/TrelloDotNet/TrelloClient.Search.cs
1
using System.Collections.Generic;
2
using System.Threading;
3
using System.Threading.Tasks;
4
using TrelloDotNet.Model;
5
using TrelloDotNet.Model.Search;
6

7
namespace TrelloDotNet
8
{
9
    public partial class TrelloClient
10
    {
11
        /// <summary>
12
        /// Search Trello for Cards, Boards, and/or Organizations
13
        /// </summary>
14
        /// <remarks>
15
        /// Search-tips: https://blog.trello.com/the-secrets-of-superior-trello-searches
16
        /// </remarks>
17
        /// <param name="searchRequest">The Search Request</param>
18
        /// <param name="cancellationToken">CancellationToken</param>
19
        public async Task<SearchResult> SearchAsync(SearchRequest searchRequest, CancellationToken cancellationToken = default)
20
        {
21
            List<string> modelTypes = new List<string>();
×
22
            if (searchRequest.SearchOrganizations)
×
23
            {
24
                modelTypes.Add("organizations");
×
25
            }
26
            if (searchRequest.SearchBoards)
×
27
            {
28
                modelTypes.Add("boards");
×
29
            }
30
            if (searchRequest.SearchCards)
×
31
            {
32
                modelTypes.Add("cards");
×
33
            }
34

35

36
            List<QueryParameter> parameters = new List<QueryParameter>
×
37
            {
×
38
                new QueryParameter("query", searchRequest.SearchTerm),
×
39
                new QueryParameter("partial", searchRequest.PartialSearch),
×
40
                new QueryParameter("modelTypes", string.Join(",", modelTypes))
×
41
            };
×
42

43
            #region Boards-options
44
            if (searchRequest.BoardFilter != null)
×
45
            {
46
                parameters.Add(new QueryParameter("idBoards", string.Join(",", searchRequest.BoardFilter.BoardIds)));
×
47
            }
48

49
            if (searchRequest.BoardFields != null)
×
50
            {
51
                parameters.Add(new QueryParameter("board_fields", string.Join(",", searchRequest.BoardFields.FieldNames)));
×
52
            }
53

54
            if (searchRequest.BoardLimit.HasValue)
×
55
            {
56
                parameters.Add(new QueryParameter("boards_limit", searchRequest.BoardLimit.Value));
×
57
            }
58
            #endregion
59

60
            #region Organization-options
61
            if (searchRequest.OrganizationFilter != null)
×
62
            {
63
                parameters.Add(new QueryParameter("idOrganizations", string.Join(",", searchRequest.OrganizationFilter.OrganizationIds)));
×
64
            }
65
            #endregion
66

67
            #region Card-options
68
            if (searchRequest.CardFilter != null)
×
69
            {
70
                parameters.Add(new QueryParameter("idCards", string.Join(",", searchRequest.CardFilter.CardIds)));
×
71
            }
72

73
            if (searchRequest.CardFields != null)
×
74
            {
75
                parameters.Add(new QueryParameter("card_fields", string.Join(",", searchRequest.CardFields.FieldNames)));
×
76
            }
77

78
            if (searchRequest.CardLimit.HasValue)
×
79
            {
80
                parameters.Add(new QueryParameter("cards_limit", searchRequest.CardLimit.Value));
×
81
            }
82
            
83
            if (searchRequest.CardPage.HasValue)
×
84
            {
85
                parameters.Add(new QueryParameter("cards_page", searchRequest.CardPage.Value));
×
86
            }
87
            #endregion
88

89
            return await _apiRequestController.Get<SearchResult>(UrlPaths.Search, cancellationToken, parameters.ToArray());
×
90
        }
×
91

92
        /// <summary>
93
        /// Search Members across Trello
94
        /// </summary>
95
        /// <param name="searchRequest">The Search-request</param>
96
        /// <param name="cancellationToken">CancellationToken</param>
97
        public async Task<List<Member>> SearchMembersAsync(SearchMemberRequest searchRequest, CancellationToken cancellationToken = default)
98
        {
99
            List<QueryParameter> parameters = new List<QueryParameter>
×
100
            {
×
101
                new QueryParameter("query", searchRequest.SearchTerm),
×
102
                new QueryParameter("onlyOrgMembers", searchRequest.OnlyOrgMembersFilter)
×
103
            };
×
104

105
            if (searchRequest.Limit.HasValue)
×
106
            {
107
                parameters.Add(new QueryParameter("limit", searchRequest.Limit.Value));
×
108
            }
109

110
            if (!string.IsNullOrWhiteSpace(searchRequest.BoardIdFilter))
×
111
            {
112
                parameters.Add(new QueryParameter("idBoard", searchRequest.BoardIdFilter));
×
113
            }
114

115
            if (!string.IsNullOrWhiteSpace(searchRequest.OrganizationIdFilter))
×
116
            {
117
                parameters.Add(new QueryParameter("idOrganization", searchRequest.OrganizationIdFilter));
×
118
            }
119

120
            return await _apiRequestController.Get<List<Member>>($"{UrlPaths.Search}/{UrlPaths.Members}", cancellationToken, parameters.ToArray());
×
121
        }
×
122
    }
123
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc