diff --git a/salesbook.Maui/Core/Services/ManageDataService.cs b/salesbook.Maui/Core/Services/ManageDataService.cs index 74f2a98..44555b0 100644 --- a/salesbook.Maui/Core/Services/ManageDataService.cs +++ b/salesbook.Maui/Core/Services/ManageDataService.cs @@ -1,21 +1,133 @@ using AutoMapper; -using System.Linq.Expressions; 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.Helpers.Enum; using salesbook.Shared.Core.Interface; +using Sentry.Protocol; +using System.Linq.Expressions; 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> GetTable(Expression>? whereCond = null) where T : new() => localDb.Get(whereCond); - public async Task> GetContact() + public async Task> GetClienti(WhereCondContact? whereCond) { - var contactList = await localDb.Get(x => x.FlagStato.Equals("A")); - var prospectList = await localDb.Get(); + List clienti = []; + 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(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> GetProspect(WhereCondContact? whereCond) + { + List 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(x => + (whereCond.PartIva != null && x.PartIva.Equals(whereCond.PartIva)) || + (whereCond.PartIva == null) + ); + } + + return prospect; + } + + public async Task> GetContact(WhereCondContact? whereCond) + { + List? contactList; + List? 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(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(x => + (whereCond.PartIva != null && x.PartIva.Equals(whereCond.PartIva)) || + (whereCond.PartIva == null) + ); + } // Mappa i contatti var contactMapper = mapper.Map>(contactList); @@ -46,9 +158,35 @@ public class ManageDataService(LocalDbService localDb, IMapper mapper) : IManage } } - public async Task> GetActivity(Expression>? whereCond = null) + public async Task> GetActivity(WhereCondActivity whereCond, bool useLocalDb) { - var activities = await localDb.Get(whereCond); + List? 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(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 .Select(x => x.CodJcom) @@ -103,7 +241,37 @@ public class ManageDataService(LocalDbService localDb, IMapper mapper) : IManage return returnDto; } - public Task InsertOrUpdate(List 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(List? entityList) + { + return Task.Run(() => + { + if (entityList == null) return; + _ = localDb.InsertOrUpdate(entityList); + }); + } + + public Task InsertOrUpdate(List listToSave) => localDb.InsertOrUpdate(listToSave); public Task InsertOrUpdate(T objectToSave) => diff --git a/salesbook.Maui/Core/Services/SyncDbService.cs b/salesbook.Maui/Core/Services/SyncDbService.cs index a3d21ed..f6f9be2 100644 --- a/salesbook.Maui/Core/Services/SyncDbService.cs +++ b/salesbook.Maui/Core/Services/SyncDbService.cs @@ -1,22 +1,10 @@ -using salesbook.Shared.Core.Dto; -using salesbook.Shared.Core.Helpers; +using salesbook.Shared.Core.Helpers; using salesbook.Shared.Core.Interface; namespace salesbook.Maui.Core.Services; 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) { var allCommesse = await integryApiService.RetrieveAllCommesse(dateFilter); @@ -28,46 +16,6 @@ public class SyncDbService(IIntegryApiService integryApiService, LocalDbService 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) { if (dateFilter is not null) diff --git a/salesbook.Shared/Components/Layout/NavMenu.razor b/salesbook.Shared/Components/Layout/NavMenu.razor index 0bd0fee..a4cdf53 100644 --- a/salesbook.Shared/Components/Layout/NavMenu.razor +++ b/salesbook.Shared/Components/Layout/NavMenu.razor @@ -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 diff --git a/salesbook.Shared/Components/Pages/Calendar.razor b/salesbook.Shared/Components/Pages/Calendar.razor index 4dac748..3429e2b 100644 --- a/salesbook.Shared/Components/Pages/Calendar.razor +++ b/salesbook.Shared/Components/Pages/Calendar.razor @@ -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()) diff --git a/salesbook.Shared/Components/Pages/Calendar.razor.css b/salesbook.Shared/Components/Pages/Calendar.razor.css index b2b2641..8475a60 100644 --- a/salesbook.Shared/Components/Pages/Calendar.razor.css +++ b/salesbook.Shared/Components/Pages/Calendar.razor.css @@ -122,7 +122,7 @@ flex-direction: column; -ms-overflow-style: none; scrollbar-width: none; - padding-bottom: 70px; + padding-bottom: 16vh; height: calc(100% - 130px); } diff --git a/salesbook.Shared/Components/Pages/Commessa.razor b/salesbook.Shared/Components/Pages/Commessa.razor index a51fb84..42675a2 100644 --- a/salesbook.Shared/Components/Pages/Commessa.razor +++ b/salesbook.Shared/Components/Pages/Commessa.razor @@ -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 diff --git a/salesbook.Shared/Components/Pages/SyncPage.razor b/salesbook.Shared/Components/Pages/SyncPage.razor index 80484a0..77b8cf4 100644 --- a/salesbook.Shared/Components/Pages/SyncPage.razor +++ b/salesbook.Shared/Components/Pages/SyncPage.razor @@ -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); }); diff --git a/salesbook.Shared/Components/Pages/Users.razor b/salesbook.Shared/Components/Pages/Users.razor index 76b12b5..449f7f1 100644 --- a/salesbook.Shared/Components/Pages/Users.razor +++ b/salesbook.Shared/Components/Pages/Users.razor @@ -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)) diff --git a/salesbook.Shared/Components/SingleElements/BottomSheet/FilterActivity.razor b/salesbook.Shared/Components/SingleElements/BottomSheet/FilterActivity.razor index cc17dc3..048276f 100644 --- a/salesbook.Shared/Components/SingleElements/BottomSheet/FilterActivity.razor +++ b/salesbook.Shared/Components/SingleElements/BottomSheet/FilterActivity.razor @@ -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 diff --git a/salesbook.Shared/Components/SingleElements/BottomSheet/SelectEsito.razor b/salesbook.Shared/Components/SingleElements/BottomSheet/SelectEsito.razor index ff98a7c..89895e5 100644 --- a/salesbook.Shared/Components/SingleElements/BottomSheet/SelectEsito.razor +++ b/salesbook.Shared/Components/SingleElements/BottomSheet/SelectEsito.razor @@ -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 diff --git a/salesbook.Shared/Components/SingleElements/Card/ActivityCard.razor b/salesbook.Shared/Components/SingleElements/Card/ActivityCard.razor index b81a5f6..9217641 100644 --- a/salesbook.Shared/Components/SingleElements/Card/ActivityCard.razor +++ b/salesbook.Shared/Components/SingleElements/Card/ActivityCard.razor @@ -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 diff --git a/salesbook.Shared/Components/SingleElements/Modal/ActivityForm.razor b/salesbook.Shared/Components/SingleElements/Modal/ActivityForm.razor index 40dbd59..c0ad846 100644 --- a/salesbook.Shared/Components/SingleElements/Modal/ActivityForm.razor +++ b/salesbook.Shared/Components/SingleElements/Modal/ActivityForm.razor @@ -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(); ActivityResult = await ManageData.GetTable(); - Clienti = await ManageData.GetTable(x => x.FlagStato.Equals("A")); - Pros = await ManageData.GetTable(); + Clienti = await ManageData.GetClienti(new WhereCondContact {FlagStato = "A"}); + Pros = await ManageData.GetProspect(); ActivityType = await ManageData.GetTable(x => x.FlagTipologia.Equals("A")); } diff --git a/salesbook.Shared/Components/SingleElements/Modal/ContactForm.razor b/salesbook.Shared/Components/SingleElements/Modal/ContactForm.razor index f070e1f..337fa94 100644 --- a/salesbook.Shared/Components/SingleElements/Modal/ContactForm.razor +++ b/salesbook.Shared/Components/SingleElements/Modal/ContactForm.razor @@ -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(x => x.PartIva.Equals(pIva))).LastOrDefault(); + var clie = (await ManageData.GetClienti(new WhereCondContact {PartIva = pIva})).LastOrDefault(); if (clie == null) { - var pros = (await ManageData.GetTable(x => x.PartIva.Equals(pIva))).LastOrDefault(); + var pros = (await ManageData.GetProspect(new WhereCondContact {PartIva = pIva})).LastOrDefault(); if (pros == null) { diff --git a/salesbook.Shared/Core/Dto/ActivityDTO.cs b/salesbook.Shared/Core/Dto/Activity/ActivityDTO.cs similarity index 99% rename from salesbook.Shared/Core/Dto/ActivityDTO.cs rename to salesbook.Shared/Core/Dto/Activity/ActivityDTO.cs index bd5f262..9888ece 100644 --- a/salesbook.Shared/Core/Dto/ActivityDTO.cs +++ b/salesbook.Shared/Core/Dto/Activity/ActivityDTO.cs @@ -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 { diff --git a/salesbook.Shared/Core/Dto/Activity/CRMRetrieveActivityRequestDTO.cs b/salesbook.Shared/Core/Dto/Activity/CRMRetrieveActivityRequestDTO.cs new file mode 100644 index 0000000..44e201a --- /dev/null +++ b/salesbook.Shared/Core/Dto/Activity/CRMRetrieveActivityRequestDTO.cs @@ -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; } +} \ No newline at end of file diff --git a/salesbook.Shared/Core/Dto/FilterActivityDTO.cs b/salesbook.Shared/Core/Dto/Activity/FilterActivityDTO.cs similarity index 91% rename from salesbook.Shared/Core/Dto/FilterActivityDTO.cs rename to salesbook.Shared/Core/Dto/Activity/FilterActivityDTO.cs index dac5241..7dafe5b 100644 --- a/salesbook.Shared/Core/Dto/FilterActivityDTO.cs +++ b/salesbook.Shared/Core/Dto/Activity/FilterActivityDTO.cs @@ -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 { diff --git a/salesbook.Shared/Core/Dto/Activity/WhereCondActivity.cs b/salesbook.Shared/Core/Dto/Activity/WhereCondActivity.cs new file mode 100644 index 0000000..b9d1dc2 --- /dev/null +++ b/salesbook.Shared/Core/Dto/Activity/WhereCondActivity.cs @@ -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; } +} \ No newline at end of file diff --git a/salesbook.Shared/Core/Dto/CRMRetrieveActivityRequestDTO.cs b/salesbook.Shared/Core/Dto/CRMRetrieveActivityRequestDTO.cs deleted file mode 100644 index 4953c16..0000000 --- a/salesbook.Shared/Core/Dto/CRMRetrieveActivityRequestDTO.cs +++ /dev/null @@ -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; } -} \ No newline at end of file diff --git a/salesbook.Shared/Core/Dto/Contact/CRMAnagRequestDTO.cs b/salesbook.Shared/Core/Dto/Contact/CRMAnagRequestDTO.cs new file mode 100644 index 0000000..a28268d --- /dev/null +++ b/salesbook.Shared/Core/Dto/Contact/CRMAnagRequestDTO.cs @@ -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; } +} \ No newline at end of file diff --git a/salesbook.Shared/Core/Dto/Contact/CRMProspectRequestDTO.cs b/salesbook.Shared/Core/Dto/Contact/CRMProspectRequestDTO.cs new file mode 100644 index 0000000..660e334 --- /dev/null +++ b/salesbook.Shared/Core/Dto/Contact/CRMProspectRequestDTO.cs @@ -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; } +} \ No newline at end of file diff --git a/salesbook.Shared/Core/Dto/Contact/WhereCondContact.cs b/salesbook.Shared/Core/Dto/Contact/WhereCondContact.cs new file mode 100644 index 0000000..3e7be13 --- /dev/null +++ b/salesbook.Shared/Core/Dto/Contact/WhereCondContact.cs @@ -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; } +} \ No newline at end of file diff --git a/salesbook.Shared/Core/Dto/TaskSyncResponseDTO.cs b/salesbook.Shared/Core/Dto/UsersSyncResponseDTO.cs similarity index 94% rename from salesbook.Shared/Core/Dto/TaskSyncResponseDTO.cs rename to salesbook.Shared/Core/Dto/UsersSyncResponseDTO.cs index 5ea1bbc..4d790cb 100644 --- a/salesbook.Shared/Core/Dto/TaskSyncResponseDTO.cs +++ b/salesbook.Shared/Core/Dto/UsersSyncResponseDTO.cs @@ -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 { get; set; } diff --git a/salesbook.Shared/Core/Helpers/MappingProfile.cs b/salesbook.Shared/Core/Helpers/MappingProfile.cs index 8ac3142..d967823 100644 --- a/salesbook.Shared/Core/Helpers/MappingProfile.cs +++ b/salesbook.Shared/Core/Helpers/MappingProfile.cs @@ -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; diff --git a/salesbook.Shared/Core/Helpers/ModalHelpers.cs b/salesbook.Shared/Core/Helpers/ModalHelpers.cs index fa199f6..da4bad7 100644 --- a/salesbook.Shared/Core/Helpers/ModalHelpers.cs +++ b/salesbook.Shared/Core/Helpers/ModalHelpers.cs @@ -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; diff --git a/salesbook.Shared/Core/Interface/IIntegryApiService.cs b/salesbook.Shared/Core/Interface/IIntegryApiService.cs index a04484d..80d7915 100644 --- a/salesbook.Shared/Core/Interface/IIntegryApiService.cs +++ b/salesbook.Shared/Core/Interface/IIntegryApiService.cs @@ -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?> RetrieveActivity(CRMRetrieveActivityRequestDTO activityRequest); Task?> RetrieveAllCommesse(string? dateFilter = null); - Task RetrieveAnagClie(string? dateFilter = null); - Task RetrieveProspect(string? dateFilter = null); + Task RetrieveAnagClie(CRMAnagRequestDTO request); + Task RetrieveProspect(CRMProspectRequestDTO request); Task RetrieveSettings(); Task?> RetrieveAttached(string codJcom); diff --git a/salesbook.Shared/Core/Interface/IManageDataService.cs b/salesbook.Shared/Core/Interface/IManageDataService.cs index 0729793..4bd7446 100644 --- a/salesbook.Shared/Core/Interface/IManageDataService.cs +++ b/salesbook.Shared/Core/Interface/IManageDataService.cs @@ -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> GetTable(Expression>? whereCond = null) where T : new(); - - Task> GetActivity(Expression>? whereCond = null); - Task> GetContact(); + + Task> GetClienti(WhereCondContact? whereCond = null); + Task> GetProspect(WhereCondContact? whereCond = null); + Task> GetContact(WhereCondContact whereCond); Task GetSpecificContact(string codAnag, bool IsContact); + Task> GetActivity(WhereCondActivity whereCond, bool useLocalDb = false); + Task InsertOrUpdate(T objectToSave); Task InsertOrUpdate(List listToSave); diff --git a/salesbook.Shared/Core/Interface/ISyncDbService.cs b/salesbook.Shared/Core/Interface/ISyncDbService.cs index b762c6c..48ed35f 100644 --- a/salesbook.Shared/Core/Interface/ISyncDbService.cs +++ b/salesbook.Shared/Core/Interface/ISyncDbService.cs @@ -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); } \ No newline at end of file diff --git a/salesbook.Shared/Core/Messages/Activity/Copy/CopyActivityMessage.cs b/salesbook.Shared/Core/Messages/Activity/Copy/CopyActivityMessage.cs index 7324da0..068e051 100644 --- a/salesbook.Shared/Core/Messages/Activity/Copy/CopyActivityMessage.cs +++ b/salesbook.Shared/Core/Messages/Activity/Copy/CopyActivityMessage.cs @@ -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; diff --git a/salesbook.Shared/Core/Messages/Activity/Copy/CopyActivityService.cs b/salesbook.Shared/Core/Messages/Activity/Copy/CopyActivityService.cs index 836b2d5..34e96cf 100644 --- a/salesbook.Shared/Core/Messages/Activity/Copy/CopyActivityService.cs +++ b/salesbook.Shared/Core/Messages/Activity/Copy/CopyActivityService.cs @@ -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; diff --git a/salesbook.Shared/Core/Services/IntegryApiService.cs b/salesbook.Shared/Core/Services/IntegryApiService.cs index a29e251..b12cb7a 100644 --- a/salesbook.Shared/Core/Services/IntegryApiService.cs +++ b/salesbook.Shared/Core/Services/IntegryApiService.cs @@ -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?>("crm/retrieveCommesse", queryParams); } - public Task RetrieveAnagClie(string? dateFilter) - { - var queryParams = new Dictionary(); + public Task RetrieveAnagClie(CRMAnagRequestDTO request) => + integryApiRestClient.AuthorizedPost("crm/retrieveClienti", request)!; - if (dateFilter != null) - { - queryParams.Add("dateFilter", dateFilter); - } - - return integryApiRestClient.AuthorizedGet("crm/retrieveClienti", queryParams)!; - } - - public Task RetrieveProspect(string? dateFilter) - { - var queryParams = new Dictionary(); - - if (dateFilter != null) - { - queryParams.Add("dateFilter", dateFilter); - } - - return integryApiRestClient.AuthorizedGet("crm/retrieveProspect", queryParams)!; - } + public Task RetrieveProspect(CRMProspectRequestDTO request) => + integryApiRestClient.AuthorizedPost("crm/retrieveProspect", request)!; public Task RetrieveSettings() => integryApiRestClient.AuthorizedGet("crm/retrieveSettings")!; diff --git a/salesbook.Web/Core/Services/ManageDataService.cs b/salesbook.Web/Core/Services/ManageDataService.cs index 3775113..b32c298 100644 --- a/salesbook.Web/Core/Services/ManageDataService.cs +++ b/salesbook.Web/Core/Services/ManageDataService.cs @@ -1,5 +1,7 @@ using System.Linq.Expressions; 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; @@ -12,17 +14,27 @@ public class ManageDataService : IManageDataService throw new NotImplementedException(); } - public Task> GetActivity(Expression>? whereCond = null) + public Task> GetClienti(WhereCondContact? whereCond) { throw new NotImplementedException(); } - public Task> GetContact() + public Task> GetProspect(WhereCondContact? whereCond) { throw new NotImplementedException(); } - public Task GetSpecificContact(string codAnag, bool IsContact) + public Task> GetContact(WhereCondContact whereCond) + { + throw new NotImplementedException(); + } + + public Task GetSpecificContact(string codAnag, bool IsContact) + { + throw new NotImplementedException(); + } + + public Task> GetActivity(WhereCondActivity whereCond, bool useLocalDb = false) { throw new NotImplementedException(); } diff --git a/salesbook.Web/Core/Services/SyncDbService.cs b/salesbook.Web/Core/Services/SyncDbService.cs index 5d29b0d..81a2e3c 100644 --- a/salesbook.Web/Core/Services/SyncDbService.cs +++ b/salesbook.Web/Core/Services/SyncDbService.cs @@ -1,10 +1,11 @@ -using salesbook.Shared.Core.Interface; +using salesbook.Shared.Core.Entity; +using salesbook.Shared.Core.Interface; namespace salesbook.Web.Core.Services; public class SyncDbService : ISyncDbService { - public Task GetAndSaveActivity(string? dateFilter = null) + public Task GetAndSaveActivity(List? allActivity) { throw new NotImplementedException(); }