diff --git a/salesbook.Maui/MauiProgram.cs b/salesbook.Maui/MauiProgram.cs index b3c22f1..2b3aa2a 100644 --- a/salesbook.Maui/MauiProgram.cs +++ b/salesbook.Maui/MauiProgram.cs @@ -8,6 +8,7 @@ using MudBlazor.Services; using MudExtensions.Services; using salesbook.Maui.Core.Services; using salesbook.Shared; +using salesbook.Shared.Core.Dto; using salesbook.Shared.Core.Helpers; using salesbook.Shared.Core.Interface; using salesbook.Shared.Core.Messages.Activity.Copy; @@ -72,6 +73,7 @@ namespace salesbook.Maui builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); + builder.Services.AddSingleton(); return builder.Build(); } diff --git a/salesbook.Shared/Components/Pages/Home.razor b/salesbook.Shared/Components/Pages/Home.razor index 98f480b..6e62825 100644 --- a/salesbook.Shared/Components/Pages/Home.razor +++ b/salesbook.Shared/Components/Pages/Home.razor @@ -1,22 +1,24 @@ @page "/" -@using salesbook.Shared.Core.Interface @attribute [Authorize] +@using salesbook.Shared.Core.Interface +@using salesbook.Shared.Components.Layout.Spinner @inject IFormFactor FormFactor @inject INetworkService NetworkService + + @code { - protected override Task OnInitializedAsync() + protected override async Task OnInitializedAsync() { var lastSyncDate = LocalStorage.Get("last-sync"); if (!FormFactor.IsWeb() && NetworkService.IsNetworkAvailable() && lastSyncDate.Equals(DateTime.MinValue)) { NavigationManager.NavigateTo("/sync"); - return base.OnInitializedAsync(); + return; } NavigationManager.NavigateTo("/Calendar"); - return base.OnInitializedAsync(); } } diff --git a/salesbook.Shared/Components/Pages/User.razor b/salesbook.Shared/Components/Pages/User.razor index 52a1f9d..41a1797 100644 --- a/salesbook.Shared/Components/Pages/User.razor +++ b/salesbook.Shared/Components/Pages/User.razor @@ -29,9 +29,12 @@ else
@Anag.RagSoc - @if (UserSession.User.KeyGroup is not null) + @if (Anag.Indirizzo != null) { @Anag.Indirizzo + } + @if (Anag is { Citta: not null, Cap: not null, Prov: not null }) + { @($"{Anag.Cap} - {Anag.Citta} ({Anag.Prov})") }
diff --git a/salesbook.Shared/Components/Pages/Users.razor b/salesbook.Shared/Components/Pages/Users.razor index 222fa7d..666fae8 100644 --- a/salesbook.Shared/Components/Pages/Users.razor +++ b/salesbook.Shared/Components/Pages/Users.razor @@ -10,6 +10,7 @@ @using salesbook.Shared.Core.Messages.Contact @inject IManageDataService ManageData @inject NewContactService NewContact +@inject FilterUserDTO Filter @@ -27,7 +28,7 @@ Tutti - Contatti + Clienti Prospect @@ -64,12 +65,12 @@ //Filtri private string? TextToFilter { get; set; } private bool OpenFilter { get; set; } - private FilterUserDTO Filter { get; set; } = new(); private string TypeUser { get; set; } = "all"; protected override void OnInitialized() { - NewContact.OnContactCreated += async activityId => await OnActivityCreated(activityId); + NewContact.OnContactCreated += async response => await OnUserCreated(response); + Console.WriteLine($"Filter HashCode: {Filter.GetHashCode()} - IsInitialized: {Filter.IsInitialized}"); } protected override async Task OnAfterRenderAsync(bool firstRender) @@ -85,10 +86,15 @@ IsLoading = true; StateHasChanged(); - var loggedUser = (await ManageData.GetTable(x => x.UserName.Equals(UserSession.User.Username))).Last(); + if (!Filter.IsInitialized) + { + var loggedUser = (await ManageData.GetTable(x => x.UserName.Equals(UserSession.User.Username))).Last(); - if (loggedUser.UserCode != null) - Filter.Agenti = [loggedUser.UserCode]; + if (loggedUser.UserCode != null) + Filter.Agenti = [loggedUser.UserCode]; + + Filter.IsInitialized = true; + } var users = await ManageData.GetContact(); @@ -105,7 +111,6 @@ GroupedUserList = []; string? lastHeader = null; - foreach (var user in sortedUsers) { var firstChar = char.ToUpper(user.RagSoc[0]); @@ -128,6 +133,7 @@ StateHasChanged(); } + private class UserDisplayItem { public required ContactDTO User { get; set; } @@ -158,10 +164,18 @@ } var matchesFilter = - (Filter.Prov.IsNullOrEmpty() || user.Prov.Equals(Filter.Prov, StringComparison.OrdinalIgnoreCase)) && - (Filter.Citta.IsNullOrEmpty() || user.Citta.Contains(Filter.Citta!, StringComparison.OrdinalIgnoreCase)) && - (Filter.Nazione.IsNullOrEmpty() || user.Nazione.Contains(Filter.Nazione!, StringComparison.OrdinalIgnoreCase)) && - (Filter.Indirizzo.IsNullOrEmpty() || user.Indirizzo.Contains(Filter.Indirizzo!, StringComparison.OrdinalIgnoreCase)) && + (Filter.Prov.IsNullOrEmpty() || + (!string.IsNullOrEmpty(user.Prov) && + user.Prov.Trim().Contains(Filter.Prov!.Trim(), StringComparison.OrdinalIgnoreCase))) && + (Filter.Citta.IsNullOrEmpty() || + (!string.IsNullOrEmpty(user.Citta) && + user.Citta.Trim().Contains(Filter.Citta!.Trim(), StringComparison.OrdinalIgnoreCase))) && + (Filter.Nazione.IsNullOrEmpty() || + (!string.IsNullOrEmpty(user.Nazione) && + user.Nazione.Trim().Contains(Filter.Nazione!.Trim(), StringComparison.OrdinalIgnoreCase))) && + (Filter.Indirizzo.IsNullOrEmpty() || + (!string.IsNullOrEmpty(user.Indirizzo) && + user.Indirizzo.Trim().Contains(Filter.Indirizzo!.Trim(), StringComparison.OrdinalIgnoreCase))) && (!Filter.ConAgente || user.CodVage is not null) && (!Filter.SenzaAgente || user.CodVage is null) && (Filter.Agenti.IsNullOrEmpty() || (user.CodVage != null && Filter.Agenti!.Contains(user.CodVage))); @@ -193,7 +207,7 @@ FilteredGroupedUserList = result; } - private async Task OnActivityCreated(CRMCreateContactResponseDTO response) + private async Task OnUserCreated(CRMCreateContactResponseDTO response) { IsLoading = true; diff --git a/salesbook.Shared/Components/SingleElements/BottomSheet/FilterUsers.razor b/salesbook.Shared/Components/SingleElements/BottomSheet/FilterUsers.razor index e9792f3..9fbce69 100644 --- a/salesbook.Shared/Components/SingleElements/BottomSheet/FilterUsers.razor +++ b/salesbook.Shared/Components/SingleElements/BottomSheet/FilterUsers.razor @@ -1,5 +1,4 @@ -@using salesbook.Shared.Components.Pages -@using salesbook.Shared.Core.Dto +@using salesbook.Shared.Core.Dto @using salesbook.Shared.Core.Entity @using salesbook.Shared.Core.Interface @inject IManageDataService manageData @@ -19,7 +18,7 @@
Con agente - +
@@ -27,7 +26,7 @@
Senza agente - +
@@ -89,7 +88,7 @@
- Pulisci + Pulisci Filtra
@@ -140,16 +139,19 @@ Filter.SenzaAgente = false; } - private void OnAfterChangeAgente() + private void ClearFilters() { - if (Filter.SenzaAgente) - { - Filter.ConAgente = false; - } - else if (Filter.ConAgente) - { - Filter.SenzaAgente = false; - } + Filter.ConAgente = false; + Filter.SenzaAgente = false; + Filter.Agenti = []; + Filter.Indirizzo = null; + Filter.Citta = null; + Filter.Nazione = null; + Filter.Prov = null; } + private void OnAfterChangeConAgente() => Filter.SenzaAgente = false; + + private void OnAfterChangeSenzaAgente() => Filter.ConAgente = false; + } \ No newline at end of file diff --git a/salesbook.Shared/Core/Dto/FilterUserDTO.cs b/salesbook.Shared/Core/Dto/FilterUserDTO.cs index e4a65b8..e95ca1e 100644 --- a/salesbook.Shared/Core/Dto/FilterUserDTO.cs +++ b/salesbook.Shared/Core/Dto/FilterUserDTO.cs @@ -10,4 +10,6 @@ public class FilterUserDTO public string? Citta { get; set; } public string? Nazione { get; set; } public string? Prov { get; set; } + + public bool IsInitialized { get; set; } } diff --git a/salesbook.Shared/Core/Services/IntegryApiService.cs b/salesbook.Shared/Core/Services/IntegryApiService.cs index dc898bd..f1b5489 100644 --- a/salesbook.Shared/Core/Services/IntegryApiService.cs +++ b/salesbook.Shared/Core/Services/IntegryApiService.cs @@ -4,7 +4,6 @@ using salesbook.Shared.Core.Dto; using salesbook.Shared.Core.Entity; using salesbook.Shared.Core.Interface; using System.Net.Http.Headers; -using System.Reflection.Metadata.Ecma335; namespace salesbook.Shared.Core.Services; diff --git a/salesbook.Shared/salesbook.Shared.csproj b/salesbook.Shared/salesbook.Shared.csproj index 39e5af9..b9d0f7f 100644 --- a/salesbook.Shared/salesbook.Shared.csproj +++ b/salesbook.Shared/salesbook.Shared.csproj @@ -26,6 +26,7 @@ + @@ -38,4 +39,10 @@ + + + ..\..\..\..\Program Files\dotnet\packs\Microsoft.Android.Ref.35\35.0.78\ref\net9.0\Mono.Android.dll + + + \ No newline at end of file