Esempio n. 1
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;
			}
		}
Esempio n. 2
0
		internal void OnDeserializedMethod(StreamingContext context)
		{
			// Load Workspaces //
			if (!ReferenceEquals(_deserializedWorkspaces, null))
			{
				if (ReferenceEquals(Workspaces, null))
				{
					// first deserialization
					Workspaces = new AsanaCollection<AsanaWorkspace>(_deserializedWorkspaces);
					if (_deserializedWorkspaces.Any())
						OnPropertyChanged("Workspaces");
				}
				else
				{
					var anythingChanged = Workspaces.Import(_deserializedWorkspaces);
					if (anythingChanged)
						OnPropertyChanged("Workspaces");
				}

				// cleanup
				_deserializedWorkspaces = null;
			}
			else if (ReferenceEquals(Workspaces, null))
			{
				Workspaces = new AsanaCollection<AsanaWorkspace>();
			}
			// ----------------------------- //

			// Load Tasks //
			if (!ReferenceEquals(_deserializedTasks, null))
			{
				if (ReferenceEquals(Tasks, null))
				{
					// first deserialization
					Tasks = new AsanaCollection<AsanaTask>(_deserializedTasks);
					if (_deserializedTasks.Any())
						OnPropertyChanged("Tasks");
				}
				else
				{
					var anythingChanged = Tasks.Import(_deserializedTasks);
					if (anythingChanged)
						OnPropertyChanged("Tasks");
				}

				// cleanup
				_deserializedTasks = null;
			}
			else if (ReferenceEquals(Tasks, null))
			{
				Tasks = new AsanaCollection<AsanaTask>();
			}
			// ----------------------------- //

		}
