diff --git a/Template.Shared/Components/Pages/Calendar.razor b/Template.Shared/Components/Pages/Calendar.razor index fdd5ca2..f0204f3 100644 --- a/Template.Shared/Components/Pages/Calendar.razor +++ b/Template.Shared/Components/Pages/Calendar.razor @@ -174,10 +174,10 @@ // Cache per rendering private DayData[] _monthDaysData = Array.Empty(); - private DayData[] _weekDaysData = new DayData[7]; + private readonly DayData[] _weekDaysData = new DayData[7]; private string _headerTitle = string.Empty; - private Dictionary> _eventsCache = new(); - private Dictionary _categoriesCache = new(); + private readonly Dictionary> _eventsCache = new(); + private readonly Dictionary _categoriesCache = new(); private bool _isInitialized = false; // Stato UI @@ -325,7 +325,7 @@ private CategoryData[] GetFilteredCategoriesForDay(DateTime date) { if (!_categoriesCache.TryGetValue(date, out var categories)) - return Array.Empty(); + return []; if (Filter.ClearFilter) return categories; @@ -333,7 +333,7 @@ // Applica i filtri alle categorie var filteredActivities = GetFilteredActivitiesForDay(date); if (!filteredActivities.Any()) - return Array.Empty(); + return []; return filteredActivities .Select(x => x.Category) @@ -345,7 +345,7 @@ private List GetFilteredActivitiesForDay(DateTime date) { if (!_eventsCache.TryGetValue(date, out var activities)) - return new List(); + return []; if (Filter.ClearFilter) return activities; diff --git a/Template.Shared/Components/SingleElements/Modal/ActivityForm.razor b/Template.Shared/Components/SingleElements/Modal/ActivityForm.razor index 9d3a6a7..caca54b 100644 --- a/Template.Shared/Components/SingleElements/Modal/ActivityForm.razor +++ b/Template.Shared/Components/SingleElements/Modal/ActivityForm.razor @@ -1,5 +1,4 @@ @using System.Globalization -@using Microsoft.VisualBasic @using Template.Shared.Core.Dto @using Template.Shared.Components.Layout @using Template.Shared.Core.Entity @@ -12,22 +11,31 @@ - +
- +
- +
- + Commessa + + + @foreach (var com in Commesse) + { + @com.Descrizione + } +
@@ -35,7 +43,7 @@
Inizio - +
@@ -43,7 +51,7 @@
Fine - +
@@ -51,7 +59,7 @@
Avviso - +
@@ -95,15 +103,15 @@
- +
- + - + @code { [CascadingParameter] private IMudDialogInstance MudDialog { get; set; } @@ -116,9 +124,12 @@ private List ActivityResult { get; set; } = []; private List ActivityType { get; set; } = []; private List Users { get; set; } = []; + private List Commesse { get; set; } = []; + private List Clienti { get; set; } = []; + private List Pros { get; set; } = []; private bool IsNew => Id.IsNullOrEmpty(); - private bool IsView => !IsNew && !NetworkService.IsNetworkAvailable(); + private bool IsView => !NetworkService.IsNetworkAvailable(); private string? LabelSave { get; set; } @@ -160,7 +171,7 @@ var newActivity = response.Last(); await ManageData.InsertOrUpdate(newActivity); - + SuccessAnimation = true; StateHasChanged(); @@ -173,9 +184,66 @@ { Users = await ManageData.GetTable(); ActivityResult = await ManageData.GetTable(); + Clienti = await ManageData.GetTable(x => x.FlagStato.Equals("A")); + Pros = await ManageData.GetTable(); ActivityType = await ManageData.GetTable(x => x.FlagTipologia.Equals("A")); } + private async Task LoadCommesse() => + Commesse = await ManageData.GetTable(x => x.CodAnag != null && x.CodAnag.Equals(ActivityModel.CodAnag)); + + private async Task?> SearchCliente(string value, CancellationToken token) + { + if (string.IsNullOrEmpty(value)) + return null; + + var listToReturn = new List(); + + listToReturn.AddRange( + Clienti.Where(x => x.RagSoc.Contains(value, StringComparison.OrdinalIgnoreCase)).Select(x => x.RagSoc) + ); + + listToReturn.AddRange( + Pros.Where(x => x.RagSoc.Contains(value, StringComparison.OrdinalIgnoreCase)).Select(x => x.RagSoc) + ); + + return listToReturn; + } + + private async Task OnClienteChanged() + { + string? codAnag = null; + + var cliente = Clienti.LastOrDefault(x => ActivityModel.Cliente != null && x.RagSoc.Contains(ActivityModel.Cliente, StringComparison.OrdinalIgnoreCase)); + if (cliente is null) + { + var pros = Pros.LastOrDefault(x => ActivityModel.Cliente != null && x.RagSoc.Contains(ActivityModel.Cliente, StringComparison.OrdinalIgnoreCase)); + + if (pros is not null) + { + codAnag = pros.CodAnag; + } + } + else + { + codAnag = cliente.CodAnag; + } + + + if (codAnag is not null) + { + ActivityModel.CodAnag = codAnag; + await LoadCommesse(); + OnAfterChangeValue(); + } + } + + private async Task OnCommessaChanged() + { + ActivityModel.Commessa = (await ManageData.GetTable(x => x.CodJcom.Equals(ActivityModel.CodJcom))).Last().Descrizione; + OnAfterChangeValue(); + } + private void OnAfterChangeValue() { LabelSave = !OriginalModel.Equals(ActivityModel) ? "Aggiorna" : null; diff --git a/Template.Shared/Core/Entity/JtbComt.cs b/Template.Shared/Core/Entity/JtbComt.cs index 25f4104..0c8e28c 100644 --- a/Template.Shared/Core/Entity/JtbComt.cs +++ b/Template.Shared/Core/Entity/JtbComt.cs @@ -37,7 +37,7 @@ public class JtbComt public string Note { get; set; } [Column("cod_anag"), JsonPropertyName("codAnag")] - public string CodAnag { get; set; } + public string? CodAnag { get; set; } [Column("cod_divi"), JsonPropertyName("codDivi")] public string CodDivi { get; set; } = "EURO"; diff --git a/Template.Shared/wwwroot/css/bottomSheet.css b/Template.Shared/wwwroot/css/bottomSheet.css index e82d077..b01c3b2 100644 --- a/Template.Shared/wwwroot/css/bottomSheet.css +++ b/Template.Shared/wwwroot/css/bottomSheet.css @@ -15,7 +15,7 @@ .bottom-sheet-container { position: fixed; - bottom: -100%; + bottom: -200%; left: 0; right: 0; transition: bottom 0.3s ease;