コード例 #1
0
        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");
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        /// <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");
            }
        }
コード例 #5
0
        /// <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");
            }
        }
コード例 #6
0
        /// <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.");
            }
        }
コード例 #7
0
        /// <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");
            }
        }
コード例 #8
0
        /// <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.");
            }
        }