Esempio n. 3
0
		internal void OnDeserializedMethod(StreamingContext context)
		{
			// Load Projects //
			if (!ReferenceEquals(_deserializedProjects, null))
			{
				if (ReferenceEquals(Projects, null))
				{
					// first deserialization
					Projects = new AsanaCollection<AsanaProject>(_deserializedProjects);
					if (_deserializedProjects.Any())
						OnPropertyChanged("Projects");
				}
				else
				{
					var anythingChanged = Projects.Import(_deserializedProjects);
					if (anythingChanged)
						OnPropertyChanged("Projects");
				}

				// cleanup
				_deserializedProjects = null;
			}
			else if (ReferenceEquals(Projects, null))
			{
				Projects = new AsanaCollection<AsanaProject>();
			}
			// ----------------------------- //

			// Load Tags //
			if (!ReferenceEquals(_deserializedTags, null))
			{
				if (ReferenceEquals(Tags, null))
				{
					// first deserialization
					Tags = new AsanaCollection<AsanaTag>(_deserializedTags);
					if (_deserializedTags.Any())
						OnPropertyChanged("Tags");
				}
				else
				{
					var anythingChanged = Tags.Import(_deserializedTags);
					if (anythingChanged)
						OnPropertyChanged("Tags");
				}

				// cleanup
				_deserializedTags = null;
			}
			else if (ReferenceEquals(Tags, null))
			{
				Tags = new AsanaCollection<AsanaTag>();
			}
			// ----------------------------- //

			// Load Tasks //
			if (!ReferenceEquals(_deserializedTasks, null))
			{
				if (ReferenceEquals(Tasks, null))
				{
					// first deserialization
					Tasks = new AsanaCollection<AsanaTask>(_deserializedTasks);
					if (_deserializedTasks.Any())
						OnPropertyChanged("Tasks");
				}
				else
				{
					var anythingChanged = Tasks.Import(_deserializedTasks);
					if (anythingChanged)
						OnPropertyChanged("Tasks");
				}

				// cleanup
				_deserializedTasks = null;
			}
			else if (ReferenceEquals(Tasks, null))
			{
				Tasks = new AsanaCollection<AsanaTask>();
			}
			// ----------------------------- //

			// Load Teams //
			if (!ReferenceEquals(_deserializedTeams, null))
			{
				if (ReferenceEquals(Teams, null))
				{
					// first deserialization
					Teams = new AsanaReadOnlyCollection<AsanaTeam>(_deserializedTeams);
					if (_deserializedTeams.Any())
						OnPropertyChanged("Teams");
				}
				else
				{
					var anythingChanged = Teams.Import(_deserializedTeams);
					if (anythingChanged)
						OnPropertyChanged("Teams");
				}

				// cleanup
				_deserializedTeams = null;
			}
			else if (ReferenceEquals(Teams, null))
			{
				Teams = new AsanaReadOnlyCollection<AsanaTeam>();
			}
			// ----------------------------- //

			// Load QueryTasks //
			if (!ReferenceEquals(_deserializedQueryTasks, null))
			{
				if (ReferenceEquals(QueryTasks, null))
				{
					// first deserialization
					QueryTasks = new AsanaCollection<AsanaTask>(_deserializedQueryTasks);
					if (_deserializedQueryTasks.Any())
						OnPropertyChanged("QueryTasks");
				}
				else
				{
					var anythingChanged = QueryTasks.Import(_deserializedQueryTasks);
					if (anythingChanged)
						OnPropertyChanged("QueryTasks");
				}

				// cleanup
				_deserializedQueryTasks = null;
			}
			else if (ReferenceEquals(QueryTasks, null))
			{
				QueryTasks = new AsanaCollection<AsanaTask>();
			}
			// ----------------------------- //

			// Load QueryUsers //
			if (!ReferenceEquals(_deserializedQueryUsers, null))
			{
				if (ReferenceEquals(QueryUsers, null))
				{
					// first deserialization
					QueryUsers = new AsanaCollection<AsanaUser>(_deserializedQueryUsers);
					if (_deserializedQueryUsers.Any())
						OnPropertyChanged("QueryUsers");
				}
				else
				{
					var anythingChanged = QueryUsers.Import(_deserializedQueryUsers);
					if (anythingChanged)
						OnPropertyChanged("QueryUsers");
				}

				// cleanup
				_deserializedQueryUsers = null;
			}
			else if (ReferenceEquals(QueryUsers, null))
			{
				QueryUsers = new AsanaCollection<AsanaUser>();
			}
			// ----------------------------- //

			// Load QueryProjects //
			if (!ReferenceEquals(_deserializedQueryProjects, null))
			{
				if (ReferenceEquals(QueryProjects, null))
				{
					// first deserialization
					QueryProjects = new AsanaCollection<AsanaProject>(_deserializedQueryProjects);
					if (_deserializedQueryProjects.Any())
						OnPropertyChanged("QueryProjects");
				}
				else
				{
					var anythingChanged = QueryProjects.Import(_deserializedQueryProjects);
					if (anythingChanged)
						OnPropertyChanged("QueryProjects");
				}

				// cleanup
				_deserializedQueryProjects = null;
			}
			else if (ReferenceEquals(QueryProjects, null))
			{
				QueryProjects = new AsanaCollection<AsanaProject>();
			}
			// ----------------------------- //

			// Load QueryTags //
			if (!ReferenceEquals(_deserializedQueryTags, null))
			{
				if (ReferenceEquals(QueryTags, null))
				{
					// first deserialization
					QueryTags = new AsanaCollection<AsanaTag>(_deserializedQueryTags);
					if (_deserializedQueryTags.Any())
						OnPropertyChanged("QueryTags");
				}
				else
				{
					var anythingChanged = QueryTags.Import(_deserializedQueryTags);
					if (anythingChanged)
						OnPropertyChanged("QueryTags");
				}

				// cleanup
				_deserializedQueryTags = null;
			}
			else if (ReferenceEquals(QueryTags, null))
			{
				QueryTags = new AsanaCollection<AsanaTag>();
			}
			// ----------------------------- //

		}
Esempio n. 4
0
		/// <summary>
        /// Accesses the /workspaces/{id}/typeahead endpoint.
        /// </summary>
        /// <returns></returns>
		public async Task<AsanaCollection<AsanaTag>> GetQueryTags(string query, System.Nullable<int> limit = null, string optFields = null)
		{
			var request = new RestRequest("/workspaces/{id}/typeahead", Method.GET);
			request.AddUrlSegment("id", Id.ToString());
			request.AddParameter("type", "tag");
			request.AddParameter("query", query.ToString());
			if (!ReferenceEquals(limit, null))
				request.AddParameter("limit", limit.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<AsanaTag>>(AsanaHost.JsonDeserializer);
				
				if (ReferenceEquals(QueryTags, null))
				{
					QueryTags = new AsanaCollection<AsanaTag>(resultsCollection);
				}
				else
				{
					QueryTags.Import(resultsCollection);
				}

				AsanaHost.Cache.AsanaTagCollection.Import(resultsCollection, true);
				return QueryTags;
			}
		}
