Пример #1
0
        /// <summary>
        /// Retrieves the contacts having given type.
        /// </summary>
        /// <returns></returns>
        public static async Task <List <WrikeUser> > GetContactsByTypeAsync(this IWrikeContactsClient wrikeContactsClient,
                                                                            WrikeUserType type,
                                                                            bool?me = null,
                                                                            WrikeMetadata metadata = null,
                                                                            bool?isDeleted         = null,
                                                                            bool?retrieveMetadata  = null)
        {
            var contacts = await wrikeContactsClient.GetAsync(me, metadata, isDeleted, retrieveMetadata).ConfigureAwait(false);

            return(contacts.Where(c => c.Type == type).ToList());
        }
        async Task <WrikeAccount> IWrikeAccountsClient.GetAsync(WrikeMetadata metadata, List <string> optionalFields)
        {
            if (optionalFields != null && optionalFields.Count > 0 && optionalFields.Except(WrikeAccount.OptionalFields.List).Any())
            {
                throw new ArgumentOutOfRangeException(nameof(optionalFields), "Use only values in WrikeAccount.OptionalFields");
            }

            var uriBuilder = new WrikeUriBuilder("account")
                             .AddParameter("metadata", metadata).
                             AddParameter("fields", optionalFields);

            var response = await SendRequest <WrikeAccount>(uriBuilder.GetUri(), HttpMethods.Get).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
Пример #3
0
        async Task <List <WrikeUser> > IWrikeContactsClient.GetAsync(bool?me, WrikeMetadata metadata, bool?isDeleted, bool?retrieveMetadata)
        {
            var requestUri = "contacts";

            var uriBuilder = new WrikeUriBuilder(requestUri)
                             .AddParameter("me", me)
                             .AddParameter("metadata", metadata)
                             .AddParameter("deleted", isDeleted);

            if (retrieveMetadata.HasValue && retrieveMetadata == true)
            {
                var fields = new List <string> {
                    "metadata"
                };
                uriBuilder.AddParameter("fields", fields);
            }

            var response = await SendRequest <WrikeUser>(uriBuilder.GetUri(), HttpMethods.Get).ConfigureAwait(false);

            return(GetReponseDataList(response));
        }
Пример #4
0
        async Task <List <WrikeTask> > IWrikeTasksClient.GetAsync(string folderId, bool?addDescendants, string title, WrikeTaskStatus?status, WrikeTaskImportance?importance, IWrikeDateFilter startDate, IWrikeDateFilter dueDate, IWrikeDateFilter scheduledDate, WrikeDateFilterRange createdDate, WrikeDateFilterRange updatedDate, WrikeDateFilterRange completedDate, List <string> authors, List <string> responsibles, List <string> shareds, string permalink, WrikeTaskDateType?type, int?limit, WrikeTaskSortField?sortField, WrikeSortOrder?sortOrder, bool?addSubTasks, int?pageSize, string nextPageToken, WrikeMetadata metadata, WrikeCustomFieldData customField, List <string> customStatuses, List <string> fields)
        {
            var requestUri = "tasks";

            if (!string.IsNullOrWhiteSpace(folderId))
            {
                requestUri = $"folders/{folderId}/tasks";
            }

            var uriBuilder = new WrikeUriBuilder(requestUri)
                             .AddParameter("descendants", addDescendants)
                             .AddParameter("title", title)
                             .AddParameter("status", status)
                             .AddParameter("importance", importance)
                             .AddParameter("startDate", startDate, new CustomDateTimeConverter("yyyy-MM-dd'T'HH:mm:ss"))
                             .AddParameter("dueDate", dueDate, new CustomDateTimeConverter("yyyy-MM-dd'T'HH:mm:ss"))
                             .AddParameter("scheduledDate", scheduledDate, new CustomDateTimeConverter("yyyy-MM-dd"))
                             .AddParameter("createdDate", createdDate, new CustomDateTimeConverter("yyyy-MM-dd'T'HH:mm:ss'Z'"))
                             .AddParameter("updatedDate", updatedDate, new CustomDateTimeConverter("yyyy-MM-dd'T'HH:mm:ss'Z'"))
                             .AddParameter("completedDate", completedDate, new CustomDateTimeConverter("yyyy-MM-dd'T'HH:mm:ss'Z'"))
                             .AddParameter("authors", authors)
                             .AddParameter("responsibles", responsibles)
                             .AddParameter("shareds", shareds)
                             .AddParameter("permalink", permalink)
                             .AddParameter("type", type)
                             .AddParameter("limit", limit)
                             .AddParameter("sortField", sortField)
                             .AddParameter("sortOrder", sortOrder)
                             .AddParameter("subTasks", addSubTasks)
                             .AddParameter("pageSize", pageSize)
                             .AddParameter("nextPageToken", nextPageToken)
                             .AddParameter("metadata", metadata)
                             .AddParameter("customField", customField)
                             .AddParameter("customStatuses", customStatuses)
                             .AddParameter("fields", fields);

            var response = await SendRequest <WrikeTask>(uriBuilder.GetUri(), HttpMethods.Get).ConfigureAwait(false);

            _lastResponseSize  = response.ResponseSize;
            _lastNextPageToken = response.NextPageToken;


            return(GetReponseDataList(response));
        }
        async Task <List <WrikeFolderTree> > IWrikeFoldersAndProjectsClient.GetFolderTreeAsync(string folderId, string permalink, bool?addDescendants, WrikeMetadata metadata, WrikeCustomFieldData customField, WrikeDateFilterRange updatedDate, bool?isProject, bool?isDeleted, List <string> optionalFields)
        {
            if (optionalFields != null && optionalFields.Count > 0 && optionalFields.Except(WrikeFolderTree.OptionalFields.List).Any())
            {
                throw new ArgumentOutOfRangeException(nameof(optionalFields), "Use only values in WrikeFolderTree.OptionalFields");
            }

            var requestUri = "folders";

            bool useFolderId = !string.IsNullOrWhiteSpace(folderId);

            if (useFolderId)
            {
                requestUri = $"folders/{folderId}/folders";
            }

            var uriBuilder = new WrikeUriBuilder(requestUri)
                             .AddParameter("permalink", permalink)
                             .AddParameter("descendants", addDescendants)
                             .AddParameter("metadata", metadata)
                             .AddParameter("customField", customField)
                             .AddParameter("updatedDate", updatedDate, new CustomDateTimeConverter("yyyy-MM-dd'T'HH:mm:ss'Z'"))
                             .AddParameter("project", isProject)
                             .AddParameter("deleted", isDeleted)
                             .AddParameter("fields", optionalFields);

            if (!useFolderId)
            {
                uriBuilder.AddParameter("deleted", isDeleted);
            }

            var response = await SendRequest <WrikeFolderTree>(uriBuilder.GetUri(), HttpMethods.Get).ConfigureAwait(false);

            return(GetReponseDataList(response));
        }