Prima parte di migliorie per la sincronizzazione dei dati

This commit is contained in:
2025-09-03 15:46:49 +02:00
parent 8be3fa9f9e
commit 374b99501e
32 changed files with 326 additions and 166 deletions

View File

@@ -1,5 +1,6 @@
@using CommunityToolkit.Mvvm.Messaging
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Core.Dto.Activity
@using salesbook.Shared.Core.Entity
@using salesbook.Shared.Core.Messages.Activity.Copy
@using salesbook.Shared.Core.Messages.Activity.New

View File

@@ -1,10 +1,10 @@
@page "/Calendar"
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Core.Interface
@using salesbook.Shared.Components.Layout
@using salesbook.Shared.Components.SingleElements
@using salesbook.Shared.Components.Layout.Spinner
@using salesbook.Shared.Components.SingleElements
@using salesbook.Shared.Components.SingleElements.BottomSheet
@using salesbook.Shared.Core.Dto.Activity
@using salesbook.Shared.Core.Interface
@using salesbook.Shared.Core.Messages.Activity.New
@inject IManageDataService ManageData
@inject IJSRuntime JS
@@ -471,9 +471,7 @@
var start = CurrentMonth;
var end = start.AddDays(DaysInMonth - 1);
var activities = await ManageData.GetActivity(x =>
(x.EffectiveDate == null && x.EstimatedDate >= start && x.EstimatedDate <= end) ||
(x.EffectiveDate >= start && x.EffectiveDate <= end));
var activities = await ManageData.GetActivity(new WhereCondActivity{Start = start, End = end});
MonthActivities = activities.OrderBy(x => x.EffectiveDate ?? x.EstimatedDate).ToList();
PrepareRenderingData();
@@ -541,7 +539,7 @@
await ManageData.DeleteActivity(activity);
var indexActivity = MonthActivities?.FindIndex(x => x.ActivityId.Equals(activity.ActivityId));
var indexActivity = MonthActivities?.FindIndex(x => x.ActivityId!.Equals(activity.ActivityId));
if (indexActivity != null)
{
@@ -558,7 +556,7 @@
{
IsLoading = true;
var activity = (await ManageData.GetActivity(x => x.ActivityId.Equals(activityId))).LastOrDefault();
var activity = (await ManageData.GetActivity(new WhereCondActivity {ActivityId = activityId}, true)).LastOrDefault();
if (activity == null)
{
@@ -583,7 +581,7 @@
private async Task OnActivityChanged(string activityId)
{
var newActivity = await ManageData.GetActivity(x => x.ActivityId.Equals(activityId));
var newActivity = await ManageData.GetActivity(new WhereCondActivity { ActivityId = activityId }, true);
var indexActivity = MonthActivities?.FindIndex(x => x.ActivityId.Equals(activityId));
if (indexActivity != null && !newActivity.IsNullOrEmpty())

View File

@@ -122,7 +122,7 @@
flex-direction: column;
-ms-overflow-style: none;
scrollbar-width: none;
padding-bottom: 70px;
padding-bottom: 16vh;
height: calc(100% - 130px);
}

View File

@@ -6,6 +6,7 @@
@using salesbook.Shared.Components.Layout.Spinner
@using salesbook.Shared.Components.SingleElements
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Core.Dto.Activity
@using salesbook.Shared.Core.Dto.JobProgress
@using salesbook.Shared.Core.Dto.PageState
@using salesbook.Shared.Core.Entity

View File

@@ -17,10 +17,6 @@
protected override void OnInitialized()
{
Elements["Attività"] = false;
Elements["Commesse"] = false;
Elements["Clienti"] = false;
Elements["Prospect"] = false;
Elements["Impostazioni"] = false;
}
@@ -36,9 +32,6 @@
}
await Task.WhenAll(
RunAndTrack(SetActivity),
RunAndTrack(SetClienti),
RunAndTrack(SetProspect),
RunAndTrack(SetCommesse),
RunAndTrack(SetSettings)
);
@@ -62,30 +55,6 @@
}
}
private async Task SetActivity()
{
await Task.Run(async () => { await syncDb.GetAndSaveActivity(DateFilter); });
Elements["Attività"] = true;
StateHasChanged();
}
private async Task SetClienti()
{
await Task.Run(async () => { await syncDb.GetAndSaveClienti(DateFilter); });
Elements["Clienti"] = true;
StateHasChanged();
}
private async Task SetProspect()
{
await Task.Run(async () => { await syncDb.GetAndSaveProspect(DateFilter); });
Elements["Prospect"] = true;
StateHasChanged();
}
private async Task SetCommesse()
{
await Task.Run(async () => { await syncDb.GetAndSaveCommesse(DateFilter); });

View File

@@ -6,6 +6,7 @@
@using salesbook.Shared.Components.SingleElements.BottomSheet
@using salesbook.Shared.Components.Layout.Spinner
@using salesbook.Shared.Components.SingleElements
@using salesbook.Shared.Core.Dto.Contact
@using salesbook.Shared.Core.Dto.PageState
@using salesbook.Shared.Core.Dto.Users
@using salesbook.Shared.Core.Entity
@@ -123,7 +124,7 @@
Filter.IsInitialized = true;
}
var users = await ManageData.GetContact();
var users = await ManageData.GetContact(new WhereCondContact {FlagStato = "A"});
var sortedUsers = users
.Where(u => !string.IsNullOrWhiteSpace(u.RagSoc))

