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,21 +1,133 @@
using AutoMapper; using AutoMapper;
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 salesbook.Shared.Core.Entity;
using salesbook.Shared.Core.Helpers.Enum; using salesbook.Shared.Core.Helpers.Enum;
using salesbook.Shared.Core.Interface; using salesbook.Shared.Core.Interface;
using Sentry.Protocol;
using System.Linq.Expressions;
namespace salesbook.Maui.Core.Services; namespace salesbook.Maui.Core.Services;
public class ManageDataService(LocalDbService localDb, IMapper mapper) : IManageDataService public class ManageDataService(
LocalDbService localDb,
IMapper mapper,
IIntegryApiService integryApiService,
INetworkService networkService
) : IManageDataService
{ {
public Task<List<T>> GetTable<T>(Expression<Func<T, bool>>? whereCond = null) where T : new() => public Task<List<T>> GetTable<T>(Expression<Func<T, bool>>? whereCond = null) where T : new() =>
localDb.Get(whereCond); localDb.Get(whereCond);
public async Task<List<ContactDTO>> GetContact() public async Task<List<AnagClie>> GetClienti(WhereCondContact? whereCond)
{ {
var contactList = await localDb.Get<AnagClie>(x => x.FlagStato.Equals("A")); List<AnagClie> clienti = [];
var prospectList = await localDb.Get<PtbPros>(); whereCond ??= new WhereCondContact();
whereCond.OnlyContact = true;
if (networkService.IsNetworkAvailable())
{
var response = await integryApiService.RetrieveAnagClie(
new CRMAnagRequestDTO
{
CodAnag = whereCond.CodAnag,
FlagStato = whereCond.FlagStato,
PartIva = whereCond.PartIva,
ReturnPersRif = !whereCond.OnlyContact
}
);
_ = UpdateDbUsers(response);
clienti = response.AnagClie ?? [];
}
else
{
clienti = await localDb.Get<AnagClie>(x =>
(whereCond.FlagStato != null && x.FlagStato.Equals(whereCond.FlagStato)) ||
(whereCond.PartIva != null && x.PartIva.Equals(whereCond.PartIva)) ||
(whereCond.PartIva == null && whereCond.FlagStato == null)
);
}
return clienti;
}
public async Task<List<PtbPros>> GetProspect(WhereCondContact? whereCond)
{
List<PtbPros> prospect = [];
whereCond ??= new WhereCondContact();
whereCond.OnlyContact = true;
if (networkService.IsNetworkAvailable())
{
var response = await integryApiService.RetrieveProspect(
new CRMProspectRequestDTO
{
CodPpro = whereCond.CodAnag,
PartIva = whereCond.PartIva,
ReturnPersRif = !whereCond.OnlyContact
}
);
_ = UpdateDbUsers(response);
prospect = response.PtbPros ?? [];
}
else
{
prospect = await localDb.Get<PtbPros>(x =>
(whereCond.PartIva != null && x.PartIva.Equals(whereCond.PartIva)) ||
(whereCond.PartIva == null)
);
}
return prospect;
}
public async Task<List<ContactDTO>> GetContact(WhereCondContact? whereCond)
{
List<AnagClie>? contactList;
List<PtbPros>? prospectList;
whereCond ??= new WhereCondContact();
if (networkService.IsNetworkAvailable())
{
var clienti = await integryApiService.RetrieveAnagClie(
new CRMAnagRequestDTO
{
CodAnag = whereCond.CodAnag,
FlagStato = whereCond.FlagStato,
PartIva = whereCond.PartIva,
ReturnPersRif = !whereCond.OnlyContact
}
);
_ = UpdateDbUsers(clienti);
var prospect = await integryApiService.RetrieveProspect(
new CRMProspectRequestDTO
{
CodPpro = whereCond.CodAnag,
PartIva = whereCond.PartIva,
ReturnPersRif = !whereCond.OnlyContact
}
);
_ = UpdateDbUsers(prospect);
contactList = clienti.AnagClie;
prospectList = prospect.PtbPros;
}
else
{
contactList = await localDb.Get<AnagClie>(x =>
(whereCond.FlagStato != null && x.FlagStato.Equals(whereCond.FlagStato)) ||
(whereCond.PartIva != null && x.PartIva.Equals(whereCond.PartIva)) ||
(whereCond.PartIva == null && whereCond.FlagStato == null)
);
prospectList = await localDb.Get<PtbPros>(x =>
(whereCond.PartIva != null && x.PartIva.Equals(whereCond.PartIva)) ||
(whereCond.PartIva == null)
);
}
// Mappa i contatti // Mappa i contatti
var contactMapper = mapper.Map<List<ContactDTO>>(contactList); var contactMapper = mapper.Map<List<ContactDTO>>(contactList);
@@ -46,9 +158,35 @@ public class ManageDataService(LocalDbService localDb, IMapper mapper) : IManage
} }
} }
public async Task<List<ActivityDTO>> GetActivity(Expression<Func<StbActivity, bool>>? whereCond = null) public async Task<List<ActivityDTO>> GetActivity(WhereCondActivity whereCond, bool useLocalDb)
{ {
var activities = await localDb.Get(whereCond); List<StbActivity>? activities;
if (networkService.IsNetworkAvailable() && !useLocalDb)
{
activities = await integryApiService.RetrieveActivity(
new CRMRetrieveActivityRequestDTO
{
StarDate = whereCond.Start,
EndDate = whereCond.End,
ActivityId = whereCond.ActivityId
}
);
_ = UpdateDb(activities);
}
else
{
activities = await localDb.Get<StbActivity>(x =>
(whereCond.ActivityId != null && x.ActivityId != null && whereCond.ActivityId.Equals(x.ActivityId)) ||
(whereCond.Start != null && whereCond.End != null && x.EffectiveDate == null &&
x.EstimatedDate >= whereCond.Start && x.EstimatedDate <= whereCond.End) ||
(x.EffectiveDate >= whereCond.Start && x.EffectiveDate <= whereCond.End) ||
(whereCond.ActivityId == null && (whereCond.Start == null || whereCond.End == null))
);
}
if (activities == null) return [];
var codJcomList = activities var codJcomList = activities
.Select(x => x.CodJcom) .Select(x => x.CodJcom)
@@ -103,7 +241,37 @@ public class ManageDataService(LocalDbService localDb, IMapper mapper) : IManage
return returnDto; return returnDto;
} }
public Task InsertOrUpdate<T>(List<T> listToSave) => private Task UpdateDbUsers(UsersSyncResponseDTO response)
{
return Task.Run(async () =>
{
if (response.AnagClie != null)
{
await localDb.InsertOrUpdate(response.AnagClie);
if (response.VtbDest != null) await localDb.InsertOrUpdate(response.VtbDest);
if (response.VtbCliePersRif != null) await localDb.InsertOrUpdate(response.VtbCliePersRif);
}
if (response.PtbPros != null)
{
await localDb.InsertOrUpdate(response.PtbPros);
if (response.PtbProsRif != null) await localDb.InsertOrUpdate(response.PtbProsRif);
}
});
}
private Task UpdateDb<T>(List<T>? entityList)
{
return Task.Run(() =>
{
if (entityList == null) return;
_ = localDb.InsertOrUpdate(entityList);
});
}
public Task InsertOrUpdate<T>(List<T> listToSave) =>
localDb.InsertOrUpdate(listToSave); localDb.InsertOrUpdate(listToSave);
public Task InsertOrUpdate<T>(T objectToSave) => public Task InsertOrUpdate<T>(T objectToSave) =>