Esempio n. 5
0
		/// <summary>
        /// Accesses the /workspaces/{id}/projects endpoint.
        /// </summary>
        /// <returns></returns>
		public async Task<AsanaCollection<AsanaProject>> GetProjects(System.Nullable<bool> archived = null, string optFields = null)
		{
			var request = new RestRequest("/workspaces/{id}/projects", Method.GET);
			request.AddUrlSegment("id", Id.ToString());
			if (!ReferenceEquals(archived, null))
				request.AddParameter("archived", archived.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<AsanaProject>>(AsanaHost.JsonDeserializer);
				
				if (ReferenceEquals(Projects, null))
				{
					Projects = new AsanaCollection<AsanaProject>(resultsCollection);
				}
				else
				{
					Projects.Import(resultsCollection);
				}

				AsanaHost.Cache.AsanaProjectCollection.Import(resultsCollection, true);
				return Projects;
			}
		}
Esempio n. 6
0
		internal void OnDeserializedMethod(StreamingContext context)
		{
			// Load Followers //
			if (!ReferenceEquals(_deserializedFollowers, null))
			{
				if (ReferenceEquals(Followers, null))
				{
					// first deserialization
					Followers = new AsanaCollection<AsanaUser>(_deserializedFollowers);
					if (_deserializedFollowers.Any())
						OnPropertyChanged("Followers");
				}
				else
				{
					var anythingChanged = Followers.Import(_deserializedFollowers);
					if (anythingChanged)
						OnPropertyChanged("Followers");
				}

				// cleanup
				_deserializedFollowers = null;
			}
			else if (ReferenceEquals(Followers, null))
			{
				Followers = new AsanaCollection<AsanaUser>();
			}
			// ----------------------------- //

			// Load Tasks //
			if (!ReferenceEquals(_deserializedTasks, null))
			{
				if (ReferenceEquals(Tasks, null))
				{
					// first deserialization
					Tasks = new AsanaReadOnlyCollection<AsanaTask>(_deserializedTasks);
					if (_deserializedTasks.Any())
						OnPropertyChanged("Tasks");
				}
				else
				{
					var anythingChanged = Tasks.Import(_deserializedTasks);
					if (anythingChanged)
						OnPropertyChanged("Tasks");
				}

				// cleanup
				_deserializedTasks = null;
			}
			else if (ReferenceEquals(Tasks, null))
			{
				Tasks = new AsanaReadOnlyCollection<AsanaTask>();
			}
			// ----------------------------- //

		}
