diff --git a/Apps.Lionbridge/Actions/JobActions.cs b/Apps.Lionbridge/Actions/JobActions.cs index 1d21748..7ef359f 100644 --- a/Apps.Lionbridge/Actions/JobActions.cs +++ b/Apps.Lionbridge/Actions/JobActions.cs @@ -4,8 +4,6 @@ using Apps.Lionbridge.Models.Dtos; using Apps.Lionbridge.Models.Requests.Job; using Apps.Lionbridge.Models.Requests.Provider; -using Apps.Lionbridge.Models.Requests.Request; -using Apps.Lionbridge.Models.Responses.TranslationContent; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; @@ -116,6 +114,19 @@ public async Task UpdateJob([ActionParameter] GetJobRequest jobRequest, connectorVersion = apiUpdateRequest.ConnectorVersion, serviceType = apiUpdateRequest.ServiceType }); + + if(request.JobCompletionStatus != null) + { + if(request.JobCompletionStatus == "COMPLETED") + { + return await CompleteJob(jobRequest.JobId); + } + + if(request.JobCompletionStatus == "IN_TRANSLATION") + { + return await IntranslateJob(jobRequest.JobId); + } + } return await Client.ExecuteWithErrorHandling(apiRequest); } @@ -143,17 +154,15 @@ public async Task UnarchiveJob([ActionParameter] GetJobRequest request) return await Client.ExecuteWithErrorHandling(apiRequest); } - [Action("Complete job", Description = "Complete a translation job")] - public async Task CompleteJob([ActionParameter] GetJobRequest request) + protected async Task CompleteJob(string jobId) { - var apiRequest = new LionbridgeRequest($"{ApiEndpoints.Jobs}/{request.JobId}/complete", Method.Put); + var apiRequest = new LionbridgeRequest($"{ApiEndpoints.Jobs}/{jobId}/complete", Method.Put); return await Client.ExecuteWithErrorHandling(apiRequest); } - [Action("Intranslate job", Description = "Set job status to IN_TRANSLATION. Allows further translations from being imported again. Only valid when job is currently COMPLETED")] - public async Task IntranslateJob([ActionParameter] GetJobRequest request) + protected async Task IntranslateJob(string jobId) { - var apiRequest = new LionbridgeRequest($"{ApiEndpoints.Jobs}/{request.JobId}/intranslation", Method.Put); + var apiRequest = new LionbridgeRequest($"{ApiEndpoints.Jobs}/{jobId}/intranslation", Method.Put); return await Client.ExecuteWithErrorHandling(apiRequest); } } \ No newline at end of file diff --git a/Apps.Lionbridge/Actions/RequestActions.cs b/Apps.Lionbridge/Actions/RequestActions.cs index fc42ec3..782ef33 100644 --- a/Apps.Lionbridge/Actions/RequestActions.cs +++ b/Apps.Lionbridge/Actions/RequestActions.cs @@ -27,7 +27,7 @@ public async Task GetRequests([ActionParameter] GetRequests return await GetRequests(jobRequest.JobId, jobRequest.RequestIds); } - [Action("Create source content request", Description = "Create a new translation request.")] + // [Action("Create source content request", Description = "Create a new translation request.")] public async Task CreateSingleRequest([ActionParameter] AddSourceRequestModel request, [ActionParameter] GetJobRequest jobRequest) { diff --git a/Apps.Lionbridge/DataSourceHandlers/EnumDataHandlers/JobCompletionStatuses.cs b/Apps.Lionbridge/DataSourceHandlers/EnumDataHandlers/JobCompletionStatuses.cs new file mode 100644 index 0000000..31a7999 --- /dev/null +++ b/Apps.Lionbridge/DataSourceHandlers/EnumDataHandlers/JobCompletionStatuses.cs @@ -0,0 +1,12 @@ +using Blackbird.Applications.Sdk.Utils.Sdk.DataSourceHandlers; + +namespace Apps.Lionbridge.DataSourceHandlers.EnumDataHandlers; + +public class JobCompletionStatuses : EnumDataHandler +{ + protected override Dictionary EnumValues => new() + { + { "IN_TRANSLATION", "In translation" }, + { "COMPLETED", "Complete" }, + }; +} \ No newline at end of file diff --git a/Apps.Lionbridge/Models/Requests/Job/UpdateJobRequest.cs b/Apps.Lionbridge/Models/Requests/Job/UpdateJobRequest.cs index e447b07..fb18b57 100644 --- a/Apps.Lionbridge/Models/Requests/Job/UpdateJobRequest.cs +++ b/Apps.Lionbridge/Models/Requests/Job/UpdateJobRequest.cs @@ -1,4 +1,5 @@ using Apps.Lionbridge.DataSourceHandlers; +using Apps.Lionbridge.DataSourceHandlers.EnumDataHandlers; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Dynamic; @@ -41,4 +42,7 @@ public class UpdateJobRequest [Display("Label values", Description = "Label values. For each specified value, a respective key should be added " + "in the 'Label keys' input parameter.")] public IEnumerable? LabelValues { get; set; } + + [Display("Job status"), DataSource(typeof(JobCompletionStatuses))] + public string? JobCompletionStatus { get; set; } } \ No newline at end of file