Skip to content

Commit 87610cd

Browse files
committed
Add advanced company search models and update related request handling
1 parent 1144418 commit 87610cd

File tree

8 files changed

+79
-8
lines changed

8 files changed

+79
-8
lines changed

src/CompaniesHouse/CompaniesHouseClient.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
using CompaniesHouse.Response.Officers;
99
using CompaniesHouse.Response.PersonsWithSignificantControl;
1010
using CompaniesHouse.Response.RegisteredOfficeAddress;
11+
using CompaniesHouse.Response.Search.AdvancedCompanySearch;
1112
using CompaniesHouse.Response.Search.AllSearch;
12-
using CompaniesHouse.Response.Search.CompanySearch;
1313
using CompaniesHouse.Response.Search.DisqualifiedOfficersSearch;
1414
using CompaniesHouse.Response.Search.OfficerSearch;
1515
using CompaniesHouse.UriBuilders;
16+
using CompanySearch = CompaniesHouse.Response.Search.CompanySearch.CompanySearch;
1617
using Officer = CompaniesHouse.Response.Officers.Officer;
1718

1819
namespace CompaniesHouse
@@ -56,9 +57,9 @@ public CompaniesHouseClient(ICompaniesHouseSettings settings)
5657
return _companiesHouseSearchClient.SearchAsync<SearchCompanyRequest, CompanySearch>(request, cancellationToken);
5758
}
5859

59-
public Task<CompaniesHouseClientResponse<CompanySearch>> SearchCompanyAdvancedAsync(AdvancedSearchCompanyRequest request, CancellationToken cancellationToken = default(CancellationToken))
60+
public Task<CompaniesHouseClientResponse<AdvancedCompanySearch>> SearchCompanyAdvancedAsync(AdvancedSearchCompanyRequest request, CancellationToken cancellationToken = default(CancellationToken))
6061
{
61-
return _companiesHouseSearchClient.SearchAsync<AdvancedSearchCompanyRequest, CompanySearch>(request, cancellationToken);
62+
return _companiesHouseSearchClient.SearchAsync<AdvancedSearchCompanyRequest, AdvancedCompanySearch>(request, cancellationToken);
6263
}
6364

6465
public Task<CompaniesHouseClientResponse<OfficerSearch>> SearchOfficerAsync(SearchOfficerRequest request, CancellationToken cancellationToken = default(CancellationToken))

src/CompaniesHouse/CompaniesHouseSearchClient.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ public CompaniesHouseSearchClient(HttpClient httpClient, ISearchUriBuilderFactor
1818
_searchUriBuilderFactory = searchUriBuilderFactory;
1919
}
2020

