public async Task<Resource> GetLoggedIn() { using (var client = new PlanboxClient(this.AccessToken, new HttpClientHandler() { CookieContainer = _cookieContainer })) { var kvps = new List<KeyValuePair<string, string>>(); var formContent = new FormUrlEncodedContent(kvps); HttpResponseMessage response = await client.PostAsync("api/get_logged_resource", formContent); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<ResourceResult>(); if (result.code == "ok") { return result.content; } else { return null; } } else { var result = await response.Content.ReadAsStringAsync(); return null; } } }
public async Task<bool> GetProducts() { using (var client = new PlanboxClient(this.AccessToken, new LoggingHandler(new HttpClientHandler() { CookieContainer = _cookieContainer }))) { var kvps = new List<KeyValuePair<string, string>>(); var formContent = new FormUrlEncodedContent(kvps); HttpResponseMessage response = await client.PostAsync("api/get_products", formContent); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<dynamic>(); if (result.code == "ok") { return true; } else { return false; } } else { var result = await response.Content.ReadAsStringAsync(); return false; } } }
public async Task<IEnumerable<Timesheet>> GetTimesheet(DateTime start, DateTime end) { using (var client = new PlanboxClient(this.AccessToken, new HttpClientHandler() { CookieContainer = _cookieContainer })) { var since = start.ToString("yyyy-MM-dd"); var until = end.ToString("yyyy-MM-dd"); var kvps = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("since", since), new KeyValuePair<string, string>("until", until) }; var formContent = new FormUrlEncodedContent(kvps); HttpResponseMessage response = await client.PostAsync("api/get_timesheet", formContent); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<TimesheetResult>(); if (result.code == "ok") { var timesheet = result.content; // Get your contacts var resources = await this.GetContacts(); // Translate that collection into Timesheet objects return timesheet.AsTimesheets(resources); } else { // TODO: result was not OK return new List<Timesheet>(); } } else { var result = await response.Content.ReadAsStringAsync(); throw new Exception(result); } } }
public async Task<IEnumerable<Resource>> GetResources(string product_id) { using (var client = new PlanboxClient(this.AccessToken, new HttpClientHandler() { CookieContainer = _cookieContainer })) { var kvps = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("product_id", product_id), }; var formContent = new FormUrlEncodedContent(kvps); HttpResponseMessage response = await client.PostAsync("api/get_resources", formContent); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<ResourcesResult>(); if (result.code == "ok") { var resources = result.content; return resources; } else { // TODO: result was not OK return new List<Resource>(); } } else { var result = await response.Content.ReadAsStringAsync(); throw new Exception(result); } } }
public async Task<IEnumerable<Story>> GetStories(string product_id, IEnumerable<string> iteration_ids = null, IEnumerable<string> resource_ids = null) { using (var client = new PlanboxClient(this.AccessToken, new HttpClientHandler() { CookieContainer = _cookieContainer })) { var kvps = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("product_id", product_id), }; if (iteration_ids != null) { kvps.AddRange(iteration_ids.Select(id => new KeyValuePair<string, string>("iteration_id[]", id))); } if (resource_ids != null) { kvps.AddRange(resource_ids.Select(id => new KeyValuePair<string, string>("resource_id[]", id))); } var formContent = new FormUrlEncodedContent(kvps); HttpResponseMessage response = await client.PostAsync("api/get_stories", formContent); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<StoriesResult>(); if (result.code == "ok") { var stories = result.content; return stories; } else { // TODO: result was not OK return new List<Story>(); } } else { var result = await response.Content.ReadAsStringAsync(); throw new Exception(result); } } }
public async Task<PlanboxTask> AddTask(string story_id, string name = null, string description = null, string tags = null, string resource_id = null, string role_id = null, string estimate = null, decimal? duration = null, DateTime? timer_start = null, int? timer_sum_in_seconds = null, string status = null) { using (var client = new PlanboxClient(this.AccessToken, new HttpClientHandler() { CookieContainer = _cookieContainer })) { var kvps = new List<KeyValuePair<string, string>>(); kvps.Add(new KeyValuePair<string, string>("story_id", story_id)); AddIfNotNull(kvps, "name", name); AddIfNotNull(kvps, "description", description); AddIfNotNull(kvps, "tags", tags); AddIfNotNull(kvps, "resource_id", resource_id); AddIfNotNull(kvps, "role_id", role_id); AddIfNotNull(kvps, "estimate", estimate); AddIfNotNull(kvps, "duration", duration); AddIfNotNull(kvps, "timer_start", timer_start); AddIfNotNull(kvps, "timer_sum_in_seconds", timer_sum_in_seconds); AddIfNotNull(kvps, "status", status); var formContent = new FormUrlEncodedContent(kvps); HttpResponseMessage response = await client.PostAsync("api/add_task", formContent); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<TaskResult>(); if (result.code == "ok") { return result.content; } else { return null; } } else { var result = await response.Content.ReadAsStringAsync(); return null; } } }
public async Task<Story> UpdateStoryStatus(string story_id, UpdateStoryAction action) { using (var client = new PlanboxClient(this.AccessToken, new HttpClientHandler() { CookieContainer = _cookieContainer })) { var kvps = new List<KeyValuePair<string, string>>(); kvps.Add(new KeyValuePair<string, string>("story_id", story_id)); kvps.Add(new KeyValuePair<string, string>("action", action.ToString())); var formContent = new FormUrlEncodedContent(kvps); HttpResponseMessage response = await client.PostAsync("nik/update_story_status", formContent); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<UpdateStoryStatusResult>(); if (result.code == "ok") { return result.content.story; } else { return null; } } else { var result = await response.Content.ReadAsStringAsync(); return null; } } }
public async Task<IEnumerable<Story>> UpdateStory(string story_id, string name = null, string status = null, string description = null, int? points = null) { using (var client = new PlanboxClient(this.AccessToken, new HttpClientHandler() { CookieContainer = _cookieContainer })) { var kvps = new List<KeyValuePair<string, string>>(); kvps.Add(new KeyValuePair<string, string>("story_id", story_id)); AddIfNotNull(kvps, "name", name); AddIfNotNull(kvps, "description", description); AddIfNotNull(kvps, "status", status); var formContent = new FormUrlEncodedContent(kvps); HttpResponseMessage response = await client.PostAsync("api/update_story", formContent); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsAsync<StoriesResult>(); if (result.code == "ok") { return result.content; } else { return null; } } else { var result = await response.Content.ReadAsStringAsync(); return null; } } }