Sistemati filtri

This commit is contained in:
2025-07-31 15:24:45 +02:00
parent 068723f31f
commit 8dfb163cfa
8 changed files with 63 additions and 32 deletions

View File

@@ -10,6 +10,7 @@
@using salesbook.Shared.Core.Messages.Contact
@inject IManageDataService ManageData
@inject NewContactService NewContact
@inject FilterUserDTO Filter
<HeaderLayout Title="Contatti"/>
@@ -27,7 +28,7 @@
<MudChipSet Class="mt-2" T="string" @bind-SelectedValue="TypeUser" @bind-SelectedValue:after="FilterUsers" SelectionMode="SelectionMode.SingleSelection">
<MudChip Color="Color.Primary" Variant="Variant.Text" Value="@("all")">Tutti</MudChip>
<MudChip Color="Color.Primary" Variant="Variant.Text" Value="@("contact")">Contatti</MudChip>
<MudChip Color="Color.Primary" Variant="Variant.Text" Value="@("contact")">Clienti</MudChip>
<MudChip Color="Color.Primary" Variant="Variant.Text" Value="@("prospect")">Prospect</MudChip>
</MudChipSet>
</div>
@@ -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<StbUser>(x => x.UserName.Equals(UserSession.User.Username))).Last();
if (!Filter.IsInitialized)
{
var loggedUser = (await ManageData.GetTable<StbUser>(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;