View File

@@ -1,22 +1,10 @@
using salesbook.Shared.Core.Dto; using salesbook.Shared.Core.Helpers;
using salesbook.Shared.Core.Helpers;
using salesbook.Shared.Core.Interface; using salesbook.Shared.Core.Interface;
namespace salesbook.Maui.Core.Services; namespace salesbook.Maui.Core.Services;
public class SyncDbService(IIntegryApiService integryApiService, LocalDbService localDb) : ISyncDbService public class SyncDbService(IIntegryApiService integryApiService, LocalDbService localDb) : ISyncDbService
{ {
public async Task GetAndSaveActivity(string? dateFilter)
{
var allActivity = await integryApiService.RetrieveActivity(new CRMRetrieveActivityRequestDTO{DateFilter = dateFilter});
if (!allActivity.IsNullOrEmpty())
if (dateFilter is null)
await localDb.InsertAll(allActivity!);
else
await localDb.InsertOrUpdate(allActivity!);
}
public async Task GetAndSaveCommesse(string? dateFilter) public async Task GetAndSaveCommesse(string? dateFilter)
{ {
var allCommesse = await integryApiService.RetrieveAllCommesse(dateFilter); var allCommesse = await integryApiService.RetrieveAllCommesse(dateFilter);
@@ -28,46 +16,6 @@ public class SyncDbService(IIntegryApiService integryApiService, LocalDbService
await localDb.InsertOrUpdate(allCommesse!); await localDb.InsertOrUpdate(allCommesse!);
} }
public async Task GetAndSaveProspect(string? dateFilter)
{
var taskSyncResponseDto = await integryApiService.RetrieveProspect(dateFilter);
if (!taskSyncResponseDto.PtbPros.IsNullOrEmpty())
if (dateFilter is null)
await localDb.InsertAll(taskSyncResponseDto.PtbPros!);
else
await localDb.InsertOrUpdate(taskSyncResponseDto.PtbPros!);
if (!taskSyncResponseDto.PtbProsRif.IsNullOrEmpty())
if (dateFilter is null)
await localDb.InsertAll(taskSyncResponseDto.PtbProsRif!);
else
await localDb.InsertOrUpdate(taskSyncResponseDto.PtbProsRif!);
}
public async Task GetAndSaveClienti(string? dateFilter)
{
var taskSyncResponseDto = await integryApiService.RetrieveAnagClie(dateFilter);
if (!taskSyncResponseDto.AnagClie.IsNullOrEmpty())
if (dateFilter is null)
await localDb.InsertAll(taskSyncResponseDto.AnagClie!);
else
await localDb.InsertOrUpdate(taskSyncResponseDto.AnagClie!);
if (!taskSyncResponseDto.VtbDest.IsNullOrEmpty())
if (dateFilter is null)
await localDb.InsertAll(taskSyncResponseDto.VtbDest!);
else
await localDb.InsertOrUpdate(taskSyncResponseDto.VtbDest!);
if (!taskSyncResponseDto.VtbCliePersRif.IsNullOrEmpty())
if (dateFilter is null)
await localDb.InsertAll(taskSyncResponseDto.VtbCliePersRif!);
else
await localDb.InsertOrUpdate(taskSyncResponseDto.VtbCliePersRif!);
}
public async Task GetAndSaveSettings(string? dateFilter) public async Task GetAndSaveSettings(string? dateFilter)
{ {
if (dateFilter is not null) if (dateFilter is not null)

View File

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

View File

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

View File

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

View File

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

View File

@@ -17,10 +17,6 @@
protected override void OnInitialized() protected override void OnInitialized()
{ {
Elements["Attività"] = false;
Elements["Commesse"] = false;
Elements["Clienti"] = false;
Elements["Prospect"] = false;
Elements["Impostazioni"] = false; Elements["Impostazioni"] = false;
} }
@@ -36,9 +32,6 @@
} }
await Task.WhenAll( await Task.WhenAll(
RunAndTrack(SetActivity),
RunAndTrack(SetClienti),
RunAndTrack(SetProspect),
RunAndTrack(SetCommesse), RunAndTrack(SetCommesse),
RunAndTrack(SetSettings) 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() private async Task SetCommesse()
{ {
await Task.Run(async () => { await syncDb.GetAndSaveCommesse(DateFilter); }); await Task.Run(async () => { await syncDb.GetAndSaveCommesse(DateFilter); });

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,12 +1,14 @@
@using System.Globalization @using System.Globalization
@using System.Text.RegularExpressions @using System.Text.RegularExpressions
@using CommunityToolkit.Mvvm.Messaging @using CommunityToolkit.Mvvm.Messaging
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Components.Layout @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.Layout.Overlay
@using salesbook.Shared.Components.SingleElements.BottomSheet @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 @using salesbook.Shared.Core.Messages.Activity.Copy
@inject IManageDataService ManageData @inject IManageDataService ManageData
@inject INetworkService NetworkService @inject INetworkService NetworkService
@@ -279,7 +281,7 @@
LabelSave = IsNew ? "Aggiungi" : null; LabelSave = IsNew ? "Aggiungi" : null;
if (!Id.IsNullOrEmpty()) 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) if (ActivityCopied != null)
{ {
@@ -379,8 +381,8 @@
Users = await ManageData.GetTable<StbUser>(); Users = await ManageData.GetTable<StbUser>();
ActivityResult = await ManageData.GetTable<StbActivityResult>(); ActivityResult = await ManageData.GetTable<StbActivityResult>();
Clienti = await ManageData.GetTable<AnagClie>(x => x.FlagStato.Equals("A")); Clienti = await ManageData.GetClienti(new WhereCondContact {FlagStato = "A"});
Pros = await ManageData.GetTable<PtbPros>(); Pros = await ManageData.GetProspect();
ActivityType = await ManageData.GetTable<StbActivityType>(x => x.FlagTipologia.Equals("A")); 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.Components.Layout.Overlay
@using salesbook.Shared.Core.Entity @using salesbook.Shared.Core.Entity
@using salesbook.Shared.Components.SingleElements.BottomSheet @using salesbook.Shared.Components.SingleElements.BottomSheet
@using salesbook.Shared.Core.Dto.Contact
@inject IManageDataService ManageData @inject IManageDataService ManageData
@inject INetworkService NetworkService @inject INetworkService NetworkService
@inject IIntegryApiService IntegryApiService @inject IIntegryApiService IntegryApiService
@@ -473,11 +474,11 @@
var pIva = ContactModel.PartIva.Trim(); 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) 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) if (pros == null)
{ {

View File

@@ -1,7 +1,7 @@
using salesbook.Shared.Core.Entity; using salesbook.Shared.Core.Entity;
using salesbook.Shared.Core.Helpers.Enum; using salesbook.Shared.Core.Helpers.Enum;
namespace salesbook.Shared.Core.Dto; namespace salesbook.Shared.Core.Dto.Activity;
public class ActivityDTO : StbActivity 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;
using salesbook.Shared.Core.Helpers.Enum; using salesbook.Shared.Core.Helpers.Enum;
namespace salesbook.Shared.Core.Dto; namespace salesbook.Shared.Core.Dto.Activity;
public class FilterActivityDTO 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; namespace salesbook.Shared.Core.Dto;
public class TaskSyncResponseDTO public class UsersSyncResponseDTO
{ {
[JsonPropertyName("anagClie")] [JsonPropertyName("anagClie")]
public List<AnagClie>? AnagClie { get; set; } public List<AnagClie>? AnagClie { get; set; }

View File

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

View File

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

View File

@@ -1,4 +1,6 @@
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.Dto.JobProgress; using salesbook.Shared.Core.Dto.JobProgress;
using salesbook.Shared.Core.Entity; using salesbook.Shared.Core.Entity;
@@ -8,8 +10,8 @@ public interface IIntegryApiService
{ {
Task<List<StbActivity>?> RetrieveActivity(CRMRetrieveActivityRequestDTO activityRequest); Task<List<StbActivity>?> RetrieveActivity(CRMRetrieveActivityRequestDTO activityRequest);
Task<List<JtbComt>?> RetrieveAllCommesse(string? dateFilter = null); Task<List<JtbComt>?> RetrieveAllCommesse(string? dateFilter = null);
Task<TaskSyncResponseDTO> RetrieveAnagClie(string? dateFilter = null); Task<UsersSyncResponseDTO> RetrieveAnagClie(CRMAnagRequestDTO request);
Task<TaskSyncResponseDTO> RetrieveProspect(string? dateFilter = null); Task<UsersSyncResponseDTO> RetrieveProspect(CRMProspectRequestDTO request);
Task<SettingsResponseDTO> RetrieveSettings(); Task<SettingsResponseDTO> RetrieveSettings();
Task<List<CRMAttachedResponseDTO>?> RetrieveAttached(string codJcom); 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 salesbook.Shared.Core.Entity;
using System.Linq.Expressions;
namespace salesbook.Shared.Core.Interface; namespace salesbook.Shared.Core.Interface;
public interface IManageDataService public interface IManageDataService
{ {
Task<List<T>> GetTable<T>(Expression<Func<T, bool>>? whereCond = null) where T : new(); 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<AnagClie>> GetClienti(WhereCondContact? whereCond = null);
Task<List<ContactDTO>> GetContact(); Task<List<PtbPros>> GetProspect(WhereCondContact? whereCond = null);
Task<List<ContactDTO>> GetContact(WhereCondContact whereCond);
Task<ContactDTO?> GetSpecificContact(string codAnag, bool IsContact); Task<ContactDTO?> GetSpecificContact(string codAnag, bool IsContact);
Task<List<ActivityDTO>> GetActivity(WhereCondActivity whereCond, bool useLocalDb = false);
Task InsertOrUpdate<T>(T objectToSave); Task InsertOrUpdate<T>(T objectToSave);
Task InsertOrUpdate<T>(List<T> listToSave); Task InsertOrUpdate<T>(List<T> listToSave);

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,7 @@
using System.Linq.Expressions; 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 salesbook.Shared.Core.Entity;
using salesbook.Shared.Core.Interface; using salesbook.Shared.Core.Interface;
@@ -12,17 +14,27 @@ public class ManageDataService : IManageDataService
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<List<ActivityDTO>> GetActivity(Expression<Func<StbActivity, bool>>? whereCond = null) public Task<List<AnagClie>> GetClienti(WhereCondContact? whereCond)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<List<ContactDTO>> GetContact() public Task<List<PtbPros>> GetProspect(WhereCondContact? whereCond)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<ContactDTO> GetSpecificContact(string codAnag, bool IsContact) public Task<List<ContactDTO>> GetContact(WhereCondContact whereCond)
{
throw new NotImplementedException();
}
public Task<ContactDTO?> GetSpecificContact(string codAnag, bool IsContact)
{
throw new NotImplementedException();
}
public Task<List<ActivityDTO>> GetActivity(WhereCondActivity whereCond, bool useLocalDb = false)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

View File

@@ -1,10 +1,11 @@
using salesbook.Shared.Core.Interface; using salesbook.Shared.Core.Entity;
using salesbook.Shared.Core.Interface;
namespace salesbook.Web.Core.Services; namespace salesbook.Web.Core.Services;
public class SyncDbService : ISyncDbService public class SyncDbService : ISyncDbService
{ {
public Task GetAndSaveActivity(string? dateFilter = null) public Task GetAndSaveActivity(List<StbActivity>? allActivity)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }