Skip to content

Commit 444f22d

Browse files
committed
Minor refactor + added ability to lookup list of LGAs
1 parent 59d4a13 commit 444f22d

9 files changed

Lines changed: 81 additions & 10 deletions

File tree

PostCodeSearch/Controllers/PostCodeLookupController.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,16 @@ public async Task<ActionResult<IEnumerable<PostCodeLookup>>> GetPostCodes(string
3434
[ProducesResponseType(StatusCodes.Status200OK)]
3535
public async Task<ActionResult<IEnumerable<PostCodeLookup>>> GetByLocalGovernmentArea(string search)
3636
{
37-
var postCodes = await postCodeService.FindByLGA(search);
37+
var postCodes = await postCodeService.FindByRegion(search);
3838
return Ok(postCodes);
3939
}
40+
41+
[HttpGet("getLocalGovernmentAreas/{search:string}")]
42+
[ProducesResponseType(StatusCodes.Status200OK)]
43+
public async Task<ActionResult<IEnumerable<RegionLookup>>> GetLocalGovernmentAreas(string search)
44+
{
45+
var regions = await postCodeService.FindRegions(search);
46+
return Ok(regions);
47+
}
4048
}
4149
}

PostCodeSearch/Models/Persistence/IPostCodeRepository.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ public interface IPostCodeRepository
88
void ClearTable();
99
Task<bool> ContainsData();
1010
Task<IEnumerable<PostCodes>> Find(string filter);
11-
Task<IEnumerable<PostCodes>> FindByLGA(string filter);
11+
Task<IEnumerable<PostCodes>> FindByRegion(string filter);
12+
Task<IEnumerable<RegionLookup>> FindRegions(string filter);
1213
Task InsertBatch(IEnumerable<PostCodes> data);
1314
void SavePostCode(PostCodes postCode);
1415
}

PostCodeSearch/Models/Persistence/PostCodeRepository.cs

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,51 @@ public async Task<IEnumerable<PostCodes>> Find(string filter)
2222
return Enumerable.Empty<PostCodes>();
2323
}
2424

25-
return await Database.FetchAsync<PostCodes>(Database.SqlContext.Sql().Where("PostCode like @0 + '%' OR Locality LIKE @0 + '%'", filter.Trim()));
25+
return await Database.FetchAsync<PostCodes>(
26+
Database.SqlContext.Sql()
27+
.Select<PostCodes>()
28+
.From<PostCodes>()
29+
.Where<PostCodes>(p =>
30+
p.PostCode.Contains(cleanFilter) ||
31+
p.Locality.Contains(cleanFilter)));
32+
33+
//return await Database.FetchAsync<PostCodes>(Database.SqlContext.Sql().Where("PostCode like @0 + '%' OR Locality LIKE @0 + '%'", filter.Trim()));
2634
}
2735

28-
public async Task<IEnumerable<PostCodes>> FindByLGA(string filter)
36+
public async Task<IEnumerable<PostCodes>> FindByRegion(string filter)
2937
{
3038
var cleanFilter = filter.Trim();
3139
if (cleanFilter.IsNullOrWhiteSpace())
3240
{
3341
return Enumerable.Empty<PostCodes>();
3442
}
3543

36-
return await Database.FetchAsync<PostCodes>(Database.SqlContext.Sql().Where("Region like @0 + '%' OR Electorate LIKE @0 + '%'", filter.Trim()));
44+
return await Database.FetchAsync<PostCodes>(
45+
Database.SqlContext.Sql()
46+
.Select<PostCodes>()
47+
.From<PostCodes>()
48+
.Where<PostCodes>(p =>
49+
p.Region.Contains(cleanFilter) ||
50+
p.Electorate.Contains(cleanFilter)));
51+
52+
//return await Database.FetchAsync<PostCodes>(Database.SqlContext.Sql().Where("Region like @0 + '%' OR Electorate LIKE @0 + '%'", filter.Trim()));
53+
}
54+
55+
public async Task<IEnumerable<RegionLookup>> FindRegions(string filter)
56+
{
57+
var cleanFilter = filter.Trim();
58+
if (cleanFilter.IsNullOrWhiteSpace())
59+
{
60+
return Enumerable.Empty<RegionLookup>();
61+
}
62+
63+
return await Database.FetchAsync<RegionLookup>(
64+
Database.SqlContext.Sql()
65+
.SelectDistinct<RegionLookup>()
66+
.From<PostCodes>()
67+
.Where<PostCodes>(p =>
68+
p.Region.Contains(cleanFilter) ||
69+
p.Electorate.Contains(cleanFilter)));
3770
}
3871

3972
public async Task<bool> ContainsData()

PostCodeSearch/Models/Persistence/PostCode.cs renamed to PostCodeSearch/Models/Persistence/PostCodes.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public class PostCodes
1818
[Column("PostCode")]
1919
public string PostCode { get; set; }
2020

21+
[Column("State")]
22+
public string State { get; set; }
23+
2124
[Column("Locality")]
2225
public string Locality { get; set; }
2326

PostCodeSearch/Models/PostCodeLookup.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class PostCodeLookup
88
public double? Latitude { get; set; }
99
public double? Longitude { get; set; }
1010
public string Region { get; set; }
11+
public string State { get; set; }
1112
public string Electorate { get; set; }
1213
public string ElectorateRating { get; set; }
1314
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace PostCodeSearch.Models
2+
{
3+
public class RegionLookup
4+
{
5+
public string Region { get; set; }
6+
public string State { get; set; }
7+
public string Electorate { get; set; }
8+
public string ElectorateRating { get; set; }
9+
}
10+
}

PostCodeSearch/PostCodeSearch.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
1717
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
1818
<PackageReadmeFile>README.nuget.md</PackageReadmeFile>
19-
<Version>0.1.0-rc1</Version>
19+
<Version>0.1.0-rc2</Version>
2020
<Nullable>enable</Nullable>
2121
</PropertyGroup>
2222
<ItemGroup>

PostCodeSearch/Services/IPostCodeService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ namespace PostCodeSearch.Services
66
{
77
public interface IPostCodeService
88
{
9-
Task<IEnumerable<PostCodeLookup>> FindByLGA(string search);
9+
Task<IEnumerable<PostCodeLookup>> FindByRegion(string search);
1010
Task<IEnumerable<PostCodeLookup>> FindPostCodes(string search);
11+
Task<IEnumerable<RegionLookup>> FindRegions(string search);
1112
Task<bool> PostCodesInitialised();
1213
Task<long> RefreshPostCodes();
1314
}

PostCodeSearch/Services/PostCodeService.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public async Task<IEnumerable<PostCodeLookup>> FindPostCodes(string search)
4444
Id = p.Id,
4545
Postcode = p.PostCode,
4646
Locality = p.Locality,
47+
State = p.State,
4748
Latitude = p.Lat,
4849
Longitude = p.Long,
4950
Region = p.Region,
@@ -55,15 +56,14 @@ public async Task<IEnumerable<PostCodeLookup>> FindPostCodes(string search)
5556
return Enumerable.Empty<PostCodeLookup>();
5657
}
5758

58-
5959
/// <inheritdoc/>
60-
public async Task<IEnumerable<PostCodeLookup>> FindByLGA(string search)
60+
public async Task<IEnumerable<PostCodeLookup>> FindByRegion(string search)
6161
{
6262
if (search?.Length > 2)
6363
{
6464
using (ScopeProvider.CreateScope(autoComplete: true))
6565
{
66-
var postcodes = await postCodeRepository.FindByLGA(search);
66+
var postcodes = await postCodeRepository.FindByRegion(search);
6767
return postcodes.Select(p => new PostCodeLookup
6868
{
6969
Id = p.Id,
@@ -80,6 +80,19 @@ public async Task<IEnumerable<PostCodeLookup>> FindByLGA(string search)
8080
return Enumerable.Empty<PostCodeLookup>();
8181
}
8282

83+
/// <inheritdoc/>
84+
public async Task<IEnumerable<RegionLookup>> FindRegions(string search)
85+
{
86+
if (search?.Length > 2)
87+
{
88+
using (ScopeProvider.CreateScope(autoComplete: true))
89+
{
90+
return await postCodeRepository.FindRegions(search);
91+
}
92+
}
93+
return Enumerable.Empty<RegionLookup>();
94+
}
95+
8396
public async Task<bool> PostCodesInitialised()
8497
{
8598
using (ScopeProvider.CreateScope(autoComplete: true))
@@ -122,6 +135,7 @@ await postCodeRepository.InsertBatch(batch.Select(p =>
122135
PostCode = p.PostCode,
123136
Locality = p.Locality,
124137
Region = p.LgaRegion,
138+
State = p.State,
125139
Electorate = p.Electorate,
126140
ElectorateRating = p.ElectorateRating,
127141
Lat = lat,

0 commit comments

Comments
 (0)