21-
public async Task<CompaniesHouseClientResponse<TReturn>> SearchAsync<TSearchRequest, TReturn>(TSearchRequest request,
21+
public async Task<CompaniesHouseClientResponse<TReturn>> SearchAsync<TSearchRequest, TReturn>(
22+
TSearchRequest request,
2223
CancellationToken cancellationToken = default(CancellationToken))
2324
where TSearchRequest : SearchRequest<TReturn>
2425
{
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
using CompaniesHouse.Request;
2+
using CompaniesHouse.Response.Search.AdvancedCompanySearch;
23
using CompaniesHouse.Response.Search.CompanySearch;
34

45
namespace CompaniesHouse;
56

67
public interface ICompaniesHouseSearchCompanyAdvancedClient
78
{
8-
Task<CompaniesHouseClientResponse<CompanySearch>> SearchCompanyAdvancedAsync(
9+
Task<CompaniesHouseClientResponse<AdvancedCompanySearch>> SearchCompanyAdvancedAsync(
910
AdvancedSearchCompanyRequest request, CancellationToken cancellationToken = default(CancellationToken));
1011
}

src/CompaniesHouse/JsonConverters/SearchItemConverter.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using CompaniesHouse.Response.Search;
3+
using CompaniesHouse.Response.Search.AdvancedCompanySearch;
34
using CompaniesHouse.Response.Search.CompanySearch;
45
using CompaniesHouse.Response.Search.DisqualifiedOfficersSearch;
56
using CompaniesHouse.Response.Search.OfficerSearch;
@@ -13,10 +14,14 @@ public class SearchItemConverter : JsonCreationConverter<SearchItem>
1314
protected override SearchItem Create(Type objectType, JObject jObject)
1415
{
1516
var kind = jObject.Value<string>("kind");
16-
if (kind is "searchresults#company" or "search-results#company")
17+
if (kind is "searchresults#company")
1718
{
1819
return new Company();
1920
}
21+
if (kind is "search-results#company")
22+
{
23+
return new AdvancedSearchedCompany();
24+
}
2025
else if (kind is "searchresults#officer")
2126
{
2227
return new Officer();

src/CompaniesHouse/Request/AdvancedSearchCompanyRequest.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
#nullable enable
22
using CompaniesHouse.Response;
3+
using CompaniesHouse.Response.Search.AdvancedCompanySearch;
34
using CompaniesHouse.Response.Search.CompanySearch;
45

56
namespace CompaniesHouse.Request;
67

7-
public class AdvancedSearchCompanyRequest : SearchRequest<CompanySearch>
8+
public class AdvancedSearchCompanyRequest : SearchRequest<AdvancedCompanySearch>
89
{
910
public string? CompanyNameIncludes { get; set; }
1011
public string? CompanyNameExcludes { get; set; }
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using Newtonsoft.Json;
2+
3+
namespace CompaniesHouse.Response.Search.AdvancedCompanySearch
4+
{
5+
public class AdvancedCompanySearch
6+
{
7+
[JsonProperty(PropertyName = "etag")]
8+
public string ETag { get; set; }
9+
10+
[JsonProperty(PropertyName = "items")]
11+
public AdvancedSearchedCompany[] Companies { get; set; }
12+
13+
[JsonProperty(PropertyName = "kind")]
14+
public string Kind { get; set; }
15+
16+
[JsonProperty(PropertyName = "hits")]
17+
public int? Hits { get; set; }
18+
19+
[JsonProperty(PropertyName = "top_hit")]
20+
public AdvancedSearchedCompany TopHit { get; set; }
21+
}
22+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using CompaniesHouse.JsonConverters;
2+
using Newtonsoft.Json;
3+
using Newtonsoft.Json.Converters;
4+
5+
namespace CompaniesHouse.Response.Search.AdvancedCompanySearch;
6+
7+
public class AdvancedSearchedCompany : SearchItem
8+
{
9+
[JsonProperty(PropertyName = "company_name")]
10+
public string CompanyName { get; set; }
11+
12+
[JsonProperty(PropertyName = "registered_office_address")]
13+
public Address RegisteredOfficeAddress { get; set; }
14+
15+
[JsonProperty(PropertyName = "company_number")]
16+
public string CompanyNumber { get; set; }
17+
18+
[JsonProperty(PropertyName = "company_status")]
19+
[JsonConverter(typeof(OptionalStringEnumConverter<CompanyStatus>), CompanyStatus.None)]
20+
public CompanyStatus CompanyStatus { get; set; }
21+
22+
[JsonProperty(PropertyName = "company_type")]
23+
[JsonConverter(typeof(StringEnumConverter))]
24+
public CompanyType CompanyType { get; set; }
25+
26+
[JsonProperty(PropertyName = "company_subtype")]
27+
[JsonConverter(typeof(StringEnumConverter))]
28+
public CompanySubType CompanySubType { get; set; }
29+
30+
[JsonProperty(PropertyName = "date_of_cessation")]
31+
[JsonConverter(typeof(OptionalDateJsonConverter))]
32+
public DateTime? DateOfCessation { get; set; }
33+
34+
[JsonProperty(PropertyName = "date_of_creation")]
35+
public DateTime? DateOfCreation { get; set; }
36+
37+
[JsonProperty(PropertyName = "sic_codes")]
38+
public string[] SicCodes { get; set; }
39+
}

tests/CompaniesHouse.IntegrationTests/Tests/SearchingTests/CompanySearchAdvancedTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Threading.Tasks;
33
using CompaniesHouse.Request;
4+
using CompaniesHouse.Response.Search.AdvancedCompanySearch;
45
using CompaniesHouse.Response.Search.CompanySearch;
56
using NUnit.Framework;
67

@@ -13,7 +14,7 @@ public class CompanySearchAdvancedTests
1314
{
1415
private readonly string _query;
1516
private CompaniesHouseClient _client;
16-
private CompaniesHouseClientResponse<CompanySearch> _result;
17+
private CompaniesHouseClientResponse<AdvancedCompanySearch> _result;
1718

1819
public CompanySearchAdvancedTests(string query)
1920
{

0 commit comments

Comments
 (0)