using IntegryApiClient.Core.Domain.Abstraction.Contracts.Account; using IntegryApiClient.Core.Domain.RestClient.Contacts; using salesbook.Shared.Core.Dto; using salesbook.Shared.Core.Entity; using salesbook.Shared.Core.Interface; using System.Net.Http.Headers; namespace salesbook.Shared.Core.Services; public class IntegryApiService(IIntegryApiRestClient integryApiRestClient, IUserSession userSession) : IIntegryApiService { public Task?> RetrieveActivity(string? dateFilter) { var queryParams = new Dictionary { { "dateFilter", dateFilter ?? "2020-01-01" } }; return integryApiRestClient.AuthorizedGet?>("crm/retrieveActivity", queryParams); } public Task?> RetrieveAllCommesse(string? dateFilter) { var queryParams = new Dictionary(); if (dateFilter != null) { queryParams.Add("dateFilter", dateFilter); } return integryApiRestClient.AuthorizedGet?>("crm/retrieveCommesse", queryParams); } public Task RetrieveAnagClie(string? dateFilter) { var queryParams = new Dictionary(); 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 RetrieveSettings() => integryApiRestClient.AuthorizedGet("crm/retrieveSettings")!; public Task DeleteActivity(string activityId) { var queryParams = new Dictionary { { "activityId", activityId } }; return integryApiRestClient.AuthorizedGet($"activity/delete", queryParams); } public Task?> SaveActivity(ActivityDTO activity) => integryApiRestClient.AuthorizedPost?>("crm/saveActivity", activity); public Task SaveContact(CRMCreateContactRequestDTO request) => integryApiRestClient.AuthorizedPost("crm/createContact", request); public Task TransferProspect(CRMTransferProspectRequestDTO request) => integryApiRestClient.AuthorizedPost("crm/transferProspect", request)!; public Task CheckVat(CheckVatRequestDTO request) => integryApiRestClient.Post("checkPartitaIva", request)!; public Task?> Geocode(string address) { var queryParams = new Dictionary { { "address", address }, { "retrieveAll", true } }; return integryApiRestClient.Get>("geocode", queryParams); } public Task?> AutoCompleteAddress(string address, string language, string uuid) { var queryParams = new Dictionary { { "address", address }, { "language", language }, { "uuid", uuid } }; return integryApiRestClient.Get>("google/places/autoCompleteAddress", queryParams); } public Task PlaceDetails(string placeId, string uuid) { var queryParams = new Dictionary { { "placeId", placeId }, { "uuid", uuid } }; return integryApiRestClient.Get("google/places/placeDetails", queryParams); } public Task UploadFile(string activityId, byte[] file, string fileName) { var queryParams = new Dictionary { { "activityId", activityId } }; var content = new MultipartFormDataContent(); var fileContent = new ByteArrayContent(file); fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); content.Add(fileContent, "files", fileName); return integryApiRestClient.Post($"uploadStbActivityFileAttachment", content, queryParams); } public Task> GetActivityFile(string activityId) { var queryParams = new Dictionary { { "activityId", activityId } }; return integryApiRestClient.AuthorizedGet>($"activity/getActivityFile", queryParams)!; } public Task DownloadFile(string activityId, string fileName) => integryApiRestClient.Download($"downloadStbFileAttachment/{activityId}/{fileName}")!; public Task SavePosition(PositionDTO position) => integryApiRestClient.Post("savePosition", position)!; public Task RetrievePosition(string id) { var queryParams = new Dictionary { { "id", id } }; return integryApiRestClient.Get("retrievePosition", queryParams)!; } }