View File

@@ -1,4 +1,5 @@
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Core.Dto.Activity
@using salesbook.Shared.Core.Entity
@using salesbook.Shared.Core.Helpers.Enum
@using salesbook.Shared.Core.Interface

View File

@@ -1,4 +1,5 @@
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Core.Dto.Activity
@using salesbook.Shared.Core.Entity
@using salesbook.Shared.Core.Interface
@inject IManageDataService ManageData

View File

@@ -1,4 +1,5 @@
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Core.Dto.Activity
@using salesbook.Shared.Core.Entity
@using salesbook.Shared.Core.Helpers.Enum
@inject IDialogService Dialog

View File

@@ -1,12 +1,14 @@
@using System.Globalization
@using System.Text.RegularExpressions
@using CommunityToolkit.Mvvm.Messaging
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Components.Layout
@using salesbook.Shared.Core.Entity
@using salesbook.Shared.Core.Interface
@using salesbook.Shared.Components.Layout.Overlay
@using salesbook.Shared.Components.SingleElements.BottomSheet
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Core.Dto.Activity
@using salesbook.Shared.Core.Dto.Contact
@using salesbook.Shared.Core.Entity
@using salesbook.Shared.Core.Interface
@using salesbook.Shared.Core.Messages.Activity.Copy
@inject IManageDataService ManageData
@inject INetworkService NetworkService
@@ -279,7 +281,7 @@
LabelSave = IsNew ? "Aggiungi" : null;
if (!Id.IsNullOrEmpty())
ActivityModel = (await ManageData.GetActivity(x => x.ActivityId.Equals(Id))).Last();
ActivityModel = (await ManageData.GetActivity(new WhereCondActivity { ActivityId = Id }, true)).Last();
if (ActivityCopied != null)
{
@@ -379,8 +381,8 @@
Users = await ManageData.GetTable<StbUser>();
ActivityResult = await ManageData.GetTable<StbActivityResult>();
Clienti = await ManageData.GetTable<AnagClie>(x => x.FlagStato.Equals("A"));
Pros = await ManageData.GetTable<PtbPros>();
Clienti = await ManageData.GetClienti(new WhereCondContact {FlagStato = "A"});
Pros = await ManageData.GetProspect();
ActivityType = await ManageData.GetTable<StbActivityType>(x => x.FlagTipologia.Equals("A"));
}

View File

@@ -4,6 +4,7 @@
@using salesbook.Shared.Components.Layout.Overlay
@using salesbook.Shared.Core.Entity
@using salesbook.Shared.Components.SingleElements.BottomSheet
@using salesbook.Shared.Core.Dto.Contact
@inject IManageDataService ManageData
@inject INetworkService NetworkService
@inject IIntegryApiService IntegryApiService
@@ -473,11 +474,11 @@
var pIva = ContactModel.PartIva.Trim();
var clie = (await ManageData.GetTable<AnagClie>(x => x.PartIva.Equals(pIva))).LastOrDefault();
var clie = (await ManageData.GetClienti(new WhereCondContact {PartIva = pIva})).LastOrDefault();
if (clie == null)
{
var pros = (await ManageData.GetTable<PtbPros>(x => x.PartIva.Equals(pIva))).LastOrDefault();
var pros = (await ManageData.GetProspect(new WhereCondContact {PartIva = pIva})).LastOrDefault();
if (pros == null)
{

View File

@@ -1,7 +1,7 @@
using salesbook.Shared.Core.Entity;
using salesbook.Shared.Core.Helpers.Enum;
namespace salesbook.Shared.Core.Dto;
namespace salesbook.Shared.Core.Dto.Activity;
public class ActivityDTO : StbActivity
{

View File

@@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace salesbook.Shared.Core.Dto.Activity;
public class CRMRetrieveActivityRequestDTO
{
[JsonPropertyName("dateFilter")]
public string? DateFilter { get; set; }
[JsonPropertyName("activityId")]
public string? ActivityId { get; set; }
[JsonPropertyName("codJcom")]
public string? CodJcom { get; set; }
[JsonPropertyName("startDate")]
public DateTime? StarDate { get; set; }
[JsonPropertyName("endDate")]
public DateTime? EndDate { get; set; }
}

View File

@@ -1,7 +1,7 @@
using salesbook.Shared.Core.Helpers;
using salesbook.Shared.Core.Helpers.Enum;
namespace salesbook.Shared.Core.Dto;
namespace salesbook.Shared.Core.Dto.Activity;
public class FilterActivityDTO
{

View File

@@ -0,0 +1,11 @@
using System.Text.Json.Serialization;
namespace salesbook.Shared.Core.Dto.Activity;
public class WhereCondActivity
{
public DateTime? Start { get; set; }
public DateTime? End { get; set; }
public string? ActivityId { get; set; }
}

View File

@@ -1,13 +0,0 @@
using System.Text.Json.Serialization;
using Java.Time;
namespace salesbook.Shared.Core.Dto;
public class CRMRetrieveActivityRequestDTO
{
[JsonPropertyName("dateFilter")]
public string? DateFilter { get; set; }
[JsonPropertyName("codJcom")]
public string? CodJcom { get; set; }
}

View File

@@ -0,0 +1,19 @@
using System.Text.Json.Serialization;
namespace salesbook.Shared.Core.Dto.Contact;
public class CRMAnagRequestDTO
{
[JsonPropertyName("filterDate")]
public DateTime? FilterDate { get; set; }
[JsonPropertyName("flagStato")]
public string? FlagStato { get; set; }
[JsonPropertyName("partitaIva")]
public string? PartIva { get; set; }
[JsonPropertyName("codAnag")]
public string? CodAnag { get; set; }
[JsonPropertyName("returnPersRif")]
public bool ReturnPersRif { get; set; }
}

View File

@@ -0,0 +1,17 @@
using System.Text.Json.Serialization;
namespace salesbook.Shared.Core.Dto.Contact;
public class CRMProspectRequestDTO
{
[JsonPropertyName("filterDate")]
public DateTime? FilterDate { get; set; }
[JsonPropertyName("partitaIva")]
public string? PartIva { get; set; }
[JsonPropertyName("codPpro")]
public string? CodPpro { get; set; }
[JsonPropertyName("returnPersRif")]
public bool ReturnPersRif { get; set; }
}

View File

@@ -0,0 +1,10 @@
namespace salesbook.Shared.Core.Dto.Contact;
public class WhereCondContact
{
public string? FlagStato { get; set; }
public string? PartIva { get; set; }
public string? CodAnag { get; set; }
public bool OnlyContact { get; set; }
}

View File

@@ -3,7 +3,7 @@ using salesbook.Shared.Core.Entity;
namespace salesbook.Shared.Core.Dto;
public class TaskSyncResponseDTO
public class UsersSyncResponseDTO
{
[JsonPropertyName("anagClie")]
public List<AnagClie>? AnagClie { get; set; }

View File

@@ -1,5 +1,6 @@
using AutoMapper;
using salesbook.Shared.Core.Dto;
using salesbook.Shared.Core.Dto.Activity;
using salesbook.Shared.Core.Entity;
namespace salesbook.Shared.Core.Helpers;

View File

@@ -1,6 +1,7 @@
using MudBlazor;
using salesbook.Shared.Components.SingleElements.Modal;
using salesbook.Shared.Core.Dto;
using salesbook.Shared.Core.Dto.Activity;
namespace salesbook.Shared.Core.Helpers;

View File

@@ -1,4 +1,6 @@
using salesbook.Shared.Core.Dto;
using salesbook.Shared.Core.Dto.Activity;
using salesbook.Shared.Core.Dto.Contact;
using salesbook.Shared.Core.Dto.JobProgress;
using salesbook.Shared.Core.Entity;
@@ -8,8 +10,8 @@ public interface IIntegryApiService
{
Task<List<StbActivity>?> RetrieveActivity(CRMRetrieveActivityRequestDTO activityRequest);
Task<List<JtbComt>?> RetrieveAllCommesse(string? dateFilter = null);
Task<TaskSyncResponseDTO> RetrieveAnagClie(string? dateFilter = null);
Task<TaskSyncResponseDTO> RetrieveProspect(string? dateFilter = null);
Task<UsersSyncResponseDTO> RetrieveAnagClie(CRMAnagRequestDTO request);
Task<UsersSyncResponseDTO> RetrieveProspect(CRMProspectRequestDTO request);
Task<SettingsResponseDTO> RetrieveSettings();
Task<List<CRMAttachedResponseDTO>?> RetrieveAttached(string codJcom);

View File

@@ -1,17 +1,22 @@
using System.Linq.Expressions;
using salesbook.Shared.Core.Dto;
using salesbook.Shared.Core.Dto;
using salesbook.Shared.Core.Dto.Activity;
using salesbook.Shared.Core.Dto.Contact;
using salesbook.Shared.Core.Entity;
using System.Linq.Expressions;
namespace salesbook.Shared.Core.Interface;
public interface IManageDataService
{
Task<List<T>> GetTable<T>(Expression<Func<T, bool>>? whereCond = null) where T : new();
Task<List<ActivityDTO>> GetActivity(Expression<Func<StbActivity, bool>>? whereCond = null);
Task<List<ContactDTO>> GetContact();
Task<List<AnagClie>> GetClienti(WhereCondContact? whereCond = null);
Task<List<PtbPros>> GetProspect(WhereCondContact? whereCond = null);
Task<List<ContactDTO>> GetContact(WhereCondContact whereCond);
Task<ContactDTO?> GetSpecificContact(string codAnag, bool IsContact);
Task<List<ActivityDTO>> GetActivity(WhereCondActivity whereCond, bool useLocalDb = false);
Task InsertOrUpdate<T>(T objectToSave);
Task InsertOrUpdate<T>(List<T> listToSave);

View File

@@ -2,9 +2,6 @@
public interface ISyncDbService
{
Task GetAndSaveActivity(string? dateFilter = null);
Task GetAndSaveCommesse(string? dateFilter = null);
Task GetAndSaveProspect(string? dateFilter = null);
Task GetAndSaveClienti(string? dateFilter = null);
Task GetAndSaveSettings(string? dateFilter = null);
}

View File

@@ -1,5 +1,5 @@
using CommunityToolkit.Mvvm.Messaging.Messages;
using salesbook.Shared.Core.Dto;
using salesbook.Shared.Core.Dto.Activity;
namespace salesbook.Shared.Core.Messages.Activity.Copy;

View File

@@ -1,5 +1,5 @@
using CommunityToolkit.Mvvm.Messaging;
using salesbook.Shared.Core.Dto;
using salesbook.Shared.Core.Dto.Activity;
namespace salesbook.Shared.Core.Messages.Activity.Copy;

View File

@@ -1,10 +1,12 @@
using IntegryApiClient.Core.Domain.Abstraction.Contracts.Account;
using IntegryApiClient.Core.Domain.RestClient.Contacts;
using salesbook.Shared.Core.Dto;
using salesbook.Shared.Core.Dto.Activity;
using salesbook.Shared.Core.Dto.JobProgress;
using salesbook.Shared.Core.Entity;
using salesbook.Shared.Core.Interface;
using System.Net.Http.Headers;
using salesbook.Shared.Core.Dto.Contact;
namespace salesbook.Shared.Core.Services;
@@ -26,29 +28,11 @@ public class IntegryApiService(IIntegryApiRestClient integryApiRestClient, IUser
return integryApiRestClient.AuthorizedGet<List<JtbComt>?>("crm/retrieveCommesse", queryParams);
}
public Task<TaskSyncResponseDTO> RetrieveAnagClie(string? dateFilter)
{
var queryParams = new Dictionary<string, object>();
public Task<UsersSyncResponseDTO> RetrieveAnagClie(CRMAnagRequestDTO request) =>
integryApiRestClient.AuthorizedPost<UsersSyncResponseDTO>("crm/retrieveClienti", request)!;
if (dateFilter != null)
{
queryParams.Add("dateFilter", dateFilter);
}
return integryApiRestClient.AuthorizedGet<TaskSyncResponseDTO>("crm/retrieveClienti", queryParams)!;
}
public Task<TaskSyncResponseDTO> RetrieveProspect(string? dateFilter)
{
var queryParams = new Dictionary<string, object>();
if (dateFilter != null)
{
queryParams.Add("dateFilter", dateFilter);
}
return integryApiRestClient.AuthorizedGet<TaskSyncResponseDTO>("crm/retrieveProspect", queryParams)!;
}
public Task<UsersSyncResponseDTO> RetrieveProspect(CRMProspectRequestDTO request) =>
integryApiRestClient.AuthorizedPost<UsersSyncResponseDTO>("crm/retrieveProspect", request)!;
public Task<SettingsResponseDTO> RetrieveSettings() =>
integryApiRestClient.AuthorizedGet<SettingsResponseDTO>("crm/retrieveSettings")!;