diff --git a/Apps.BWX/DataSourceHandlers/ProjectDataHandler.cs b/Apps.BWX/DataSourceHandlers/ProjectDataHandler.cs new file mode 100644 index 0000000..f965308 --- /dev/null +++ b/Apps.BWX/DataSourceHandlers/ProjectDataHandler.cs @@ -0,0 +1,32 @@ +using Apps.BWX.Api; +using Apps.BWX.Dtos; +using Apps.BWX.Invocables; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Invocation; +using RestSharp; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Apps.BWX.DataSourceHandlers +{ + public class ProjectDataHandler : BWXInvocable, IAsyncDataSourceHandler + { + public ProjectDataHandler(InvocationContext invocationContext) : base(invocationContext) + { + } + + public async Task> GetDataAsync(DataSourceContext context, CancellationToken token) + { + var request = new BWXRequest($"/api/v3/project", Method.Get, Creds); + var projects = await Client.Paginate(request); + + return projects.Where(el => + context.SearchString is null || + el.Reference.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) + .ToDictionary(k => k.Uuid, v => $"{v.Reference} ({v.Name})"); + } + } +} diff --git a/Apps.BWX/Models/Requests/Project/GetProjectRequest.cs b/Apps.BWX/Models/Requests/Project/GetProjectRequest.cs index a4d8986..74ccd39 100644 --- a/Apps.BWX/Models/Requests/Project/GetProjectRequest.cs +++ b/Apps.BWX/Models/Requests/Project/GetProjectRequest.cs @@ -1,4 +1,7 @@ -using System; +using Apps.BWX.DataSourceHandlers; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,6 +11,8 @@ namespace Apps.BWX.Models.Requests.Project { public class GetProjectRequest { + [Display("Project ID")] + [DataSource(typeof(ProjectDataHandler))] public string ProjectId { get; set; } } }