/// <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; } }
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>(); } // ----------------------------- // }
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>(); } // ----------------------------- // }
/// <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; } }
/// <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; } }
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>(); } // ----------------------------- // }
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>(); } // ----------------------------- // }