Beispiel #1
0
        async Task <T> IWrikeCommentsClient.CreateAsync <T>(T newComment, bool?plainText)
        {
            if (newComment == null)
            {
                throw new ArgumentNullException(nameof(newComment));
            }

            var requestUri = string.Empty;

            if (newComment is WrikeTaskComment)
            {
                requestUri = $"tasks/{(newComment as WrikeTaskComment).TaskId}/comments";
            }
            else
            {
                //newComment is WrikeFolderComment
                requestUri = $"folders/{(newComment as WrikeFolderComment).FolderId}/comments";
            }

            var postDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                  .AddParameter("plainText", plainText)
                                  .AddParameter("text", newComment.Text);

            var postContent = postDataBuilder.GetContent();

            var response = await SendRequest <T>(requestUri, HttpMethods.Post, postContent).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        async Task <WrikeFolder> IWrikeFoldersAndProjectsClient.UpdateAsync(WrikeClientIdParameter folderId, string title, string description, List <string> addParents, List <string> removeParents, List <string> addShareds, List <string> removeShareds, List <WrikeMetadata> metadata, bool?restore, List <WrikeCustomFieldData> customFields, List <string> customColumns, WrikeProject project)
        {
            if (title == null)
            {
                throw new ArgumentNullException(nameof(title));
            }

            if (title.Trim() == string.Empty)
            {
                throw new ArgumentException("value can not be empty", nameof(title));
            }

            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("title", title)
                                 .AddParameter("description", description)
                                 .AddParameter("addParents", addParents)
                                 .AddParameter("removeParents", removeParents)
                                 .AddParameter("addShareds", addShareds)
                                 .AddParameter("removeShareds", removeShareds)
                                 .AddParameter("metadata", metadata)
                                 .AddParameter("restore", restore)
                                 .AddParameter("customFields", customFields)
                                 .AddParameter("customColumns", customColumns)
                                 .AddParameter("project", project);

            var response = await SendRequest <WrikeFolder>($"folders/{folderId}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #3
0
        async Task <WrikeDependency> IWrikeDependenciesClient.UpdateAsync(WrikeClientIdParameter id, WrikeDependencyRelationType relationType)
        {
            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("relationType", relationType);

            var response = await SendRequest <WrikeDependency>($"dependencies/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #4
0
        async Task <WrikeUser> IWrikeContactsClient.UpdateAsync(WrikeClientIdParameter id, List <WrikeMetadata> metadata)
        {
            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("metadata", metadata);

            var response = await SendRequest <WrikeUser>($"contacts/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #5
0
        async Task <WrikeWebHook> IWrikeWebHooksClient.UpdateAsync(WrikeClientIdParameter webHookId, WrikeWebHookStatus status)
        {
            var putDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("status", status);

            var response = await SendRequest <WrikeWebHook>($"webhooks/{webHookId}", HttpMethods.Put, putDataBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #6
0
        async Task <WrikeWorkflow> IWrikeWorkflowsClient.UpdateAsync(WrikeClientIdParameter id, string name, bool?isHidden, WrikeCustomStatus customStatus)
        {
            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("name", name)
                                 .AddParameter("hidden", isHidden)
                                 .AddParameter("customStatus", customStatus);

            var response = await SendRequest <WrikeWorkflow>($"workflows/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #7
0
        async Task <WrikeInvitation> IWrikeInvitationsClient.UpdateAsync(WrikeClientIdParameter id, bool?resend, WrikeUserRole?role, bool?external)
        {
            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("resend", resend)
                                 .AddParameter("role", role)
                                 .AddParameter("external", external);

            var response = await SendRequest <WrikeInvitation>($"invitations/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        async Task <WrikeTimelog> IWrikeTimelogsClient.UpdateAsync(WrikeClientIdParameter id, string comment, int?hours, DateTime?trackedDate, bool?plainText, string categoryId)
        {
            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("comment", comment)
                                 .AddParameter("hours", hours)
                                 .AddParameter("trackedDate", trackedDate)
                                 .AddParameter("plainText", plainText)
                                 .AddParameter("categoryId", categoryId);

            var response = await SendRequest <WrikeTimelog>($"timelogs/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #9
0
        async Task <WrikeTask> IWrikeTasksClient.UpdateAsync(
            WrikeClientIdParameter id,
            string title,
            string description,
            WrikeTaskStatus?status,
            WrikeTaskImportance?importance,
            WrikeTaskDate dates,
            List <string> addParents,
            List <string> removeParents,
            List <string> addShareds,
            List <string> removeShareds,
            List <string> addResponsibles,
            List <string> removeResponsibles,
            List <string> addFollowers,
            bool?follow,
            string priorityBefore,
            string priorityAfter,
            List <string> addSuperTasks,
            List <string> removeSuperTasks,
            List <WrikeMetadata> metadata,
            List <WrikeCustomFieldData> customFields,
            string customStatus,
            bool?restore)
        {
            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("title", title)
                                 .AddParameter("description", description)
                                 .AddParameter("status", status)
                                 .AddParameter("importance", importance)
                                 .AddParameter("dates", dates)
                                 .AddParameter("addParents", addParents)
                                 .AddParameter("removeParents", removeParents)
                                 .AddParameter("addShareds", addShareds)
                                 .AddParameter("removeShareds", removeShareds)
                                 .AddParameter("addResponsibles", addResponsibles)
                                 .AddParameter("removeResponsibles", removeResponsibles)
                                 .AddParameter("addFollowers", addFollowers)
                                 .AddParameter("follow", follow)
                                 .AddParameter("priorityBefore", priorityBefore)
                                 .AddParameter("priorityAfter", priorityAfter)
                                 .AddParameter("addSuperTasks", addSuperTasks)
                                 .AddParameter("removeSuperTasks", removeSuperTasks)
                                 .AddParameter("metadata", metadata)
                                 .AddParameter("customFields", customFields)
                                 .AddParameter("customStatus", customStatus)
                                 .AddParameter("restore", restore);

            var response = await SendRequest <WrikeTask>($"tasks/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #10
0
        async Task <WrikeWorkflow> IWrikeWorkflowsClient.CreateAsync(WrikeWorkflow newWorkflow)
        {
            if (newWorkflow == null)
            {
                throw new ArgumentNullException(nameof(newWorkflow));
            }

            var postDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                  .AddParameter("name", newWorkflow.Name);

            var response = await SendRequest <WrikeWorkflow>("workflows", HttpMethods.Post, postDataBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #11
0
        async Task <WrikeUser> IWrikeUsersClient.UpdateAsync(WrikeClientIdParameter id, WrikeUserProfile profile)
        {
            if (profile == null)
            {
                throw new ArgumentNullException(nameof(profile));
            }

            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("profile", profile);

            var response = await SendRequest <WrikeUser>($"users/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #12
0
        async Task <WrikeGroup> IWrikeGroupsClient.UpdateAsync(WrikeClientIdParameter id, string title, List <string> membersToAdd, List <string> membersToRemove, string parentId, WrikeGroupAvatar avatar, List <WrikeMetadata> metaData)
        {
            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("title", title)
                                 .AddParameter("addMembers", membersToAdd)
                                 .AddParameter("removeMembers", membersToRemove)
                                 .AddParameter("parent", parentId)
                                 .AddParameter("avatar", avatar)
                                 .AddParameter("metadata", metaData);

            var response = await SendRequest <WrikeGroup>($"groups/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #13
0
        async Task <WrikeDependency> IWrikeDependenciesClient.CreateAsync(WrikeDependency newDependency)
        {
            if (newDependency == null)
            {
                throw new ArgumentNullException(nameof(newDependency));
            }

            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("relationType", newDependency.RelationType);

            contentBuilder.AddParameter("successorId", newDependency.SuccessorId);

            var response = await SendRequest <WrikeDependency>($"tasks/{newDependency.PredecessorId}/dependencies", HttpMethods.Post, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        async Task <WrikeCustomField> IWrikeCustomFieldsClient.CreateAsync(WrikeCustomField newCustomField)
        {
            if (newCustomField == null)
            {
                throw new ArgumentNullException(nameof(newCustomField));
            }

            var postDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                  .AddParameter("title", newCustomField.Title)
                                  .AddParameter("type", newCustomField.Type)
                                  .AddParameter("shareds", newCustomField.SharedIds)
                                  .AddParameter("settings", newCustomField.Settings);


            var response = await SendRequest <WrikeCustomField>("customfields",
                                                                HttpMethods.Post, postDataBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        async Task <WrikeCustomField> IWrikeCustomFieldsClient.UpdateAsync(
            WrikeClientIdParameter id,
            string title,
            WrikeCustomFieldType?type,
            List <string> addShareds,
            List <string> removeShareds,
            WrikeCustomFieldSettings settings)
        {
            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("title", title)
                                 .AddParameter("type", type)
                                 .AddParameter("addShareds", addShareds)
                                 .AddParameter("removeShareds", removeShareds)
                                 .AddParameter("settings", settings);

            var response = await SendRequest <WrikeCustomField>($"customfields/{id}", HttpMethods.Put, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        async Task <WrikeFolder> IWrikeFoldersAndProjectsClient.CreateAsync(WrikeClientIdParameter folderId, WrikeFolder newFolder)
        {
            if (newFolder == null)
            {
                throw new ArgumentNullException(nameof(newFolder));
            }

            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("title", newFolder.Title)
                                 .AddParameter("description", newFolder.Description)
                                 .AddParameter("shareds", newFolder.SharedIds)
                                 .AddParameter("metadata", newFolder.Metadata)
                                 .AddParameter("customFields", newFolder.CustomFields)
                                 .AddParameter("customColumns", newFolder.CustomColumnIds)
                                 .AddParameter("project", newFolder.Project);

            var response = await SendRequest <WrikeFolder>($"folders/{folderId}/folders", HttpMethods.Post, contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #17
0
        async Task <WrikeInvitation> IWrikeInvitationsClient.CreateAsync(WrikeInvitation newInvitation, string subject, string message)
        {
            if (newInvitation == null)
            {
                throw new ArgumentNullException(nameof(newInvitation));
            }

            var contenBuilder = new WrikeFormUrlEncodedContentBuilder()
                                .AddParameter("email", newInvitation.Email)
                                .AddParameter("firstName", newInvitation.FirstName)
                                .AddParameter("lastName", newInvitation.LastName)
                                .AddParameter("role", newInvitation.Role)
                                .AddParameter("external", newInvitation.External)
                                .AddParameter("subject", subject)
                                .AddParameter("message", message);

            var response = await SendRequest <WrikeInvitation>("invitations", HttpMethods.Post, contenBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        async Task <WrikeAccount> IWrikeAccountsClient.UpdateAsync(List <WrikeMetadata> metadataList)
        {
            if (metadataList == null)
            {
                throw new ArgumentNullException(nameof(metadataList));
            }

            if (metadataList.Count == 0)
            {
                throw new ArgumentException("value can not be empty", nameof(metadataList));
            }

            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("metadata", metadataList);

            var response = await SendRequest <WrikeAccount>($"account", HttpMethods.Put, contentBuilder.GetContent())
                           .ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #19
0
        async Task <WrikeGroup> IWrikeGroupsClient.CreateAsync(WrikeGroup newGroup, string parentId, WrikeGroupAvatar avatar)
        {
            if (newGroup == null)
            {
                throw new ArgumentNullException(nameof(newGroup));
            }

            var requestUri = $"groups";

            var postDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                  .AddParameter("title", newGroup.Title)
                                  .AddParameter("members", newGroup.MemberIds)
                                  .AddParameter("parent", parentId)
                                  .AddParameter("avatar", avatar)
                                  .AddParameter("metadata", newGroup.Metadata);

            var postContent = postDataBuilder.GetContent();
            var response    = await SendRequest <WrikeGroup>(requestUri, HttpMethods.Post, postContent).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        async Task <WrikeTimelog> IWrikeTimelogsClient.CreateAsync(WrikeTimelog newTimelog, bool?plainText)
        {
            if (newTimelog == null)
            {
                throw new ArgumentNullException(nameof(newTimelog));
            }

            var requestUri = $"tasks/{newTimelog.TaskId}/timelogs";

            var postDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                  .AddParameter("comment", newTimelog.Comment)
                                  .AddParameter("hours", newTimelog.Hours)
                                  .AddParameter("trackedDate", newTimelog.TrackedDate.ToString("yyyy-MM-dd"))
                                  .AddParameter("plainText", plainText)
                                  .AddParameter("categoryId", newTimelog.CategoryId);

            var postContent = postDataBuilder.GetContent();
            var response    = await SendRequest <WrikeTimelog>(requestUri, HttpMethods.Post, postContent).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #21
0
        async Task <WrikeComment> IWrikeCommentsClient.UpdateAsync(WrikeClientIdParameter id, string text, bool?plainText)
        {
            if (text == null)
            {
                throw new ArgumentNullException(nameof(text));
            }

            if (text.Trim() == string.Empty)
            {
                throw new ArgumentException("value can not be empty", nameof(text));
            }

            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("text", text)
                                 .AddParameter("plainText", plainText);

            var response = await SendRequest <WrikeComment>($"comments/{id}", HttpMethods.Put,
                                                            contentBuilder.GetContent(), new WrikeCommentConverter()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        async Task <WrikeFolder> IWrikeFoldersAndProjectsClient.CopyAsync(WrikeClientIdParameter folderId, WrikeClientIdParameter parentFolderId, string title, string titlePrefix, bool?copyDescriptions, bool?copyResponsibles, List <string> addResponsibles, List <string> removeResponsibles, bool copyCustomFields, bool copyCustomStatuses, bool copyStatuses, bool copyParents, DateTime?rescheduleDate, FolderRescheduleMode?rescheduleMode, int entryLimit)
        {
            if (title == null)
            {
                throw new ArgumentNullException(nameof(title));
            }

            if (title.Trim() == string.Empty)
            {
                throw new ArgumentException("title can not be empty", nameof(title));
            }

            if (entryLimit < 1 || entryLimit > 250)
            {
                throw new ArgumentOutOfRangeException(nameof(entryLimit), "value must be in [1,250] range");
            }

            var contentBuilder = new WrikeFormUrlEncodedContentBuilder()
                                 .AddParameter("parent", parentFolderId)
                                 .AddParameter("title", title)
                                 .AddParameter("titlePrefix", titlePrefix)
                                 .AddParameter("copyDescriptions", copyDescriptions)
                                 .AddParameter("copyResponsibles", copyResponsibles)
                                 .AddParameter("addResponsibles", addResponsibles)
                                 .AddParameter("removeResponsibles", removeResponsibles)
                                 .AddParameter("copyCustomFields", copyCustomFields)
                                 .AddParameter("copyCustomStatuses", copyCustomStatuses)
                                 .AddParameter("copyStatuses", copyStatuses)
                                 .AddParameter("copyParents", copyParents)
                                 .AddParameter("rescheduleDate", rescheduleDate, new CustomDateTimeConverter("yyyy-MM-dd"))
                                 .AddParameter("rescheduleMode", rescheduleMode)
                                 .AddParameter("entryLimit", entryLimit);

            var response = await SendRequest <WrikeFolder>($"copy_folder/{folderId}", HttpMethods.Post,
                                                           contentBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #23
0
        async Task <WrikeWebHook> IWrikeWebHooksClient.CreateAsync(WrikeWebHook newWebHook)
        {
            if (newWebHook == null)
            {
                throw new ArgumentNullException(nameof(newWebHook));
            }

            string requestUri = "webhooks";

            if (!string.IsNullOrWhiteSpace(newWebHook.FolderId))
            {
                requestUri = $"folders/{newWebHook.FolderId}/webhooks";
            }

            var postDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                  .AddParameter("hookUrl", newWebHook.HookUrl);


            var response = await SendRequest <WrikeWebHook>(requestUri,
                                                            HttpMethods.Post, postDataBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Beispiel #24
0
        async Task <WrikeTask> IWrikeTasksClient.CreateAsync(WrikeClientIdParameter folderId, WrikeTask newTask, string priorityBefore, string priorityAfter)
        {
            if (newTask == null)
            {
                throw new ArgumentNullException(nameof(newTask));
            }

            var postDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                  .AddParameter("title", newTask.Title)
                                  .AddParameter("description", newTask.Description)
                                  .AddParameter("importance", newTask.Importance)
                                  .AddParameter("dates", newTask.Dates)
                                  .AddParameter("shareds", newTask.SharedIds)
                                  .AddParameter("parents", newTask.ParentIds)
                                  .AddParameter("responsibles", newTask.ResponsibleIds)
                                  .AddParameter("followers", newTask.FollowerIds)
                                  .AddParameter("follow", newTask.FollowedByMe)
                                  .AddParameter("priorityBefore", priorityBefore)
                                  .AddParameter("priorityAfter", priorityAfter)
                                  .AddParameter("superTasks", newTask.SuperTaskIds)
                                  .AddParameter("metadata", newTask.Metadata)
                                  .AddParameter("customFields", newTask.CustomFields);

            if (string.IsNullOrWhiteSpace(newTask.CustomStatusId))
            {
                postDataBuilder.AddParameter("status", newTask.Status);
            }
            else
            {
                postDataBuilder.AddParameter("customStatus", newTask.CustomStatusId);
            }

            var response = await SendRequest <WrikeTask>($"folders/{folderId}/tasks", HttpMethods.Post, postDataBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }