From 93b1a94c88a711cff64d1031a39e5d3ce7b4979d Mon Sep 17 00:00:00 2001 From: MarcoE Date: Mon, 8 Sep 2025 12:19:17 +0200 Subject: [PATCH] =?UTF-8?q?Filtrati=20tipi=20attivit=C3=A0=20per=20utente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/Services/LocalDbService.cs | 3 + salesbook.Maui/Core/Services/SyncDbService.cs | 3 + .../Components/Layout/MainLayout.razor | 4 +- .../Components/Pages/SyncPage.razor | 1 + .../SingleElements/Modal/ActivityForm.razor | 20 ++++++- .../Core/Dto/SettingsResponseDTO.cs | 3 + .../Core/Entity/SrlActivityTypeUser.cs | 56 +++++++++++++++++++ 7 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 salesbook.Shared/Core/Entity/SrlActivityTypeUser.cs diff --git a/salesbook.Maui/Core/Services/LocalDbService.cs b/salesbook.Maui/Core/Services/LocalDbService.cs index abcfe8f..e8b22ec 100644 --- a/salesbook.Maui/Core/Services/LocalDbService.cs +++ b/salesbook.Maui/Core/Services/LocalDbService.cs @@ -22,6 +22,7 @@ public class LocalDbService _connection.CreateTableAsync(); _connection.CreateTableAsync(); _connection.CreateTableAsync(); + _connection.CreateTableAsync(); _connection.CreateTableAsync(); _connection.CreateTableAsync(); _connection.CreateTableAsync(); @@ -33,12 +34,14 @@ public class LocalDbService { await _connection.ExecuteAsync("DROP TABLE IF EXISTS stb_activity_result;"); await _connection.ExecuteAsync("DROP TABLE IF EXISTS stb_activity_type;"); + await _connection.ExecuteAsync("DROP TABLE IF EXISTS srl_activity_type_user;"); await _connection.ExecuteAsync("DROP TABLE IF EXISTS stb_user;"); await _connection.ExecuteAsync("DROP TABLE IF EXISTS vtb_tipi;"); await _connection.ExecuteAsync("DROP TABLE IF EXISTS nazioni;"); await _connection.CreateTableAsync(); await _connection.CreateTableAsync(); + await _connection.CreateTableAsync(); await _connection.CreateTableAsync(); await _connection.CreateTableAsync(); await _connection.CreateTableAsync(); diff --git a/salesbook.Maui/Core/Services/SyncDbService.cs b/salesbook.Maui/Core/Services/SyncDbService.cs index f6f9be2..d5c55bb 100644 --- a/salesbook.Maui/Core/Services/SyncDbService.cs +++ b/salesbook.Maui/Core/Services/SyncDbService.cs @@ -29,6 +29,9 @@ public class SyncDbService(IIntegryApiService integryApiService, LocalDbService if (!settingsResponse.ActivityTypes.IsNullOrEmpty()) await localDb.InsertAll(settingsResponse.ActivityTypes!); + if (!settingsResponse.ActivityTypeUsers.IsNullOrEmpty()) + await localDb.InsertAll(settingsResponse.ActivityTypeUsers!); + if (!settingsResponse.StbUsers.IsNullOrEmpty()) await localDb.InsertAll(settingsResponse.StbUsers!); diff --git a/salesbook.Shared/Components/Layout/MainLayout.razor b/salesbook.Shared/Components/Layout/MainLayout.razor index eb1300e..dc8d62b 100644 --- a/salesbook.Shared/Components/Layout/MainLayout.razor +++ b/salesbook.Shared/Components/Layout/MainLayout.razor @@ -55,7 +55,7 @@ private bool _showWarning; private DateTime _lastApiCheck = DateTime.MinValue; - private int _delaySeconds = 3; + private const int DelaySeconds = 60; private CancellationTokenSource? _cts; @@ -166,7 +166,7 @@ var isNetworkAvailable = NetworkService.IsNetworkAvailable(); var servicesDown = ServicesIsDown; - if (isNetworkAvailable && (DateTime.UtcNow - _lastApiCheck).TotalSeconds >= _delaySeconds) + if (isNetworkAvailable && (DateTime.UtcNow - _lastApiCheck).TotalSeconds >= DelaySeconds) { servicesDown = !await IntegryApiService.SystemOk(); _lastApiCheck = DateTime.UtcNow; diff --git a/salesbook.Shared/Components/Pages/SyncPage.razor b/salesbook.Shared/Components/Pages/SyncPage.razor index 77b8cf4..1597d9f 100644 --- a/salesbook.Shared/Components/Pages/SyncPage.razor +++ b/salesbook.Shared/Components/Pages/SyncPage.razor @@ -17,6 +17,7 @@ protected override void OnInitialized() { + Elements["Commesse"] = false; Elements["Impostazioni"] = false; } diff --git a/salesbook.Shared/Components/SingleElements/Modal/ActivityForm.razor b/salesbook.Shared/Components/SingleElements/Modal/ActivityForm.razor index b180839..352cdc7 100644 --- a/salesbook.Shared/Components/SingleElements/Modal/ActivityForm.razor +++ b/salesbook.Shared/Components/SingleElements/Modal/ActivityForm.razor @@ -243,7 +243,7 @@ private ActivityDTO ActivityModel { get; set; } = new(); private List ActivityResult { get; set; } = []; - private List ActivityType { get; set; } = []; + private List ActivityType { get; set; } = []; private List Users { get; set; } = []; private List Commesse { get; set; } = []; private List Clienti { get; set; } = []; @@ -297,6 +297,8 @@ ActivityModel.UserName = UserSession.User.Username; } + await LoadActivityType(); + OriginalModel = ActivityModel.Clone(); } @@ -383,7 +385,15 @@ ActivityResult = await ManageData.GetTable(); Clienti = await ManageData.GetClienti(new WhereCondContact {FlagStato = "A"}); Pros = await ManageData.GetProspect(); - ActivityType = await ManageData.GetTable(x => x.FlagTipologia.Equals("A")); + } + + private async Task LoadActivityType() + { + if (ActivityModel.UserName is null) ActivityType = []; + + ActivityType = await ManageData.GetTable(x => + x.UserName != null && x.UserName.Equals(ActivityModel.UserName) + ); } private async Task LoadCommesse() => @@ -430,6 +440,12 @@ OnAfterChangeValue(); } + private async Task OnUserChanged() + { + await LoadActivityType(); + OnAfterChangeValue(); + } + private void OnAfterChangeValue() { if (!IsNew) diff --git a/salesbook.Shared/Core/Dto/SettingsResponseDTO.cs b/salesbook.Shared/Core/Dto/SettingsResponseDTO.cs index 0e8a49c..7680c3f 100644 --- a/salesbook.Shared/Core/Dto/SettingsResponseDTO.cs +++ b/salesbook.Shared/Core/Dto/SettingsResponseDTO.cs @@ -8,6 +8,9 @@ public class SettingsResponseDTO [JsonPropertyName("activityTypes")] public List? ActivityTypes { get; set; } + [JsonPropertyName("activityTypeUsers")] + public List? ActivityTypeUsers { get; set; } + [JsonPropertyName("activityResults")] public List? ActivityResults { get; set; } diff --git a/salesbook.Shared/Core/Entity/SrlActivityTypeUser.cs b/salesbook.Shared/Core/Entity/SrlActivityTypeUser.cs new file mode 100644 index 0000000..c39fb39 --- /dev/null +++ b/salesbook.Shared/Core/Entity/SrlActivityTypeUser.cs @@ -0,0 +1,56 @@ +using SQLite; +using System.Text.Json.Serialization; + +namespace salesbook.Shared.Core.Entity; + +[Table("srl_activity_type_user")] +public class SrlActivityTypeUser +{ + [PrimaryKey, Column("composite_key")] + public string CompositeKey { get; set; } + + private string? _activityTypeId; + + [Column("activity_type_id"), JsonPropertyName("activityTypeId"), Indexed(Name = "ActivityTypePK", Order = 1, Unique = true)] + public string? ActivityTypeId + { + get => _activityTypeId; + set + { + _activityTypeId = value; + if (_activityTypeId != null && _flagTipologia != null && _userName != null) + UpdateCompositeKey(); + } + } + + private string? _flagTipologia; + + [Column("flag_tipologia"), JsonPropertyName("flagTipologia"), Indexed(Name = "ActivityTypePK", Order = 2, Unique = true)] + public string? FlagTipologia + { + get => _flagTipologia; + set + { + _flagTipologia = value; + if (_activityTypeId != null && _flagTipologia != null && _userName != null) + UpdateCompositeKey(); + } + } + + private string? _userName; + + [Column("user_name"), JsonPropertyName("userName"), Indexed(Name = "ActivityTypePK", Order = 3, Unique = true)] + public string? UserName + { + get => _userName; + set + { + _userName = value; + if (_activityTypeId != null && _flagTipologia != null && _userName != null) + UpdateCompositeKey(); + } + } + + private void UpdateCompositeKey() => + CompositeKey = $"{ActivityTypeId}::{FlagTipologia}::{UserName}"; +} \ No newline at end of file