/// <summary> /// 获取项目的任务列表 /// </summary> /// <param name="ProjectId">项目id</param> /// <param name="Type">任务类型:all:默认,completed:已完成,uncompleted:未完成,expired:已过期</param> /// <returns>ObservableCollection<Task></returns> public static async Task<ObservableCollection<Worktile.Model.Task>> GetProjectTaskList(string ProjectId, string Type = "all") { string url = apiUrl + "tasks" ; Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("pid", ProjectId); parameters.Add("access_token", AccessToken); parameters.Add("type", Type); parameters.Add("rnd", new Random(100).Next().ToString()); string json = await Helper.HttpHelper.DoGet(url, parameters); if (string.IsNullOrEmpty(json)) { return null; } else { //开始解析返回数据 try { Debug.WriteLine("开始解析返回json---\n" + json); JArray result = JArray.Parse(json); Debug.WriteLine("解析返回json成功---\n"); ObservableCollection<Model.Task> TaskList = new ObservableCollection<Model.Task>(); foreach (JObject obj in result) { Model.Task task = new Model.Task(); task.Name = obj["name"].ToString(); task.Pid = obj["pid"].ToString(); task.Tid = obj["tid"].ToString(); task.EntryId = obj["entry_id"].ToString(); task.EntryName = obj["entry_name"].ToString(); task.CreateTime = (DateTime)obj["created_at"]; task.UpdateTime = (DateTime)obj["updated_at"]; task.Position = (int)obj["pos"]; foreach (JObject jLabel in (JArray)obj["labels"]) { Label label = new Label(); label.Name = jLabel["name"].ToString(); label.Color = label.Name.Substring(0, 1).ToUpper() + label.Name.Substring(1); label.Description = jLabel["desc"].ToString(); task.Labels.Add(label); } foreach (JObject jTodo in (JArray)obj["todos"]) { Todo todo = new Todo(); todo.TodoId = jTodo["todo_id"].ToString(); todo.Name = jTodo["name"].ToString(); todo.Checked = (Model.Task.TaskCompleted)int.Parse(jTodo["checked"].ToString()); todo.Position = jTodo["pos"].ToString(); task.Todos.Add(todo); } JObject jBadge = (JObject)obj["badges"]; TaskBadge badge = new TaskBadge(); if (!string.IsNullOrEmpty(jBadge["expire_date"].ToString())) { badge.ExpireDate = (DateTime)jBadge["expire_date"]; } badge.CommentCount = (int)jBadge["comment_count"]; badge.TodoCheckedCount = (int)jBadge["todo_checked_count"]; badge.TodoCount = (int)jBadge["todo_count"]; badge.FileCount = (int)jBadge["file_count"]; task.Badges = badge; foreach (JObject jWacher in (JArray)obj["watchers"]) { MemberInfo wacher = new MemberInfo(); wacher.Uid = jWacher["uid"].ToString(); wacher.Name = jWacher["name"].ToString(); wacher.NickName = jWacher["display_name"].ToString(); wacher.HeadImage = jWacher["avatar"].ToString(); wacher.Description = jWacher["desc"].ToString(); wacher.Status = (UserProfile.UserStatus)int.Parse(jWacher["status"].ToString()); wacher.Online = (UserProfile.UserOnline)int.Parse(jWacher["online"].ToString()); task.Watchers.Add(wacher); } foreach (JObject jMember in (JArray)obj["members"]) { MemberInfo member = new MemberInfo(); member.Uid = jMember["uid"].ToString(); member.Name = jMember["name"].ToString(); member.NickName = jMember["display_name"].ToString(); member.HeadImage = jMember["avatar"].ToString(); member.Description = jMember["desc"].ToString(); member.Status = (UserProfile.UserStatus)int.Parse(jMember["status"].ToString()); member.Online = (UserProfile.UserOnline)int.Parse(jMember["online"].ToString()); task.Members.Add(member); } task.Completed = (Model.Task.TaskCompleted)int.Parse(obj["completed"].ToString()); if (!string.IsNullOrEmpty(obj["expire_date"].ToString())) { task.ExpireDate = (DateTime)obj["expire_date"]; } task.Description = obj["desc"].ToString(); ProjectInfo project = new ProjectInfo(); JObject jProject = (JObject)obj["project"]; project.Pid = jProject["pid"].ToString(); project.Name = jProject["name"].ToString(); project.Picture = jProject["pic"].ToString(); project.BackgroundColor = jProject["bg"].ToString(); task.Project = project; TaskList.Add(task); } return TaskList; } catch (Exception) { Debug.WriteLine("解析返回json失败---\n" + json); return null; } } }
/// <summary> /// 获取项目成员 /// </summary> /// <param name="ProjectId">项目id</param> /// <returns>ObservableCollection<MemberInfo></returns> public static async Task<ObservableCollection<MemberInfo>> GetProjectMembers(string ProjectId) { string url = apiUrl + "projects/" + ProjectId + "/members"; Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("access_token", AccessToken); string json = await Helper.HttpHelper.DoGet(url, parameters); if (string.IsNullOrEmpty(json)) { return null; } else { //开始解析返回数据 try { Debug.WriteLine("开始解析返回json---\n" + json); JArray result = JArray.Parse(json); Debug.WriteLine("解析返回json成功---\n"); ObservableCollection<MemberInfo> MemberList = new ObservableCollection<MemberInfo>(); foreach (JObject obj in result) { MemberInfo member = new MemberInfo(); member.Uid = obj["uid"].ToString(); member.Name = obj["name"].ToString(); member.NickName = obj["display_name"].ToString(); member.HeadImage = obj["avatar"].ToString(); member.Description = obj["desc"].ToString(); member.Status = (UserProfile.UserStatus)int.Parse(obj["status"].ToString()); member.Online = (UserProfile.UserOnline)int.Parse(obj["online"].ToString()); member.Role = (MemberInfo.MemberRole)int.Parse(obj["role"].ToString()); MemberList.Add(member); } return MemberList; } catch (Exception) { Debug.WriteLine("解析返回json失败---\n" + json); return null; } } }
/// <summary> /// 项目添加成员 /// </summary> /// <param name="ProjectId">项目id</param> /// <param name="UserId">用户id</param> /// <param name="Role">用户角色</param> /// <returns>MemberInfo</returns> public async static Task<MemberInfo> AddProjectMember(string ProjectId, string UserId,MemberInfo.MemberRole Role) { string url = apiUrl + "projects/" + ProjectId + "/members"; Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("pid", ProjectId); parameters.Add("access_token", AccessToken); parameters.Add("role", Role.ToString()); string json = await Helper.HttpHelper.DoPost(url, parameters); if (string.IsNullOrEmpty(json)) { return null; } else { //开始解析返回数据 try { Debug.WriteLine("开始解析返回json---\n" + json); JObject result = JObject.Parse(json); Debug.WriteLine("解析返回json成功---\n"); MemberInfo member = new MemberInfo(); member.Uid = result["uid"].ToString(); member.Name = result["name"].ToString(); member.NickName = result["display_name"].ToString(); member.HeadImage = result["avatar"].ToString(); member.Description = result["desc"].ToString(); member.Status = (UserProfile.UserStatus)int.Parse(result["status"].ToString()); member.Online = (UserProfile.UserOnline)int.Parse(result["online"].ToString()); member.Role = (MemberInfo.MemberRole)int.Parse(result["role"].ToString()); return member; } catch (Exception) { Debug.WriteLine("解析返回json失败---\n" + json); return null; } } }
/// <summary> /// 文档详情 /// </summary> /// <param name="ProjectId">项目id</param> /// <param name="PageId">文档id</param> /// <returns>Page</returns> public static async Task<Page> GetPageDetail(string ProjectId, string PageId) { string url = apiUrl + "pages/" + PageId; Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("access_token", AccessToken); parameters.Add("pid", ProjectId); string json = await Helper.HttpHelper.DoGet(url, parameters); if (string.IsNullOrEmpty(json)) { return null; } else { //开始解析返回数据 try { Debug.WriteLine("开始解析返回json---\n" + json); JArray result = JArray.Parse(json); Debug.WriteLine("解析返回json成功---\n"); Page page = new Page(); page.PageId = result["page_id"].ToString(); page.ParentId = result["parent_id"].ToString(); page.Pid = result["pid"].ToString(); page.Name = result["name"].ToString(); page.Summary = result["summary"].ToString(); page.Content = result["content"].ToString(); page.CreateTime = (DateTime)result["created_at"]; page.UpdateTime = (DateTime)result["updated_at"]; foreach (JObject jWacher in (JArray)result["watchers"]) { MemberInfo wacher = new MemberInfo(); wacher.Uid = jWacher["uid"].ToString(); wacher.Name = jWacher["name"].ToString(); wacher.NickName = jWacher["display_name"].ToString(); wacher.HeadImage = jWacher["avatar"].ToString(); wacher.Description = jWacher["desc"].ToString(); wacher.Status = (UserProfile.UserStatus)int.Parse(jWacher["status"].ToString()); wacher.Online = (UserProfile.UserOnline)int.Parse(jWacher["online"].ToString()); page.Watchers.Add(wacher); } JObject jOwner = (JObject)result["owner"]; MemberInfo owner = new MemberInfo(); owner.Uid = jOwner["uid"].ToString(); owner.Name = jOwner["name"].ToString(); owner.NickName = jOwner["display_name"].ToString(); owner.HeadImage = jOwner["avatar"].ToString(); owner.Description = jOwner["desc"].ToString(); owner.Status = (UserProfile.UserStatus)int.Parse(jOwner["status"].ToString()); owner.Online = (UserProfile.UserOnline)int.Parse(jOwner["online"].ToString()); page.Owner = owner; return page; } catch (Exception) { Debug.WriteLine("解析返回json失败---\n" + json); return null; } } }
/// <summary> /// 新建文档 /// </summary> /// <param name="ProjectId">项目id</param> /// <param name="Name">文档名称</param> /// <param name="Content">文档内容</param> /// <returns>Page</returns> public static async Task<Page> CreatePage(string ProjectId, string Name, string Content) { string url = apiUrl + "page?pid=" + ProjectId + "&access_token=" + AccessToken; Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("name", Name); parameters.Add("content", Content); string json = await Helper.HttpHelper.DoPost(url, parameters); if (string.IsNullOrEmpty(json)) { return null; } else { //开始解析返回数据 try { Debug.WriteLine("开始解析返回json---\n" + json); JObject result = JObject.Parse(json); Debug.WriteLine("解析返回json成功---\n"); Page page = new Page(); page.PageId = result["page_id"].ToString(); page.ParentId = result["parent_id"].ToString(); page.Pid = result["pid"].ToString(); page.Name = result["name"].ToString(); page.Summary = result["summary"].ToString(); //page.Content = result["content"].ToString(); page.CreateTime = (DateTime)result["created_at"]; page.UpdateTime = (DateTime)result["updated_at"]; JObject jOwner = (JObject)result["owner"]; MemberInfo owner = new MemberInfo(); owner.Uid = jOwner["uid"].ToString(); owner.Name = jOwner["name"].ToString(); owner.NickName = jOwner["display_name"].ToString(); owner.HeadImage = jOwner["avatar"].ToString(); owner.Description = jOwner["desc"].ToString(); owner.Status = (UserProfile.UserStatus)int.Parse(jOwner["status"].ToString()); owner.Online = (UserProfile.UserOnline)int.Parse(jOwner["online"].ToString()); page.Owner = owner; return page; } catch (Exception) { Debug.WriteLine("解析返回json失败---\n" + json); return null; } } }
/// <summary> /// 获取话题列表 /// </summary> /// <param name="ProjectId">项目id</param> /// <returns>ObservableCollection<Post></returns> public static async Task<ObservableCollection<Post>> GetPostList(string ProjectId) { string url = apiUrl + "posts"; Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("access_token", AccessToken); parameters.Add("pid", ProjectId); string json = await Helper.HttpHelper.DoGet(url, parameters); if (string.IsNullOrEmpty(json)) { return null; } else { //开始解析返回数据 try { Debug.WriteLine("开始解析返回json---\n" + json); JArray result = JArray.Parse(json); Debug.WriteLine("解析返回json成功---\n"); ObservableCollection<Post> PostList = new ObservableCollection<Post>(); foreach (JObject obj in result) { Post post = new Post(); post.PostId = obj["post_id"].ToString(); post.Pid = obj["pid"].ToString(); post.Name = obj["name"].ToString(); post.Summary = obj["summary"].ToString(); post.Content = obj["content"].ToString(); post.CreateTime = (DateTime)obj["created_at"]; post.UpdateTime = (DateTime)obj["updated_at"]; foreach (JObject jWacher in (JArray)obj["watchers"]) { MemberInfo wacher = new MemberInfo(); wacher.Uid = jWacher["uid"].ToString(); wacher.Name = jWacher["name"].ToString(); wacher.NickName = jWacher["display_name"].ToString(); wacher.HeadImage = jWacher["avatar"].ToString(); wacher.Description = jWacher["desc"].ToString(); wacher.Status = (UserProfile.UserStatus)int.Parse(jWacher["status"].ToString()); wacher.Online = (UserProfile.UserOnline)int.Parse(jWacher["online"].ToString()); post.Watchers.Add(wacher); } JObject jOwner = (JObject)obj["owner"]; MemberInfo owner = new MemberInfo(); owner.Uid = jOwner["uid"].ToString(); owner.Name = jOwner["name"].ToString(); owner.NickName = jOwner["display_name"].ToString(); owner.HeadImage = jOwner["avatar"].ToString(); owner.Description = jOwner["desc"].ToString(); owner.Status = (UserProfile.UserStatus)int.Parse(jOwner["status"].ToString()); owner.Online = (UserProfile.UserOnline)int.Parse(jOwner["online"].ToString()); post.Owner = owner; PostList.Add(post); } return PostList; } catch (Exception) { Debug.WriteLine("解析返回json失败---\n" + json); return null; } } }
/// <summary> /// 文件/文件夹列表 /// </summary> /// <param name="ProjectId">项目id</param> /// <param name="FolderId">文件夹id </param> /// <returns>ObservableCollection<File></returns> public static async Task<ObservableCollection<File>> GetFileList(string ProjectId,string FolderId) { string url = apiUrl + "files"; Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("access_token", AccessToken); parameters.Add("folder_id", FolderId); parameters.Add("pid", ProjectId); string json = await Helper.HttpHelper.DoGet(url, parameters); if (string.IsNullOrEmpty(json)) { return null; } else { //开始解析返回数据 try { Debug.WriteLine("开始解析返回json---\n" + json); JArray result = JArray.Parse(json); Debug.WriteLine("解析返回json成功---\n"); ObservableCollection<File> FileList = new ObservableCollection<File>(); foreach (JObject obj in result) { File file = new File(); file.Fid = obj["fid"].ToString(); file.Name = obj["name"].ToString(); file.Description = obj["desc"].ToString(); file.Pid = obj["pid"].ToString(); file.Path = obj["path"].ToString(); file.FolderId = obj["folder_id"].ToString(); file.FolderName = obj["folder_name"].ToString(); file.Type = (File.FileType)Convert.ToInt32(obj["type"].ToString()); file.CreateTime = (DateTime)obj["created_at"]; file.UpdateTime = (DateTime)obj["updated_at"]; foreach (JObject jWacher in (JArray)obj["watchers"]) { MemberInfo wacher = new MemberInfo(); wacher.Uid = jWacher["uid"].ToString(); wacher.Name = jWacher["name"].ToString(); wacher.NickName = jWacher["display_name"].ToString(); wacher.HeadImage = jWacher["avatar"].ToString(); wacher.Description = jWacher["desc"].ToString(); wacher.Status = (UserProfile.UserStatus)int.Parse(jWacher["status"].ToString()); wacher.Online = (UserProfile.UserOnline)int.Parse(jWacher["online"].ToString()); file.Watchers.Add(wacher); } JObject jOwner = (JObject)obj["owner"]; MemberInfo owner = new MemberInfo(); owner.Uid = jOwner["uid"].ToString(); owner.Name = jOwner["name"].ToString(); owner.NickName = jOwner["display_name"].ToString(); owner.HeadImage = jOwner["avatar"].ToString(); owner.Description = jOwner["desc"].ToString(); owner.Status = (UserProfile.UserStatus)int.Parse(jOwner["status"].ToString()); owner.Online = (UserProfile.UserOnline)int.Parse(jOwner["online"].ToString()); file.Owner = owner; FileList.Add(file); } return FileList; } catch (Exception) { Debug.WriteLine("解析返回json失败---\n" + json); return null; } } }
/// <summary> /// 创建任务 /// </summary> /// <param name="ProjectId">项目id</param> /// <param name="EntryId">任务组id</param> /// <param name="TaskName">任务名称</param> /// <param name="Description">任务描述</param> /// <returns>Task</returns> public async static Task<Model.Task> CreateTask(string ProjectId,string EntryId, string TaskName,string Description) { string url = apiUrl + "task" + "?pid=" + ProjectId + "&access_token=" + AccessToken; Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("entry_id", EntryId); parameters.Add("name", TaskName); parameters.Add("desc", Description); string json = await Helper.HttpHelper.DoPost(url, parameters); if (string.IsNullOrEmpty(json)) { return null; } else { //开始解析返回数据 try { Debug.WriteLine("开始解析返回json---\n" + json); JObject result = JObject.Parse(json); Debug.WriteLine("解析返回json成功---\n"); Model.Task task = new Model.Task(); task.Name = result["name"].ToString(); task.Pid = result["pid"].ToString(); task.Tid = result["tid"].ToString(); task.EntryId = result["entry_id"].ToString(); task.EntryName = result["entry_name"].ToString(); task.CreateTime = (DateTime)result["created_at"]; task.UpdateTime = (DateTime)result["updated_at"]; task.Position = (int)result["pos"]; JObject jBadge = (JObject)result["badges"]; TaskBadge badge = new TaskBadge(); if (!string.IsNullOrEmpty(jBadge["expire_date"].ToString())) { badge.ExpireDate = (DateTime)jBadge["expire_date"]; } badge.CommentCount = (int)jBadge["comment_count"]; badge.TodoCheckedCount = (int)jBadge["todo_checked_count"]; badge.TodoCount = (int)jBadge["todo_count"]; badge.FileCount = (int)jBadge["file_count"]; task.Badges = badge; foreach (JObject jWacher in (JArray)result["watchers"]) { MemberInfo wacher = new MemberInfo(); wacher.Uid = jWacher["uid"].ToString(); wacher.Name = jWacher["name"].ToString(); wacher.NickName = jWacher["display_name"].ToString(); wacher.HeadImage = jWacher["avatar"].ToString(); wacher.Description = jWacher["desc"].ToString(); wacher.Status = (UserProfile.UserStatus)int.Parse(jWacher["status"].ToString()); wacher.Online = (UserProfile.UserOnline)int.Parse(jWacher["online"].ToString()); task.Watchers.Add(wacher); } foreach (JObject jMember in (JArray)result["members"]) { MemberInfo member = new MemberInfo(); member.Uid = jMember["uid"].ToString(); member.Name = jMember["name"].ToString(); member.NickName = jMember["display_name"].ToString(); member.HeadImage = jMember["avatar"].ToString(); member.Description = jMember["desc"].ToString(); member.Status = (UserProfile.UserStatus)int.Parse(jMember["status"].ToString()); member.Online = (UserProfile.UserOnline)int.Parse(jMember["online"].ToString()); task.Members.Add(member); } task.Completed = (Model.Task.TaskCompleted)int.Parse(result["completed"].ToString()); if (!string.IsNullOrEmpty(result["expire_date"].ToString())) { task.ExpireDate = (DateTime)result["expire_date"]; } task.Description = result["desc"].ToString(); ProjectInfo project = new ProjectInfo(); JObject jProject = (JObject)result["project"]; project.Pid = jProject["pid"].ToString(); project.Name = jProject["name"].ToString(); project.Picture = jProject["pic"].ToString(); project.BackgroundColor = jProject["bg"].ToString(); task.Project = project; return task; } catch (Exception) { Debug.WriteLine("解析返回json失败---\n" + json); return null; } } }