diff --git a/ClickUp/Actions/AttachmentActions.cs b/ClickUp/Actions/AttachmentActions.cs index 48b4926..edb8516 100644 --- a/ClickUp/Actions/AttachmentActions.cs +++ b/ClickUp/Actions/AttachmentActions.cs @@ -4,18 +4,18 @@ using Apps.ClickUp.Models.Entities; using Apps.ClickUp.Models.Request; using Apps.ClickUp.Models.Request.Attachment; +using Apps.ClickUp.Models.Request.Task; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; -using Blackbird.Applications.Sdk.Utils.Extensions.Http; using Blackbird.Applications.Sdk.Utils.Extensions.String; using RestSharp; using Method = RestSharp.Method; namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("Attachment")] public class AttachmentActions : ClickUpActions { private readonly IFileManagementClient _fileManagementClient; @@ -28,15 +28,20 @@ public AttachmentActions(InvocationContext invocationContext, IFileManagementCli [Action("Create task attachment", Description = "Adds files as an attachment to a task")] public async Task CreateAttachment( + [ActionParameter] TaskRequest task, [ActionParameter] CreateAttachmentRequest input, [ActionParameter] CreateRequestQuery query) { var file = await _fileManagementClient.DownloadAsync(input.File); - - var endpoint = $"{ApiEndpoints.Tasks}/{input.TaskId}{ApiEndpoints.Attachments}"; - var request = new ClickUpRequest(endpoint.WithQuery(query), Method.Post, Creds) + + var endpoint = $"{ApiEndpoints.Tasks}/{task.TaskId}{ApiEndpoints.Attachments}".WithQuery(query); + + if (query.CustomTaskIds is true) + endpoint = endpoint.SetQueryParameter("team_id", task.TeamId); + + var request = new ClickUpRequest(endpoint, Method.Post, Creds) .AddFile("attachment", () => file, input.FileName ?? input.File.Name); - + return await Client.ExecuteWithErrorHandling(request); } } \ No newline at end of file diff --git a/ClickUp/Actions/CustomFieldActions.cs b/ClickUp/Actions/CustomFieldActions.cs index 24058c9..055a868 100644 --- a/ClickUp/Actions/CustomFieldActions.cs +++ b/ClickUp/Actions/CustomFieldActions.cs @@ -14,7 +14,7 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("Custom field")] public class CustomFieldActions : ClickUpActions { public CustomFieldActions(InvocationContext invocationContext) : base(invocationContext) diff --git a/ClickUp/Actions/FolderActions.cs b/ClickUp/Actions/FolderActions.cs index b405559..4881e0c 100644 --- a/ClickUp/Actions/FolderActions.cs +++ b/ClickUp/Actions/FolderActions.cs @@ -15,7 +15,7 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("Folder")] public class FolderActions : ClickUpActions { public FolderActions(InvocationContext invocationContext) : base(invocationContext) diff --git a/ClickUp/Actions/GoalActions.cs b/ClickUp/Actions/GoalActions.cs index 2d925c3..ada7273 100644 --- a/ClickUp/Actions/GoalActions.cs +++ b/ClickUp/Actions/GoalActions.cs @@ -14,7 +14,7 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("Goal")] public class GoalActions : ClickUpActions { public GoalActions(InvocationContext invocationContext) : base(invocationContext) diff --git a/ClickUp/Actions/ListActions.cs b/ClickUp/Actions/ListActions.cs index 17c3697..46e78ed 100644 --- a/ClickUp/Actions/ListActions.cs +++ b/ClickUp/Actions/ListActions.cs @@ -16,7 +16,7 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("List")] public class ListActions : ClickUpActions { public ListActions(InvocationContext invocationContext) : base(invocationContext) diff --git a/ClickUp/Actions/SpaceActions.cs b/ClickUp/Actions/SpaceActions.cs index 79aeec1..0a15477 100644 --- a/ClickUp/Actions/SpaceActions.cs +++ b/ClickUp/Actions/SpaceActions.cs @@ -15,7 +15,7 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("Space")] public class SpaceActions : ClickUpActions { public SpaceActions(InvocationContext invocationContext) : base(invocationContext) diff --git a/ClickUp/Actions/TagActions.cs b/ClickUp/Actions/TagActions.cs index 7cfa345..bcae248 100644 --- a/ClickUp/Actions/TagActions.cs +++ b/ClickUp/Actions/TagActions.cs @@ -13,13 +13,13 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("Tag")] public class TagActions : ClickUpActions { public TagActions(InvocationContext invocationContext) : base(invocationContext) { } - + [Action("Get tags", Description = "Get all space tags")] public Task GetTags([ActionParameter] SpaceRequest space) { @@ -28,30 +28,28 @@ public Task GetTags([ActionParameter] SpaceRequest space) return Client.ExecuteWithErrorHandling(request); } - + [Action("Create tag", Description = "Create a new space tag")] public async Task CreateTag( - [ActionParameter] SpaceRequest space, + [ActionParameter] SpaceRequest space, [ActionParameter] CreateTagInput input) { var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}{ApiEndpoints.Tags}"; var request = new ClickUpRequest(endpoint, Method.Post, Creds) .WithJsonBody(new CreateTagRequest(input), JsonConfig.Settings); - + await Client.ExecuteWithErrorHandling(request); var allTags = await GetTags(space); return allTags.Tags.First(x => x.Name == input.Name); } - + [Action("Delete tag", Description = "Delete specific space tag")] - public Task DeleteTag( - [ActionParameter] SpaceRequest space, - [ActionParameter] TagRequest tag) + public Task DeleteTag([ActionParameter] TagRequest tag) { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}{ApiEndpoints.Tags}/{tag.TagName}"; + var endpoint = $"{ApiEndpoints.Spaces}/{tag.SpaceId}{ApiEndpoints.Tags}/{tag.TagName}"; var request = new ClickUpRequest(endpoint, Method.Delete, Creds); - + return Client.ExecuteWithErrorHandling(request); } } \ No newline at end of file diff --git a/ClickUp/Actions/TaskActions.cs b/ClickUp/Actions/TaskActions.cs index ef7a162..7a791f1 100644 --- a/ClickUp/Actions/TaskActions.cs +++ b/ClickUp/Actions/TaskActions.cs @@ -19,7 +19,7 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("Task")] public class TaskActions : ClickUpActions { public TaskActions(InvocationContext invocationContext) : base(invocationContext) @@ -58,8 +58,7 @@ public Task CreateTask( } [Action("Delete task", Description = "Delete specific task")] - public Task DeleteTask( - [ActionParameter] TaskRequest task) + public Task DeleteTask([ActionParameter] TaskRequest task) { var endpoint = $"{ApiEndpoints.Tasks}/{task.TaskId}"; var request = new ClickUpRequest(endpoint, Method.Delete, Creds); diff --git a/ClickUp/Actions/TeamActions.cs b/ClickUp/Actions/TeamActions.cs index d54192e..2326001 100644 --- a/ClickUp/Actions/TeamActions.cs +++ b/ClickUp/Actions/TeamActions.cs @@ -8,7 +8,7 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("Team")] public class TeamActions : ClickUpActions { public TeamActions(InvocationContext invocationContext) : base(invocationContext) diff --git a/ClickUp/Actions/UserGroupActions.cs b/ClickUp/Actions/UserGroupActions.cs index 3b465aa..b11ff85 100644 --- a/ClickUp/Actions/UserGroupActions.cs +++ b/ClickUp/Actions/UserGroupActions.cs @@ -14,7 +14,7 @@ namespace Apps.ClickUp.Actions; -[ActionList] +[ActionList("User group")] public class UserGroupActions : ClickUpActions { public UserGroupActions(InvocationContext invocationContext) : base(invocationContext) diff --git a/ClickUp/Apps.ClickUp.csproj b/ClickUp/Apps.ClickUp.csproj index 2ae0209..5649715 100644 --- a/ClickUp/Apps.ClickUp.csproj +++ b/ClickUp/Apps.ClickUp.csproj @@ -5,11 +5,11 @@ enable ClickUp Customizable workplace productivity platform - 1.0.6 + 1.0.7 Apps.ClickUp - + diff --git a/ClickUp/DataSourceHandlers/CustomFieldDataHandler.cs b/ClickUp/DataSourceHandlers/CustomFieldDataHandler.cs new file mode 100644 index 0000000..b242c1b --- /dev/null +++ b/ClickUp/DataSourceHandlers/CustomFieldDataHandler.cs @@ -0,0 +1,38 @@ +using Apps.ClickUp.Api; +using Apps.ClickUp.Constants; +using Apps.ClickUp.Invocables; +using Apps.ClickUp.Models.Request.CustomField; +using Apps.ClickUp.Models.Response.CusomField; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Invocation; +using RestSharp; + +namespace Apps.ClickUp.DataSourceHandlers; + +public class CustomFieldDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +{ + private readonly CustomFieldRequest _request; + + public CustomFieldDataHandler(InvocationContext invocationContext, [ActionParameter] CustomFieldRequest request) : base( + invocationContext) + { + _request = request; + } + + public async Task> GetDataAsync(DataSourceContext context, + CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(_request.ListId)) + throw new("You should specify List ID first"); + + var request = new ClickUpRequest($"{ApiEndpoints.Lists}/{_request.ListId}/field", Method.Get, Creds); + var teams = await Client.ExecuteWithErrorHandling(request); + + return teams.Fields + .Where(x => context.SearchString is null || + x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) + .Take(20) + .ToDictionary(x => x.Id, x => x.Name); + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/EnumHandlers/KeyResultTypeDataHandler.cs b/ClickUp/DataSourceHandlers/EnumHandlers/KeyResultTypeDataHandler.cs deleted file mode 100644 index 035d5d1..0000000 --- a/ClickUp/DataSourceHandlers/EnumHandlers/KeyResultTypeDataHandler.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Blackbird.Applications.Sdk.Utils.Sdk.DataSourceHandlers; - -namespace Apps.ClickUp.DataSourceHandlers.EnumHandlers; - -public class KeyResultTypeDataHandler : EnumDataHandler -{ - protected override Dictionary EnumValues => new() - { - { "number", "Number" }, - { "currency", "Currency" }, - { "boolean", "Boolean" }, - { "percentage", "Percentage" }, - { "automatic", "Automatic" }, - }; -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/EnumHandlers/TaskPriorityDataHandler.cs b/ClickUp/DataSourceHandlers/EnumHandlers/TaskPriorityDataHandler.cs deleted file mode 100644 index 39e9f7f..0000000 --- a/ClickUp/DataSourceHandlers/EnumHandlers/TaskPriorityDataHandler.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Blackbird.Applications.Sdk.Utils.Sdk.DataSourceHandlers; - -namespace Apps.ClickUp.DataSourceHandlers.EnumHandlers; - -public class TaskPriorityDataHandler : EnumDataHandler -{ - protected override Dictionary EnumValues => new() - { - { "1", "Urgent" }, - { "2", "High" }, - { "3", "Normal" }, - { "4", "Low" }, - }; -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/FolderCustomFieldDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/FolderCustomFieldDataHandler.cs new file mode 100644 index 0000000..572615d --- /dev/null +++ b/ClickUp/DataSourceHandlers/Folder/FolderCustomFieldDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.CustomField; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Folder; + +public class FolderCustomFieldDataHandler : FolderDataHandler +{ + public FolderCustomFieldDataHandler(InvocationContext invocationContext, [ActionParameter] CustomFieldRequest request) : + base(invocationContext, request.SpaceId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/FolderDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/FolderDataHandler.cs new file mode 100644 index 0000000..a8256d3 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Folder/FolderDataHandler.cs @@ -0,0 +1,35 @@ +using Apps.ClickUp.Api; +using Apps.ClickUp.Constants; +using Apps.ClickUp.Invocables; +using Apps.ClickUp.Models.Response.Folder; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Invocation; +using RestSharp; + +namespace Apps.ClickUp.DataSourceHandlers.Folder; + +public class FolderDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +{ + private readonly string _spaceId; + + public FolderDataHandler(InvocationContext invocationContext, string spaceId) : base(invocationContext) + { + _spaceId = spaceId; + } + + public async Task> GetDataAsync(DataSourceContext context, + CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(_spaceId)) + throw new("You should specify Space ID first"); + + var request = new ClickUpRequest($"{ApiEndpoints.Spaces}/{_spaceId}/folder", Method.Get, Creds); + var teams = await Client.ExecuteWithErrorHandling(request); + + return teams.Folders + .Where(x => context.SearchString is null || + x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) + .Take(20) + .ToDictionary(x => x.Id, x => x.Name); + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/FolderListDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/FolderListDataHandler.cs new file mode 100644 index 0000000..894014e --- /dev/null +++ b/ClickUp/DataSourceHandlers/Folder/FolderListDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.List; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Folder; + +public class FolderListDataHandler : FolderDataHandler +{ + public FolderListDataHandler(InvocationContext invocationContext, [ActionParameter] ListRequest request) : + base(invocationContext, request.SpaceId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/FolderTaskDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/FolderTaskDataHandler.cs new file mode 100644 index 0000000..9f62583 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Folder/FolderTaskDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.Task; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Folder; + +public class FolderTaskDataHandler : FolderDataHandler +{ + public FolderTaskDataHandler(InvocationContext invocationContext, [ActionParameter] TaskRequest request) : + base(invocationContext, request.SpaceId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/PrimaryFolderDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/PrimaryFolderDataHandler.cs new file mode 100644 index 0000000..a626342 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Folder/PrimaryFolderDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.Folder; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Folder; + +public class PrimaryFolderDataHandler : FolderDataHandler +{ + public PrimaryFolderDataHandler(InvocationContext invocationContext, [ActionParameter] FolderRequest request) : + base(invocationContext, request.SpaceId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/GoalDataHandler.cs b/ClickUp/DataSourceHandlers/GoalDataHandler.cs new file mode 100644 index 0000000..429ce08 --- /dev/null +++ b/ClickUp/DataSourceHandlers/GoalDataHandler.cs @@ -0,0 +1,38 @@ +using Apps.ClickUp.Api; +using Apps.ClickUp.Constants; +using Apps.ClickUp.Invocables; +using Apps.ClickUp.Models.Request.Goal; +using Apps.ClickUp.Models.Response.Goal; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Invocation; +using RestSharp; + +namespace Apps.ClickUp.DataSourceHandlers; + +public class GoalDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +{ + private readonly GoalRequest _request; + + public GoalDataHandler(InvocationContext invocationContext, [ActionParameter] GoalRequest request) : base( + invocationContext) + { + _request = request; + } + + public async Task> GetDataAsync(DataSourceContext context, + CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(_request.TeamId)) + throw new("You should specify Team ID first"); + + var request = new ClickUpRequest($"{ApiEndpoints.Teams}/{_request.TeamId}/goal", Method.Get, Creds); + var teams = await Client.ExecuteWithErrorHandling(request); + + return teams.Goals + .Where(x => context.SearchString is null || + x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) + .Take(20) + .ToDictionary(x => x.Id, x => x.Name); + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/List/ListCustomFieldDataHandler.cs b/ClickUp/DataSourceHandlers/List/ListCustomFieldDataHandler.cs new file mode 100644 index 0000000..a83d8e5 --- /dev/null +++ b/ClickUp/DataSourceHandlers/List/ListCustomFieldDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.CustomField; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.List; + +public class ListCustomFieldDataHandler : ListDataHandler +{ + public ListCustomFieldDataHandler(InvocationContext invocationContext, [ActionParameter] CustomFieldRequest request) + : base(invocationContext, request.FolderId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/List/ListDataHandler.cs b/ClickUp/DataSourceHandlers/List/ListDataHandler.cs new file mode 100644 index 0000000..eed2e0b --- /dev/null +++ b/ClickUp/DataSourceHandlers/List/ListDataHandler.cs @@ -0,0 +1,35 @@ +using Apps.ClickUp.Api; +using Apps.ClickUp.Constants; +using Apps.ClickUp.Invocables; +using Apps.ClickUp.Models.Response.List; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Invocation; +using RestSharp; + +namespace Apps.ClickUp.DataSourceHandlers.List; + +public class ListDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +{ + private readonly string _folderId; + + public ListDataHandler(InvocationContext invocationContext, string folderId) : base(invocationContext) + { + _folderId = folderId; + } + + public async Task> GetDataAsync(DataSourceContext context, + CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(_folderId)) + throw new("You should specify Folder ID first"); + + var request = new ClickUpRequest($"{ApiEndpoints.Folders}/{_folderId}/list", Method.Get, Creds); + var teams = await Client.ExecuteWithErrorHandling(request); + + return teams.Lists + .Where(x => context.SearchString is null || + x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) + .Take(20) + .ToDictionary(x => x.Id, x => x.Name); + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/List/ListTaskDataHandler.cs b/ClickUp/DataSourceHandlers/List/ListTaskDataHandler.cs new file mode 100644 index 0000000..1cfcccc --- /dev/null +++ b/ClickUp/DataSourceHandlers/List/ListTaskDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.Task; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.List; + +public class ListTaskDataHandler : ListDataHandler +{ + public ListTaskDataHandler(InvocationContext invocationContext, [ActionParameter] TaskRequest request) : + base(invocationContext, request.FolderId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/List/PrimaryListDataHandler.cs b/ClickUp/DataSourceHandlers/List/PrimaryListDataHandler.cs new file mode 100644 index 0000000..5abd421 --- /dev/null +++ b/ClickUp/DataSourceHandlers/List/PrimaryListDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.List; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.List; + +public class PrimaryListDataHandler : ListDataHandler +{ + public PrimaryListDataHandler(InvocationContext invocationContext, [ActionParameter] ListRequest request) : base( + invocationContext, request.FolderId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/PrimarySpaceDataHandler.cs b/ClickUp/DataSourceHandlers/Space/PrimarySpaceDataHandler.cs new file mode 100644 index 0000000..14b79b8 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Space/PrimarySpaceDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.Space; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Space; + +public class PrimarySpaceDataHandler : SpaceDataHandler +{ + public PrimarySpaceDataHandler(InvocationContext invocationContext, [ActionParameter] SpaceRequest request) : + base(invocationContext, request.TeamId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceCustomFieldDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceCustomFieldDataHandler.cs new file mode 100644 index 0000000..f1811f5 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Space/SpaceCustomFieldDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.CustomField; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Space; + +public class SpaceCustomFieldDataHandler : SpaceDataHandler +{ + public SpaceCustomFieldDataHandler(InvocationContext invocationContext, [ActionParameter] CustomFieldRequest request) : + base(invocationContext, request.TeamId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceDataHandler.cs new file mode 100644 index 0000000..2acd598 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Space/SpaceDataHandler.cs @@ -0,0 +1,36 @@ +using Apps.ClickUp.Api; +using Apps.ClickUp.Constants; +using Apps.ClickUp.Invocables; +using Apps.ClickUp.Models.Response.Space; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Invocation; +using RestSharp; + +namespace Apps.ClickUp.DataSourceHandlers.Space; + +public class SpaceDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +{ + private readonly string _teamId; + + public SpaceDataHandler(InvocationContext invocationContext, string teamId) : base(invocationContext) + { + _teamId = teamId; + } + + public async Task> GetDataAsync(DataSourceContext context, + CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(_teamId)) + throw new("You should specify Team ID first"); + + var request = new ClickUpRequest($"{ApiEndpoints.Teams}/{_teamId}/space", Method.Get, Creds); + var teams = await Client.ExecuteWithErrorHandling(request); + + return teams.Spaces + .Where(x => x.Name != null) + .Where(x => context.SearchString is null || + x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) + .Take(20) + .ToDictionary(x => x.Id, x => x.Name); + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceFolderDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceFolderDataHandler.cs new file mode 100644 index 0000000..0e97a72 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Space/SpaceFolderDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.Folder; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Space; + +public class SpaceFolderDataHandler : SpaceDataHandler +{ + public SpaceFolderDataHandler(InvocationContext invocationContext, [ActionParameter] FolderRequest request) : + base(invocationContext, request.TeamId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceListDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceListDataHandler.cs new file mode 100644 index 0000000..9808f1f --- /dev/null +++ b/ClickUp/DataSourceHandlers/Space/SpaceListDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.List; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Space; + +public class SpaceListDataHandler : SpaceDataHandler +{ + public SpaceListDataHandler(InvocationContext invocationContext, [ActionParameter] ListRequest request) : + base(invocationContext, request.TeamId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceTagDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceTagDataHandler.cs new file mode 100644 index 0000000..1ae8bb1 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Space/SpaceTagDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.Tag; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Space; + +public class SpaceTagDataHandler : SpaceDataHandler +{ + public SpaceTagDataHandler(InvocationContext invocationContext, [ActionParameter] TagRequest request) : + base(invocationContext, request.TeamId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceTaskDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceTaskDataHandler.cs new file mode 100644 index 0000000..c6d4ce8 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Space/SpaceTaskDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.Task; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Space; + +public class SpaceTaskDataHandler : SpaceDataHandler +{ + public SpaceTaskDataHandler(InvocationContext invocationContext, [ActionParameter] TaskRequest request) : + base(invocationContext, request.TeamId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Static/KeyResultTypeDataHandler.cs b/ClickUp/DataSourceHandlers/Static/KeyResultTypeDataHandler.cs new file mode 100644 index 0000000..c84415d --- /dev/null +++ b/ClickUp/DataSourceHandlers/Static/KeyResultTypeDataHandler.cs @@ -0,0 +1,15 @@ +using Blackbird.Applications.Sdk.Common.Dictionaries; + +namespace Apps.ClickUp.DataSourceHandlers.Static; + +public class KeyResultTypeDataHandler : IStaticDataSourceHandler +{ + public Dictionary GetData() => new() + { + { "number", "Number" }, + { "currency", "Currency" }, + { "boolean", "Boolean" }, + { "percentage", "Percentage" }, + { "automatic", "Automatic" }, + }; +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Static/TaskPriorityDataHandler.cs b/ClickUp/DataSourceHandlers/Static/TaskPriorityDataHandler.cs new file mode 100644 index 0000000..9423c66 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Static/TaskPriorityDataHandler.cs @@ -0,0 +1,14 @@ +using Blackbird.Applications.Sdk.Common.Dictionaries; + +namespace Apps.ClickUp.DataSourceHandlers.Static; + +public class TaskPriorityDataHandler : IStaticDataSourceHandler +{ + public Dictionary GetData() => new() + { + { "1", "Urgent" }, + { "2", "High" }, + { "3", "Normal" }, + { "4", "Low" }, + }; +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/TagDataHandler.cs b/ClickUp/DataSourceHandlers/TagDataHandler.cs new file mode 100644 index 0000000..428b837 --- /dev/null +++ b/ClickUp/DataSourceHandlers/TagDataHandler.cs @@ -0,0 +1,38 @@ +using Apps.ClickUp.Api; +using Apps.ClickUp.Constants; +using Apps.ClickUp.Invocables; +using Apps.ClickUp.Models.Request.Tag; +using Apps.ClickUp.Models.Response.Tag; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Invocation; +using RestSharp; + +namespace Apps.ClickUp.DataSourceHandlers; + +public class TagDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +{ + private readonly TagRequest _request; + + public TagDataHandler(InvocationContext invocationContext, [ActionParameter] TagRequest request) : base( + invocationContext) + { + _request = request; + } + + public async Task> GetDataAsync(DataSourceContext context, + CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(_request.SpaceId)) + throw new("You should specify Space ID first"); + + var request = new ClickUpRequest($"{ApiEndpoints.Spaces}/{_request.SpaceId}/tag", Method.Get, Creds); + var teams = await Client.ExecuteWithErrorHandling(request); + + return teams.Tags + .Where(x => context.SearchString is null || + x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) + .Take(20) + .ToDictionary(x => x.Name, x => x.Name); + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Task/PrimaryTaskDataHandler.cs b/ClickUp/DataSourceHandlers/Task/PrimaryTaskDataHandler.cs new file mode 100644 index 0000000..a4eec28 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Task/PrimaryTaskDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.Task; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Task; + +public class PrimaryTaskDataHandler : TaskDataHandler +{ + public PrimaryTaskDataHandler(InvocationContext invocationContext, [ActionParameter] TaskRequest request) + : base(invocationContext, request.ListId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Task/TaskCustomFieldDataHandler.cs b/ClickUp/DataSourceHandlers/Task/TaskCustomFieldDataHandler.cs new file mode 100644 index 0000000..fcd174d --- /dev/null +++ b/ClickUp/DataSourceHandlers/Task/TaskCustomFieldDataHandler.cs @@ -0,0 +1,13 @@ +using Apps.ClickUp.Models.Request.CustomField; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.DataSourceHandlers.Task; + +public class TaskCustomFieldDataHandler : TaskDataHandler +{ + public TaskCustomFieldDataHandler(InvocationContext invocationContext, [ActionParameter] CustomFieldRequest request) + : base(invocationContext, request.ListId) + { + } +} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Task/TaskDataHandler.cs b/ClickUp/DataSourceHandlers/Task/TaskDataHandler.cs new file mode 100644 index 0000000..c15d965 --- /dev/null +++ b/ClickUp/DataSourceHandlers/Task/TaskDataHandler.cs @@ -0,0 +1,35 @@ +using Apps.ClickUp.Api; +using Apps.ClickUp.Constants; +using Apps.ClickUp.Invocables; +using Apps.ClickUp.Models.Response.Task; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Invocation; +using RestSharp; + +namespace Apps.ClickUp.DataSourceHandlers.Task; + +public class TaskDataHandler: ClickUpInvocable, IAsyncDataSourceHandler +{ + private readonly string _listId; + + public TaskDataHandler(InvocationContext invocationContext, string listId) : base(invocationContext) + { + _listId = listId; + } + + public async Task> GetDataAsync(DataSourceContext context, + CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(_listId)) + throw new("You should specify List ID first"); + + var request = new ClickUpRequest($"{ApiEndpoints.Lists}/{_listId}/task", Method.Get, Creds); + var teams = await Client.ExecuteWithErrorHandling(request); + + return teams.Tasks + .Where(x => context.SearchString is null || + x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) + .Take(20) + .ToDictionary(x => x.Id, x => x.Name); + } +} \ No newline at end of file diff --git a/ClickUp/Invocables/ClickUpInvocable.cs b/ClickUp/Invocables/ClickUpInvocable.cs new file mode 100644 index 0000000..48f6bf2 --- /dev/null +++ b/ClickUp/Invocables/ClickUpInvocable.cs @@ -0,0 +1,20 @@ +using Apps.ClickUp.Api; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Authentication; +using Blackbird.Applications.Sdk.Common.Invocation; + +namespace Apps.ClickUp.Invocables; + +public class ClickUpInvocable : BaseInvocable + +{ + protected IEnumerable Creds => + InvocationContext.AuthenticationCredentialsProviders; + + protected ClickUpClient Client { get; } + + public ClickUpInvocable(InvocationContext invocationContext) : base(invocationContext) + { + Client = new(); + } +} \ No newline at end of file diff --git a/ClickUp/Models/Request/Attachment/CreateAttachmentRequest.cs b/ClickUp/Models/Request/Attachment/CreateAttachmentRequest.cs index 6660d9b..ca8d607 100644 --- a/ClickUp/Models/Request/Attachment/CreateAttachmentRequest.cs +++ b/ClickUp/Models/Request/Attachment/CreateAttachmentRequest.cs @@ -5,9 +5,6 @@ namespace Apps.ClickUp.Models.Request.Attachment; public class CreateAttachmentRequest { - [Display("Task ID")] - public string TaskId { get; set; } - public FileReference File { get; set; } [Display("File name")] diff --git a/ClickUp/Models/Request/CreateRequestQuery.cs b/ClickUp/Models/Request/CreateRequestQuery.cs index 1323bf9..319e4cd 100644 --- a/ClickUp/Models/Request/CreateRequestQuery.cs +++ b/ClickUp/Models/Request/CreateRequestQuery.cs @@ -1,6 +1,4 @@ -using Apps.ClickUp.DataSourceHandlers; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common; using Newtonsoft.Json; namespace Apps.ClickUp.Models.Request; @@ -10,9 +8,4 @@ public class CreateRequestQuery [Display("Custom Task IDs")] [JsonProperty("custom_task_ids")] public bool? CustomTaskIds { get; set; } - - [Display("Team ID")] - [JsonProperty("team_id")] - [DataSource(typeof(TeamDataHandler))] - public string? TeamId { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/CustomField/CustomFieldRequest.cs b/ClickUp/Models/Request/CustomField/CustomFieldRequest.cs index 1f711e6..bf51222 100644 --- a/ClickUp/Models/Request/CustomField/CustomFieldRequest.cs +++ b/ClickUp/Models/Request/CustomField/CustomFieldRequest.cs @@ -1,10 +1,36 @@ -using Apps.ClickUp.Models.Request.Task; +using Apps.ClickUp.DataSourceHandlers; +using Apps.ClickUp.DataSourceHandlers.Folder; +using Apps.ClickUp.DataSourceHandlers.List; +using Apps.ClickUp.DataSourceHandlers.Space; +using Apps.ClickUp.DataSourceHandlers.Task; using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; namespace Apps.ClickUp.Models.Request.CustomField; -public class CustomFieldRequest : TaskRequest +public class CustomFieldRequest { + [Display("Team")] + [DataSource(typeof(TeamDataHandler))] + public string TeamId { get; set; } + + [Display("Space ID")] + [DataSource(typeof(SpaceCustomFieldDataHandler))] + public string SpaceId { get; set; } + + [Display("Folder ID")] + [DataSource(typeof(FolderCustomFieldDataHandler))] + public string FolderId { get; set; } + + [Display("List ID")] + [DataSource(typeof(ListCustomFieldDataHandler))] + public string ListId { get; set; } + + [Display("Task ID")] + [DataSource(typeof(TaskCustomFieldDataHandler))] + public string TaskId { get; set; } + [Display("Field ID")] + [DataSource(typeof(CustomFieldDataHandler))] public string FieldId { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Folder/FolderRequest.cs b/ClickUp/Models/Request/Folder/FolderRequest.cs index 91a35fd..18e5363 100644 --- a/ClickUp/Models/Request/Folder/FolderRequest.cs +++ b/ClickUp/Models/Request/Folder/FolderRequest.cs @@ -1,9 +1,22 @@ -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.DataSourceHandlers; +using Apps.ClickUp.DataSourceHandlers.Folder; +using Apps.ClickUp.DataSourceHandlers.Space; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; namespace Apps.ClickUp.Models.Request.Folder; public class FolderRequest { + [Display("Team")] + [DataSource(typeof(TeamDataHandler))] + public string TeamId { get; set; } + + [Display("Space ID")] + [DataSource(typeof(SpaceFolderDataHandler))] + public string SpaceId { get; set; } + [Display("Folder ID")] + [DataSource(typeof(PrimaryFolderDataHandler))] public string FolderId { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Goal/CreateKeyResultRequest.cs b/ClickUp/Models/Request/Goal/CreateKeyResultRequest.cs index 264ab37..dac7396 100644 --- a/ClickUp/Models/Request/Goal/CreateKeyResultRequest.cs +++ b/ClickUp/Models/Request/Goal/CreateKeyResultRequest.cs @@ -1,6 +1,6 @@ -using Apps.ClickUp.DataSourceHandlers.EnumHandlers; +using Apps.ClickUp.DataSourceHandlers.Static; using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Dictionaries; namespace Apps.ClickUp.Models.Request.Goal; @@ -9,7 +9,7 @@ public class CreateKeyResultRequest public string Name { get; set; } public IEnumerable? Owners { get; set; } - [DataSource(typeof(KeyResultTypeDataHandler))] + [StaticDataSource(typeof(KeyResultTypeDataHandler))] public string Type { get; set; } [Display("Steps start")] diff --git a/ClickUp/Models/Request/Goal/GoalRequest.cs b/ClickUp/Models/Request/Goal/GoalRequest.cs index e7b6538..f93cdaa 100644 --- a/ClickUp/Models/Request/Goal/GoalRequest.cs +++ b/ClickUp/Models/Request/Goal/GoalRequest.cs @@ -1,9 +1,16 @@ -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.DataSourceHandlers; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; namespace Apps.ClickUp.Models.Request.Goal; public class GoalRequest { - [Display("Goal ID")] + [Display("Team")] + [DataSource(typeof(TeamDataHandler))] + public string TeamId { get; set; } + + [Display("Goal ID")] + [DataSource(typeof(GoalDataHandler))] public string GoalId { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Group/ListGroupsQuery.cs b/ClickUp/Models/Request/Group/ListGroupsQuery.cs index ddd6297..4f468e1 100644 --- a/ClickUp/Models/Request/Group/ListGroupsQuery.cs +++ b/ClickUp/Models/Request/Group/ListGroupsQuery.cs @@ -1,4 +1,6 @@ -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.DataSourceHandlers; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; using Newtonsoft.Json; namespace Apps.ClickUp.Models.Request.Group; @@ -7,6 +9,7 @@ public class ListGroupsQuery { [JsonProperty("team_id")] [Display("Team ID")] + [DataSource(typeof(TeamDataHandler))] public string? TeamId { get; set; } [JsonProperty("group_ids")] diff --git a/ClickUp/Models/Request/List/CreateListRequest.cs b/ClickUp/Models/Request/List/CreateListRequest.cs index cbd4e98..07fce72 100644 --- a/ClickUp/Models/Request/List/CreateListRequest.cs +++ b/ClickUp/Models/Request/List/CreateListRequest.cs @@ -1,7 +1,7 @@ -using Apps.ClickUp.DataSourceHandlers.EnumHandlers; +using Apps.ClickUp.DataSourceHandlers.Static; using Apps.ClickUp.Utils.Converters; using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Dictionaries; using Newtonsoft.Json; namespace Apps.ClickUp.Models.Request.List; @@ -19,7 +19,7 @@ public class CreateListRequest [Display("Due date time")] public bool? DueDateTime { get; set; } - [DataSource(typeof(TaskPriorityDataHandler))] + [StaticDataSource(typeof(TaskPriorityDataHandler))] public string? Priority { get; set; } [Display("Assignee ID")] diff --git a/ClickUp/Models/Request/List/ListRequest.cs b/ClickUp/Models/Request/List/ListRequest.cs index 8fafa2e..ec98698 100644 --- a/ClickUp/Models/Request/List/ListRequest.cs +++ b/ClickUp/Models/Request/List/ListRequest.cs @@ -1,9 +1,27 @@ -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.DataSourceHandlers; +using Apps.ClickUp.DataSourceHandlers.Folder; +using Apps.ClickUp.DataSourceHandlers.List; +using Apps.ClickUp.DataSourceHandlers.Space; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; namespace Apps.ClickUp.Models.Request.List; public class ListRequest { + [Display("Team")] + [DataSource(typeof(TeamDataHandler))] + public string TeamId { get; set; } + + [Display("Space ID")] + [DataSource(typeof(SpaceListDataHandler))] + public string SpaceId { get; set; } + + [Display("Folder ID")] + [DataSource(typeof(FolderListDataHandler))] + public string FolderId { get; set; } + [Display("List ID")] + [DataSource(typeof(PrimaryListDataHandler))] public string ListId { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Space/SpaceRequest.cs b/ClickUp/Models/Request/Space/SpaceRequest.cs index c11116c..53fa685 100644 --- a/ClickUp/Models/Request/Space/SpaceRequest.cs +++ b/ClickUp/Models/Request/Space/SpaceRequest.cs @@ -1,9 +1,17 @@ -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.DataSourceHandlers; +using Apps.ClickUp.DataSourceHandlers.Space; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; namespace Apps.ClickUp.Models.Request.Space; public class SpaceRequest { - [Display("Space ID")] + [Display("Team")] + [DataSource(typeof(TeamDataHandler))] + public string TeamId { get; set; } + + [Display("Space ID")] + [DataSource(typeof(PrimarySpaceDataHandler))] public string SpaceId { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Tag/TagRequest.cs b/ClickUp/Models/Request/Tag/TagRequest.cs index 50ba60e..fe71470 100644 --- a/ClickUp/Models/Request/Tag/TagRequest.cs +++ b/ClickUp/Models/Request/Tag/TagRequest.cs @@ -1,9 +1,21 @@ -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.DataSourceHandlers; +using Apps.ClickUp.DataSourceHandlers.Space; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; namespace Apps.ClickUp.Models.Request.Tag; public class TagRequest { + [Display("Team")] + [DataSource(typeof(TeamDataHandler))] + public string TeamId { get; set; } + + [Display("Space ID")] + [DataSource(typeof(SpaceTagDataHandler))] + public string SpaceId { get; set; } + [Display("Tag name")] + [DataSource(typeof(TagDataHandler))] public string TagName { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Task/CreateTaskRequest.cs b/ClickUp/Models/Request/Task/CreateTaskRequest.cs index ebfebe8..63aa57f 100644 --- a/ClickUp/Models/Request/Task/CreateTaskRequest.cs +++ b/ClickUp/Models/Request/Task/CreateTaskRequest.cs @@ -1,8 +1,7 @@ -using Apps.ClickUp.DataSourceHandlers.EnumHandlers; -using Apps.ClickUp.Models.Entities.Simple; +using Apps.ClickUp.DataSourceHandlers.Static; using Apps.ClickUp.Utils.Converters; using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Dictionaries; using Newtonsoft.Json; namespace Apps.ClickUp.Models.Request.Task; @@ -18,7 +17,7 @@ public class CreateTaskRequest public string? Status { get; set; } - [DataSource(typeof(TaskPriorityDataHandler))] + [StaticDataSource(typeof(TaskPriorityDataHandler))] public string? Priority { get; set; } [Display("Due date")] @@ -48,7 +47,4 @@ public class CreateTaskRequest [Display("Check required custom fields")] public bool? CheckRequiredCustomFields { get; set; } - - [Display("Custom fields")] - public IEnumerable? CustomFields { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Task/TaskRequest.cs b/ClickUp/Models/Request/Task/TaskRequest.cs index 85ea570..a9368a5 100644 --- a/ClickUp/Models/Request/Task/TaskRequest.cs +++ b/ClickUp/Models/Request/Task/TaskRequest.cs @@ -1,9 +1,32 @@ -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.DataSourceHandlers; +using Apps.ClickUp.DataSourceHandlers.Folder; +using Apps.ClickUp.DataSourceHandlers.List; +using Apps.ClickUp.DataSourceHandlers.Space; +using Apps.ClickUp.DataSourceHandlers.Task; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; namespace Apps.ClickUp.Models.Request.Task; public class TaskRequest { + [Display("Team")] + [DataSource(typeof(TeamDataHandler))] + public string TeamId { get; set; } + + [Display("Space ID")] + [DataSource(typeof(SpaceTaskDataHandler))] + public string SpaceId { get; set; } + + [Display("Folder ID")] + [DataSource(typeof(FolderTaskDataHandler))] + public string FolderId { get; set; } + + [Display("List ID")] + [DataSource(typeof(ListTaskDataHandler))] + public string ListId { get; set; } + [Display("Task ID")] + [DataSource(typeof(PrimaryTaskDataHandler))] public string TaskId { get; set; } } \ No newline at end of file