/// <summary> /// Accesses the /users endpoint. /// </summary> /// <returns></returns> public async Task<AsanaReadOnlyCollection<AsanaUser>> GetUsers(string optFields = null) { var request = new RestRequest("/users", Method.GET); 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<AsanaUser>>(AsanaHost.JsonDeserializer); if (ReferenceEquals(Users, null)) { Users = new AsanaReadOnlyCollection<AsanaUser>(resultsCollection); } else { Users.Import(resultsCollection); } AsanaHost.Cache.AsanaUserCollection.Import(resultsCollection, true); return Users; } }
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>(); } // ----------------------------- // }
internal void OnDeserializedMethod(StreamingContext context) { // 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>(); } // ----------------------------- // }
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>(); } // ----------------------------- // }