Example #1
0
		/// <summary>
        /// Accesses the /tasks endpoint.
        /// </summary>
        /// <returns></returns>
		public AsanaTask NewTask(AsanaWorkspace workspace)
		{
			var request = new RestRequest("/tasks", Method.POST);
			request.AddParameter("assignee", Id.ToString());
			request.AddParameter("workspace", workspace.ToString());
			return new AsanaTask {CreateRequest = request, AsanaHost = AsanaHost}; // TODO: random minus ID ?
		}
Example #2
0
		/// <summary>
        /// Accesses the /tasks endpoint.
        /// </summary>
        /// <returns></returns>
		public async Task<AsanaCollection<AsanaTask>> GetTasks(AsanaWorkspace workspace, System.Nullable<System.DateTime> completedSince = null, System.Nullable<System.DateTime> modifiedSince = null, string optFields = null, bool completedSinceIsNow = false)
		{
			var request = new RestRequest("/tasks", Method.GET);
			request.AddParameter("workspace", workspace.ToString());
			request.AddParameter("assignee", Id.ToString());
			if (completedSinceIsNow)
				request.AddParameter("completed_since", "now");
			else
			if (!ReferenceEquals(completedSince, null))
				request.AddParameter("completed_since", completedSince.ToString());
			if (!ReferenceEquals(modifiedSince, null))
				request.AddParameter("modified_since", modifiedSince.ToString());
			if (!ReferenceEquals(optFields, null))
				request.AddParameter("opt_fields", optFields.ToString());
			// execute the request
			var response = await AsanaHost.RestClient.ExecuteTaskAsync(request);

			using (var stringReader = new StringReader(response.Content)) // raw content as string
            using (var reader = new JsonTextReader(stringReader))
            {
				var jsonData = AsanaHost.JsonDeserializer.Deserialize<AsanaArrayResponse>(reader);
                if (!ReferenceEquals(jsonData.Errors, null)) // || !string.IsNullOrEmpty(jsonData.Errors.Message)
                    throw new Exception("A remote error has occured: " + jsonData.Errors.First().Message);
				
				var resultsCollection = jsonData.Data.ToObject<List<AsanaTask>>(AsanaHost.JsonDeserializer);
				
				if (ReferenceEquals(Tasks, null))
				{
					Tasks = new AsanaCollection<AsanaTask>(resultsCollection);
				}
				else
				{
					Tasks.Import(resultsCollection);
				}

				AsanaHost.Cache.AsanaTaskCollection.Import(resultsCollection, true);
				return Tasks;
			}
		}