private async void UserControl_Loaded(object sender, RoutedEventArgs e) { string ed = @"https://api.africoders.com/v1/posts?category=blog&include=comment:order(id|asc)&order=id|asc&limit=10"; JsonObtainer jsonObtainer = new JsonObtainer(ed, "From_BOLKAY"); string json = await jsonObtainer.GetJsonStringAsync(); AfricoderSinglePost africoderSinglePost = JsonConvert.DeserializeObject <AfricoderSinglePost>(json); //JObject jObject = JObject.Parse(json); //JArray jArray = (JArray)jObject["data"]; //IList<AfricoderSinglePost> africoderSinglePosts = jArray.ToObject<IList<AfricoderSinglePost>>(); TheLB.ItemsSource = africoderSinglePost.data; MessageBox.Show("Sucess"); }
public virtual async Task ManageBlogPostsAsync(JsonObtainer jsonObtainer, BlogFeedControl blogFeedControl, int ID) { string jsonResult = await jsonObtainer.GetJsonStringAsync(); AfricoderBlogFeed africoderBlogFeed = JsonConvert.DeserializeObject <AfricoderBlogFeed>(jsonResult); if (jsonResult != string.Empty) { foreach (var result in africoderBlogFeed.data) { string date = result.created.date; string convertedTime = Convert.ToDateTime(DateTime.Parse(date)).ToString(("ddd, dd MMM yyyy hh:mm:tt")); result.created.date = convertedTime; } foreach (var dat in africoderBlogFeed.data) { dat.LoggedInID = ID; } blogFeedControl.TheLB.ItemsSource = africoderBlogFeed.data; } }
public virtual async Task ForumBoardManagement(JsonObtainer jsonObtainer, FORUMCONTROL forumControl) { //Get the json string json = await jsonObtainer.GetJsonStringAsync(); //map the obtained json to forum feed. ForumFeed forumFeed = Newtonsoft.Json.JsonConvert.DeserializeObject <ForumFeed>(json); //use the mapper class to get the general category ForumMapper forumMapper = new ForumMapper(); //Get the list of general categories from the forum feed. var generalCategories = forumMapper.GeneralCategories(forumFeed); //Get the list of web design categories var webCategories = forumMapper.WebCategories(forumFeed); //Get the mobile categories var mobileCategories = forumMapper.MobileCategories(forumFeed); //Finally set the datasource //Load the app categories var appCategories = forumMapper.AppCategories(forumFeed); //Get the database categories var databaseCategories = forumMapper.DatabaseCategories(forumFeed); //get the commmunity categories var communityCategories = forumMapper.CommunityCategories(forumFeed); foreach (var dat in webCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in generalCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in mobileCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in appCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in databaseCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in communityCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } forumControl.TheGeneralForumListBox.ItemsSource = generalCategories; forumControl.WebGeneralForumListBox.ItemsSource = webCategories; forumControl.MobileGeneralForumListBox.ItemsSource = mobileCategories; forumControl.AppGeneralForumListBox.ItemsSource = appCategories; forumControl.DatabaseGeneralForumListBox.ItemsSource = databaseCategories; forumControl.CommunityGeneralForumListBox.ItemsSource = communityCategories; }
/// <summary> /// Displays the links page and hides other sections. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void LinksButton_Click(object sender, RoutedEventArgs e) { SetThickness(LinksButton); currentPageTextBlock.Text = "LINKS"; theLinksControl.Visibility = Visibility.Hidden; theJobsControl.Visibility = Visibility.Hidden; theProfilePage.Visibility = Visibility.Hidden; WelcomeControl.Visibility = Visibility.Hidden; blogControl.Visibility = Visibility.Hidden; statusControl.Visibility = Visibility.Hidden; toolsControl.Visibility = Visibility.Hidden; forumControl.Visibility = Visibility.Hidden; helpControl.Visibility = Visibility.Hidden; theIndividualForumControl.Visibility = Visibility.Hidden; if (!LinksLoaded) { try { if (InternetChecker.InternetAvailable()) { temporaryBlogGrid.Visibility = Visibility.Visible; FetchText.Text = "Fetching links for you..."; jsonObtainer = new JsonObtainer(LinksEndpoint, "Bolkay_Links_Crawler"); string jsonResult = await jsonObtainer.GetJsonStringAsync(); AfricoderLinksFeed africoderLinksFeed = JsonConvert.DeserializeObject <AfricoderLinksFeed>(jsonResult); //Set the source accordingly. foreach (var dat in africoderLinksFeed.data) { string date = dat.created.date; string convertedTime = Convert.ToDateTime(DateTime.Parse(date)).ToString(("ddd, dd MMM yyyy hh:mm:tt")); dat.created.date = convertedTime; dat.LoggedInID = ID; } theLinksControl.TheListBox.ItemsSource = africoderLinksFeed.data; theLinksControl.Visibility = Visibility.Visible; temporaryBlogGrid.Visibility = Visibility.Hidden; LinksLoaded = true; } else { FetchText.Text = NetworkFailedMessage; } } catch { //Probably a failed message. string result = await jsonObtainer.GetJsonStringAsync(); MessageBox.Show(result); } } else { theLinksControl.Visibility = Visibility.Visible; //MessageBox.Show("Links loaded"); } }
/// <summary> /// Displays the Jobs page and hides other sections. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void JobsButton_Click(object sender, RoutedEventArgs e) { SetThickness(JobsButton); //Make the jobs control visible. theJobsControl.Visibility = Visibility.Hidden; theProfilePage.Visibility = Visibility.Hidden; WelcomeControl.Visibility = Visibility.Hidden; blogControl.Visibility = Visibility.Hidden; statusControl.Visibility = Visibility.Hidden; toolsControl.Visibility = Visibility.Hidden; theLinksControl.Visibility = Visibility.Hidden; forumControl.Visibility = Visibility.Hidden; helpControl.Visibility = Visibility.Hidden; theIndividualForumControl.Visibility = Visibility.Hidden; currentPageTextBlock.Text = "JOBS"; if (!JobsLoaded) { //Set the temporary blog gid visible temporaryBlogGrid.Visibility = Visibility.Visible; FetchText.Text = "Fetching available jobs for you..."; try { if (InternetChecker.InternetAvailable()) { jsonObtainer = new JsonObtainer(JobEndpoint, "The-Jobs-Finder-From-Bolkay"); string jsonResult = await jsonObtainer.GetJsonStringAsync(); AfricoderJobsFeed africoderJobsFeed = JsonConvert.DeserializeObject <AfricoderJobsFeed>(jsonResult); //Set the ID of the logged user. foreach (var dat in africoderJobsFeed.data) { string date = dat.created.date; string convertedTime = Convert.ToDateTime(DateTime.Parse(date)).ToString(("ddd, dd MMM yyyy hh:mm:tt")); dat.created.date = convertedTime; dat.LoggedID = ID; } //Set the data source accordingly. theJobsControl.TheListBox.ItemsSource = africoderJobsFeed.data; theJobsControl.Visibility = Visibility.Visible; temporaryBlogGrid.Visibility = Visibility.Hidden; JobsLoaded = true; } else { FetchText.Text = NetworkFailedMessage; } } catch { string result = await jsonObtainer.GetJsonStringAsync(); MessageBox.Show(result); } } else { theJobsControl.Visibility = Visibility.Visible; // MessageBox.Show("Already loaded jobs"); } }
/// <summary> /// Display a list of boards in the forum section. This section has been developed by using custom mapping functions. /// No list is provided by default from the endpoint, so it was necessary to develop a custom mapping class to handle this case. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void ForumButton_Click(object sender, RoutedEventArgs e) { currentPageTextBlock.Text = "FORUMS"; SetThickness(ForumButton); forumControl.Visibility = Visibility.Hidden; theProfilePage.Visibility = Visibility.Hidden; temporaryBlogGrid.Visibility = Visibility.Hidden; toolsControl.Visibility = Visibility.Hidden; WelcomeControl.Visibility = Visibility.Hidden; statusControl.Visibility = Visibility.Hidden; blogControl.Visibility = Visibility.Hidden; theLinksControl.Visibility = Visibility.Hidden; theJobsControl.Visibility = Visibility.Hidden; helpControl.Visibility = Visibility.Hidden; theIndividualForumControl.Visibility = Visibility.Hidden; if (!ForumLoaded) { forumControl.Visibility = Visibility.Hidden; temporaryBlogGrid.Visibility = Visibility.Visible; FetchText.Text = "Getting Forums for you."; try { if (InternetChecker.InternetAvailable()) { jsonObtainer = new JsonObtainer(forumEndpoint, "Forum Agent From Bolkay"); // await forumManagement.ForumBoardManagement(jsonObtainer, forumControl); //Get the json string json = await jsonObtainer.GetJsonStringAsync(); //map the obtained json to forum feed. ForumFeed forumFeed = Newtonsoft.Json.JsonConvert.DeserializeObject <ForumFeed>(json); //use the mapper class to get the general category ForumMapper forumMapper = new ForumMapper(); //Get the list of general categories from the forum feed. var generalCategories = forumMapper.GeneralCategories(forumFeed); //Get the list of web design categories var webCategories = forumMapper.WebCategories(forumFeed); //Get the mobile categories var mobileCategories = forumMapper.MobileCategories(forumFeed); //Finally set the datasource //Load the app categories var appCategories = forumMapper.AppCategories(forumFeed); //Get the database categories var databaseCategories = forumMapper.DatabaseCategories(forumFeed); //get the commmunity categories var communityCategories = forumMapper.CommunityCategories(forumFeed); foreach (var dat in webCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in generalCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in mobileCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in appCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in databaseCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } foreach (var dat in communityCategories) { string text = dat.latest; string formatted = Regex.Replace(text, @"<[^>]*>", ""); dat.latest = formatted; } forumControl.TheGeneralForumListBox.ItemsSource = generalCategories; forumControl.WebGeneralForumListBox.ItemsSource = webCategories; forumControl.MobileGeneralForumListBox.ItemsSource = mobileCategories; forumControl.AppGeneralForumListBox.ItemsSource = appCategories; forumControl.DatabaseGeneralForumListBox.ItemsSource = databaseCategories; forumControl.CommunityGeneralForumListBox.ItemsSource = communityCategories; temporaryBlogGrid.Visibility = Visibility.Hidden; forumControl.Visibility = Visibility.Visible; ForumLoaded = true; } else { FetchText.Text = NetworkFailedMessage; } } catch { string error = await jsonObtainer.GetJsonStringAsync(); FetchText.Text = error; } } else { //Display the forum forumControl.Visibility = Visibility.Visible; //MessageBox.Show("Forum has been loaded."); } }
/// <summary> /// Displays the Blogs page and hides other sections. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BlogButton_Click(object sender, RoutedEventArgs e) { SetThickness(BlogsButton); theProfilePage.Visibility = Visibility.Hidden; temporaryBlogGrid.Visibility = Visibility.Hidden; toolsControl.Visibility = Visibility.Hidden; WelcomeControl.Visibility = Visibility.Hidden; statusControl.Visibility = Visibility.Hidden; blogControl.Visibility = Visibility.Hidden; helpControl.Visibility = Visibility.Hidden; theLinksControl.Visibility = Visibility.Hidden; theJobsControl.Visibility = Visibility.Hidden; currentPageTextBlock.Text = "BLOG POSTS"; forumControl.Visibility = Visibility.Hidden; theIndividualForumControl.Visibility = Visibility.Hidden; if (!BlogLoaded) { temporaryBlogGrid.Visibility = Visibility.Visible; FetchText.Text = "Fetching blog posts for you..."; try { if (InternetChecker.InternetAvailable()) { jsonObtainer = new JsonObtainer(BlogEndpoint, "From_BOLKAY_BLOG_SURF"); string jsonResult = await jsonObtainer.GetJsonStringAsync(); AfricoderBlogFeed africoderBlogFeed = JsonConvert.DeserializeObject <AfricoderBlogFeed>(jsonResult); if (jsonResult != string.Empty) { foreach (var result in africoderBlogFeed.data) { string date = result.created.date; string convertedTime = Convert.ToDateTime(DateTime.Parse(date)).ToString(("ddd, dd MMM yyyy hh:mm:tt")); result.created.date = convertedTime; } foreach (var dat in africoderBlogFeed.data) { dat.LoggedInID = ID; } blogControl.TheLB.ItemsSource = africoderBlogFeed.data; } //display the blog blogControl.Visibility = Visibility.Visible; temporaryBlogGrid.Visibility = Visibility.Hidden; //MessageBox.Show("Done"); //Blog has been loaded BlogLoaded = true; } else { FetchText.Text = NetworkFailedMessage; } } catch { string errorResult = await jsonObtainer.GetJsonStringAsync(); FetchText.Text = NetworkFailedMessage; } } else { blogControl.Visibility = Visibility.Visible; //MessageBox.Show("Blog has been loaded"); } }
/// <summary> /// Button to handle the open forum event. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void OpenButton_Click(object sender, RoutedEventArgs e) { Button btn = sender as Button; //Get the categrory MultiCategory multiCategory = (MultiCategory)btn.DataContext; //Get the category string path = multiCategory.path; //Get the real endpoint //MessageBox.Show(path); //After clicking the button, it is important to send messgae to the africoders window. AfricodersPage africodersPage = Window.GetWindow(Parent) as AfricodersPage; //Close all exisitng controls. africodersPage.theProfilePage.Visibility = Visibility.Hidden; africodersPage.WelcomeControl.Visibility = Visibility.Hidden; africodersPage.blogControl.Visibility = Visibility.Hidden; africodersPage.statusControl.Visibility = Visibility.Hidden; africodersPage.toolsControl.Visibility = Visibility.Hidden; africodersPage.theLinksControl.Visibility = Visibility.Hidden; africodersPage.theJobsControl.Visibility = Visibility.Hidden; africodersPage.forumControl.Visibility = Visibility.Hidden; //Only the individual forum control should be alive. africodersPage.currentPageTextBlock.Text = "Forum " + multiCategory.board; africodersPage.theIndividualForumControl.Path = multiCategory.path; //Set the forum ID africodersPage.theIndividualForumControl.FID = multiCategory.fid; try { africodersPage.temporaryBlogGrid.Visibility = Visibility.Visible; africodersPage.FetchText.Text = "Loading " + multiCategory.board + " forum"; string endPoint = @"https://api.africoders.com/v1/" + path + "?page=1" + "&order=updated_at|DESC&include=comment"; jsonObtainer = new JsonObtainer(endPoint, "Forum_Agent_Bolkay"); string json = await jsonObtainer.GetJsonStringAsync(); //Changed the explicit Individual forum to dynamic IndividualForum individualForum = JsonConvert.DeserializeObject <IndividualForum>(json); foreach (var dat in individualForum.data) { //Reformat the time format. string date = dat.created.date; string convertedTime = Convert.ToDateTime(DateTime.Parse(date)).ToString(("ddd, dd MMM yyyy hh:mm:tt")); dat.created.date = convertedTime; dat.LoggedInID = UserID; } africodersPage.theIndividualForumControl.TheListBox.ItemsSource = individualForum.data; africodersPage.temporaryBlogGrid.Visibility = Visibility.Hidden; //Carefully transfer the path to the individual forum africodersPage.theIndividualForumControl.Visibility = Visibility.Visible; } catch (Exception t) { MessageBox.Show(t.Message); africodersPage.forumControl.Visibility = Visibility.Visible; africodersPage.theIndividualForumControl.Visibility = Visibility.Hidden; africodersPage.temporaryBlogGrid.Visibility = Visibility.Hidden; MessageBox.Show("Unable to show " + multiCategory.category + " at this time."); } }