From 1084ba06ee452a4627880d60a326d70795b6cff6 Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Thu, 27 Jun 2024 12:41:47 +0300 Subject: [PATCH] Removed files from action --- Apps.XTRF/Classic/Actions/ClassicQuoteActions.cs | 16 +++++++++++----- .../ClassicPriceProfileDataSource.cs | 2 +- .../Requests/ClassicQuote/QuoteCreateRequest.cs | 2 +- Apps.XTRF/Shared/Api/XtrfCustomerPortalClient.cs | 6 +----- Apps.XTRF/Shared/Invocables/XtrfInvocable.cs | 6 ++++-- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Apps.XTRF/Classic/Actions/ClassicQuoteActions.cs b/Apps.XTRF/Classic/Actions/ClassicQuoteActions.cs index f4d0c0e..001e94c 100644 --- a/Apps.XTRF/Classic/Actions/ClassicQuoteActions.cs +++ b/Apps.XTRF/Classic/Actions/ClassicQuoteActions.cs @@ -13,6 +13,7 @@ using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; using Blackbird.Applications.Sdk.Utils.Extensions.Http; +using Newtonsoft.Json; using RestSharp; namespace Apps.XTRF.Classic.Actions; @@ -57,7 +58,8 @@ public async Task CreateQuote([ActionParameter] QuoteCrea var customerActions = new CustomerActions(invocationContext); var contactPerson = await customerActions.GetContactPerson(request); var tokenResponse = await GetPersonAccessToken(contactPerson?.Contact?.Emails?.Primary ?? throw new Exception("Contact person has no primary email.")); - var customerPortalClient = GetCustomerPortalClient(tokenResponse.Token); + var customerPortalClient = GetCustomerPortalClient(tokenResponse.Token); + var officeId = (await GetDefaultOffice(contactPerson.Contact.Emails.Primary)).Id; var obj = new { @@ -80,19 +82,21 @@ public async Task CreateQuote([ActionParameter] QuoteCrea additionalPersonIds = request.AdditionalPersonIds == null ? new List() : request.AdditionalPersonIds.Select(int.Parse).ToList(), - files = await customerPortalClient.UploadFilesAsync(request.Files, fileManagementClient), + files = request.Files == null + ? new List() + : await customerPortalClient.UploadFilesAsync(request.Files, fileManagementClient), referenceFiles = request.ReferenceFiles == null ? new List() : await customerPortalClient.UploadFilesAsync(request.ReferenceFiles, fileManagementClient), customFields = new List(), officeId = request.OfficeId != null ? int.Parse(request.OfficeId) - : (await GetDefaultOffice(request, customerPortalClient)).Id, + : officeId, budgetCode = request.BudgetCode ?? string.Empty, catToolType = request.CatToolType ?? "TRADOS" }; - var quoteDto = await customerPortalClient.ExecuteRequestAsync("/v2/quotes", Method.Post, obj); + var quoteDto = await customerPortalClient.ExecuteRequestAsync("/v2/quotes", Method.Post, obj); return new(quoteDto); } @@ -151,8 +155,10 @@ public async Task DeleteQuote([ActionParameter] QuoteIdentifier quoteIdentifier) #region Utils - public async Task GetDefaultOffice(PersonIdentifier personIdentifier, XtrfCustomerPortalClient customerPortalClient) + public async Task GetDefaultOffice(string emailOrLogin) { + var accessToken = await GetPersonAccessToken(emailOrLogin); + var customerPortalClient = GetCustomerPortalClient(accessToken.Token); var officeDto = await customerPortalClient.ExecuteRequestAsync($"/offices/default", Method.Get, null); return officeDto; } diff --git a/Apps.XTRF/Classic/DataSourceHandlers/ClassicPriceProfileDataSource.cs b/Apps.XTRF/Classic/DataSourceHandlers/ClassicPriceProfileDataSource.cs index ca84f0a..3b1e1d7 100644 --- a/Apps.XTRF/Classic/DataSourceHandlers/ClassicPriceProfileDataSource.cs +++ b/Apps.XTRF/Classic/DataSourceHandlers/ClassicPriceProfileDataSource.cs @@ -28,7 +28,7 @@ public class ClassicPriceProfileDataSource(InvocationContext invocationContext, FullOfficeDto officeDto; if (string.IsNullOrEmpty(request.OfficeId)) { - officeDto = await quoteActions.GetDefaultOffice(request, customerPortalClient); + officeDto = await quoteActions.GetDefaultOffice(contactPerson.Contact.Emails.Primary); } else { diff --git a/Apps.XTRF/Classic/Models/Requests/ClassicQuote/QuoteCreateRequest.cs b/Apps.XTRF/Classic/Models/Requests/ClassicQuote/QuoteCreateRequest.cs index 223259c..c28a53a 100644 --- a/Apps.XTRF/Classic/Models/Requests/ClassicQuote/QuoteCreateRequest.cs +++ b/Apps.XTRF/Classic/Models/Requests/ClassicQuote/QuoteCreateRequest.cs @@ -16,7 +16,7 @@ public class QuoteCreateRequest : PersonIdentifier [Display("Customer project number")] public string? CustomerProjectNumber { get; set; } - public IEnumerable Files { get; set; } + public IEnumerable? Files { get; set; } [Display("Service ID"), DataSource(typeof(ClassicServiceDataSourceHandler))] public string ServiceId { get; set; } diff --git a/Apps.XTRF/Shared/Api/XtrfCustomerPortalClient.cs b/Apps.XTRF/Shared/Api/XtrfCustomerPortalClient.cs index f71ffa0..ff9a808 100644 --- a/Apps.XTRF/Shared/Api/XtrfCustomerPortalClient.cs +++ b/Apps.XTRF/Shared/Api/XtrfCustomerPortalClient.cs @@ -15,14 +15,12 @@ namespace Apps.XTRF.Shared.Api; public class XtrfCustomerPortalClient(List credentials, string token) : BlackBirdRestClient(new RestClientOptions(UrlHelper.BuildCustomerUrl(credentials.Get(CredsNames.Url).Value))) { private const string TokenKey = "XTRF-CP-Auth-Token"; - private const string JsessionCookie = "JSESSIONID"; - + public async Task ExecuteRequestAsync(string endpoint, Method method, object? bodyObj) { var request = new RestRequest(endpoint, method) .AddHeader(TokenKey, token); - request.Resource = UrlHelper.BuildCustomerRequestUrl(Options.BaseUrl!.ToString(), endpoint, token); if (bodyObj is not null) { request.WithJsonBody(bodyObj); @@ -38,8 +36,6 @@ public async Task UploadFileAsync(string endpoint, byte[] fileBytes, strin .AddHeader(TokenKey, token) .AddFile("file", fileBytes, fileName, "multipart/form-data"); - request.Resource = UrlHelper.BuildCustomerRequestUrl(Options.BaseUrl!.ToString(), endpoint, token); - var response = await ExecuteWithErrorHandling(request); return response; } diff --git a/Apps.XTRF/Shared/Invocables/XtrfInvocable.cs b/Apps.XTRF/Shared/Invocables/XtrfInvocable.cs index d45516c..21185fc 100644 --- a/Apps.XTRF/Shared/Invocables/XtrfInvocable.cs +++ b/Apps.XTRF/Shared/Invocables/XtrfInvocable.cs @@ -6,6 +6,7 @@ using Blackbird.Applications.Sdk.Common.Authentication; using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Utils.Extensions.Http; +using Newtonsoft.Json; using RestSharp; namespace Apps.XTRF.Shared.Invocables; @@ -71,7 +72,8 @@ protected async Task GetPersonAccessToken(string loginOrEmail { var request = new XtrfRequest("/customers/persons/accessToken", Method.Post, Creds) .WithJsonBody(new { loginOrEmail }); - - return await Client.ExecuteWithErrorHandling(request); + + var response = await Client.ExecuteWithErrorHandling(request); + return JsonConvert.DeserializeObject(response.Content!)!; } } \ No newline at end of file