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; using salesbook.Shared.Core.Interface.IntegryApi; namespace salesbook.Shared.Core.Services; public class IntegryApiService(IIntegryApiRestClient integryApiRestClient, IUserSession userSession) : IIntegryApiService { public async Task SystemOk() { try { await integryApiRestClient.Get("system/ok"); return true; } catch (Exception e) { return false; } } public Task?> RetrieveActivity(CRMRetrieveActivityRequestDTO activityRequest) => integryApiRestClient.AuthorizedPost?>("crm/retrieveActivity", activityRequest); 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(CRMAnagRequestDTO request) => integryApiRestClient.AuthorizedPost("crm/retrieveClienti", request)!; public Task RetrieveProspect(CRMProspectRequestDTO request) => integryApiRestClient.AuthorizedPost("crm/retrieveProspect", request)!; public Task RetrieveSettings() => integryApiRestClient.AuthorizedGet("crm/retrieveSettings")!; public Task?> RetrieveAttached(string codJcom) { var queryParams = new Dictionary { { "codJcom", codJcom } }; return integryApiRestClient.AuthorizedGet?>("crm/retrieveAttachedForCodJcom", queryParams); } public Task DeleteActivity(string activityId) { var queryParams = new Dictionary { { "activityId", activityId } }; return integryApiRestClient.AuthorizedGet($"activity/delete", queryParams); } public Task?> SaveActivity(ActivityDTO activity) { if (activity.CodJcom is null && userSession.ProfileDb != null && userSession.ProfileDb.Equals("smetar", StringComparison.OrdinalIgnoreCase)) { activity.CodJcom = "0000"; } return 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 DeleteFile(string activityId, string fileName) { var queryParams = new Dictionary { { "activityId", activityId }, { "fileName", fileName } }; return integryApiRestClient.Get("activity/removeAttachment", 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($"downloadStbActivityFileAttachment/{activityId}/{fileName}")!; public Task DownloadFileFromRefUuid(string refUuid, string fileName) { var queryParams = new Dictionary { { "refUuid", refUuid }, { "fileName", fileName } }; return integryApiRestClient.Download("downloadFileFromRefUuid", queryParams); } public Task SavePosition(PositionDTO position) => integryApiRestClient.Post("savePosition", position)!; public Task RetrievePosition(long id) { var queryParams = new Dictionary { { "id", id } }; return integryApiRestClient.Get("retrievePosition", queryParams)!; } public Task RetrieveJobProgress(string codJcom) { var queryParams = new Dictionary { { "codJcom", codJcom } }; return integryApiRestClient.Get("crm/retrieveJobProgress", queryParams)!; } public Task?> SuggestActivityDescription(string activityType) => integryApiRestClient.Get>( "activity/suggestActivityDescription", new Dictionary { { "activityType", activityType } } ); }