SHA256
SomniaGuestLog - Address search/query using Nominatim - Initial implementation
Initial implementation for address search/query using external APIs (OSM Nominatim) & Added required classes for supporting more APIs in the future.
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
@page "/debug/addrSearch"
|
||||
|
||||
@using Somnia.GuestLog.Models.DTOs;
|
||||
@using Somnia.GuestLog.Services.AddressQuery;
|
||||
|
||||
@inject ILogger<AddressQuery> logger;
|
||||
@inject IAddressQueryFactory addressQueryFactory;
|
||||
@inject ISnackbar Snackbar
|
||||
|
||||
<PageTitle>DEBUG - Address Query</PageTitle>
|
||||
|
||||
<MudText Typo="Typo.h3" GutterBottom="true">Address Search</MudText>
|
||||
|
||||
<MudTextField @ref="txtSearch" @bind-Value="SearchText" Label="Search address" Required />
|
||||
|
||||
<MudButton Color="Color.Primary" Variant="Variant.Filled" @onclick="btnSearchAddress">Search</MudButton>
|
||||
|
||||
<MudPaper>
|
||||
@if (addressResults.Count == 0)
|
||||
{
|
||||
<MudText Typo="Typo.body1">No results!</MudText>
|
||||
}
|
||||
@foreach (AddressResultDTO result in addressResults)
|
||||
{
|
||||
<MudItem>
|
||||
<MudStack>
|
||||
<MudText>Address: @result.AddressRoad , @result.HouseNumber</MudText>
|
||||
<MudText>City: @result.AddressCity</MudText>
|
||||
<MudText>Province: @result.AddressProvince</MudText>
|
||||
<MudText>State: @result.AddressState</MudText>
|
||||
<MudText>Country: @result.AddressCountry</MudText>
|
||||
<MudText>ZipCode: @result.ZipCode</MudText>
|
||||
</MudStack>
|
||||
</MudItem>
|
||||
}
|
||||
</MudPaper>
|
||||
|
||||
@code {
|
||||
|
||||
public string SearchText { get; set; } = "";
|
||||
private List<AddressResultDTO> addressResults = [];
|
||||
|
||||
private MudTextField<string> txtSearch = null!;
|
||||
|
||||
private async Task btnSearchAddress()
|
||||
{
|
||||
if (SearchText.Length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var queryService = addressQueryFactory.GetService();
|
||||
|
||||
addressResults = await queryService.SearchAddressAsync(SearchText);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "SearchAddress returned an error!");
|
||||
Snackbar.Add($"Error searching address: {ex.Message}", Severity.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user