Esempio n. 7
0
		internal void OnDeserializedMethod(StreamingContext context)
		{
			// Load Followers //
			if (!ReferenceEquals(_deserializedFollowers, null))
			{
				if (ReferenceEquals(Followers, null))
				{
					// first deserialization
					Followers = new AsanaCollection<AsanaUser>(_deserializedFollowers);
					if (_deserializedFollowers.Any())
						OnPropertyChanged("Followers");
				}
				else
				{
					var anythingChanged = Followers.Import(_deserializedFollowers);
					if (anythingChanged)
						OnPropertyChanged("Followers");
				}

				// cleanup
				_deserializedFollowers = null;
			}
			else if (ReferenceEquals(Followers, null))
			{
				Followers = new AsanaCollection<AsanaUser>();
			}
			// ----------------------------- //

			// Load Hearts //
			if (!ReferenceEquals(_deserializedHearts, null))
			{
				if (ReferenceEquals(Hearts, null))
				{
					// first deserialization
					Hearts = new AsanaReadOnlyCollection<AsanaUser>(_deserializedHearts);
					if (_deserializedHearts.Any())
						OnPropertyChanged("Hearts");
				}
				else
				{
					var anythingChanged = Hearts.Import(_deserializedHearts);
					if (anythingChanged)
						OnPropertyChanged("Hearts");
				}

				// cleanup
				_deserializedHearts = null;
			}
			else if (ReferenceEquals(Hearts, null))
			{
				Hearts = new AsanaReadOnlyCollection<AsanaUser>();
			}
			// ----------------------------- //

			// Load Memberships //
			if (!ReferenceEquals(_deserializedMemberships, null))
			{
				if (ReferenceEquals(Memberships, null))
				{
					// first deserialization
					Memberships = new AsanaReadOnlyCollection<AsanaTaskMembership>(_deserializedMemberships);
					if (_deserializedMemberships.Any())
						OnPropertyChanged("Memberships");
				}
				else
				{
					var anythingChanged = Memberships.Import(_deserializedMemberships);
					if (anythingChanged)
						OnPropertyChanged("Memberships");
				}

				// cleanup
				_deserializedMemberships = null;
			}
			else if (ReferenceEquals(Memberships, null))
			{
				Memberships = new AsanaReadOnlyCollection<AsanaTaskMembership>();
			}
			// ----------------------------- //

			// Load Projects //
			if (!ReferenceEquals(_deserializedProjects, null))
			{
				if (ReferenceEquals(Projects, null))
				{
					// first deserialization
					Projects = new AsanaCollection<AsanaProject>(_deserializedProjects);
					if (_deserializedProjects.Any())
						OnPropertyChanged("Projects");
				}
				else
				{
					var anythingChanged = Projects.Import(_deserializedProjects);
					if (anythingChanged)
						OnPropertyChanged("Projects");
				}

				// cleanup
				_deserializedProjects = null;
			}
			else if (ReferenceEquals(Projects, null))
			{
				Projects = new AsanaCollection<AsanaProject>();
			}
			// ----------------------------- //

			// Load Tags //
			if (!ReferenceEquals(_deserializedTags, null))
			{
				if (ReferenceEquals(Tags, null))
				{
					// first deserialization
					Tags = new AsanaCollection<AsanaTag>(_deserializedTags);
					if (_deserializedTags.Any())
						OnPropertyChanged("Tags");
				}
				else
				{
					var anythingChanged = Tags.Import(_deserializedTags);
					if (anythingChanged)
						OnPropertyChanged("Tags");
				}

				// cleanup
				_deserializedTags = null;
			}
			else if (ReferenceEquals(Tags, null))
			{
				Tags = new AsanaCollection<AsanaTag>();
			}
			// ----------------------------- //

			// Load Subtasks //
			if (!ReferenceEquals(_deserializedSubtasks, null))
			{
				if (ReferenceEquals(Subtasks, null))
				{
					// first deserialization
					Subtasks = new AsanaReadOnlyCollection<AsanaTask>(_deserializedSubtasks);
					if (_deserializedSubtasks.Any())
						OnPropertyChanged("Subtasks");
				}
				else
				{
					var anythingChanged = Subtasks.Import(_deserializedSubtasks);
					if (anythingChanged)
						OnPropertyChanged("Subtasks");
				}

				// cleanup
				_deserializedSubtasks = null;
			}
			else if (ReferenceEquals(Subtasks, null))
			{
				Subtasks = new AsanaReadOnlyCollection<AsanaTask>();
			}
			// ----------------------------- //

			// Load Stories //
			if (!ReferenceEquals(_deserializedStories, null))
			{
				if (ReferenceEquals(Stories, null))
				{
					// first deserialization
					Stories = new AsanaReadOnlyCollection<AsanaStory>(_deserializedStories);
					if (_deserializedStories.Any())
						OnPropertyChanged("Stories");
				}
				else
				{
					var anythingChanged = Stories.Import(_deserializedStories);
					if (anythingChanged)
						OnPropertyChanged("Stories");
				}

				// cleanup
				_deserializedStories = null;
			}
			else if (ReferenceEquals(Stories, null))
			{
				Stories = new AsanaReadOnlyCollection<AsanaStory>();
			}
			// ----------------------------- //

			// Load Attachments //
			if (!ReferenceEquals(_deserializedAttachments, null))
			{
				if (ReferenceEquals(Attachments, null))
				{
					// first deserialization
					Attachments = new AsanaReadOnlyCollection<AsanaAttachment>(_deserializedAttachments);
					if (_deserializedAttachments.Any())
						OnPropertyChanged("Attachments");
				}
				else
				{
					var anythingChanged = Attachments.Import(_deserializedAttachments);
					if (anythingChanged)
						OnPropertyChanged("Attachments");
				}

				// cleanup
				_deserializedAttachments = null;
			}
			else if (ReferenceEquals(Attachments, null))
			{
				Attachments = new AsanaReadOnlyCollection<AsanaAttachment>();
			}
			// ----------------------------- //

		}