@using salesbook.Shared.Components.Layout.Spinner
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Components.Layout.Overlay
@using salesbook.Shared.Core.Interface.IntegryApi
@inject IIntegryApiService IntegryApiService
Cerca indirizzo
@if (Loading)
{
}
else
{
if (Addresses != null)
{
foreach (var address in Addresses)
{
OnSelectAddress(address.PlaceId)">@address.Description
}
}
else
{
}
}
@code {
[Parameter] public string Region { get; set; }
[Parameter] public IndirizzoDTO Indirizzo { get; set; }
[Parameter] public EventCallback IndirizzoChanged { get; set; }
[Parameter] public bool IsSheetVisible { get; set; }
[Parameter] public EventCallback IsSheetVisibleChanged { get; set; }
private bool Loading { get; set; }
private string? Address { get; set; }
private List? Addresses { get; set; }
private string? Uuid { get; set; }
//Overlay for save
private bool VisibleOverlay { get; set; }
private bool SuccessAnimation { get; set; }
protected override async Task OnParametersSetAsync()
{
if (IsSheetVisible)
{
Uuid = Guid.NewGuid().ToString();
Address = null;
Addresses = null;
}
}
private void CloseBottomSheet()
{
IsSheetVisible = false;
IsSheetVisibleChanged.InvokeAsync(IsSheetVisible);
}
private async Task SearchAllAddress()
{
if (Address == null || Uuid == null) return;
Loading = true;
StateHasChanged();
Addresses = await IntegryApiService.AutoCompleteAddress(Address, Region, Uuid);
Loading = false;
StateHasChanged();
}
private async Task OnSelectAddress(string placeId)
{
CloseBottomSheet();
VisibleOverlay = true;
StateHasChanged();
try
{
Indirizzo = await IntegryApiService.PlaceDetails(placeId, Uuid);
await IndirizzoChanged.InvokeAsync(Indirizzo);
}
catch (Exception e)
{
Snackbar.Configuration.PositionClass = Defaults.Classes.Position.TopCenter;
Snackbar.Clear();
Snackbar.Add("Impossibile selezionare questo indirizzo", Severity.Error);
}
VisibleOverlay = false;
StateHasChanged();
}
}