コード例 #1
0
        public tenderPage()
        {
            BindingContext = this;
            var label = new Label {
                Text = "text"
            };

            //StackLayout stackLayout = new StackLayout();
            //var childToRaise = stackLayout.Children.First();

            InitializeComponent();

            //Set "Previous" and "Next" hyperlink label.
            var previousLblTapRecognizer = new TapGestureRecognizer();

            previousLblTapRecognizer.Tapped += onPreviousPageTapped;
            previousPage.GestureRecognizers.Add(previousLblTapRecognizer);
            previousPage.IsVisible = false;  //"Previous" label is set to invisible for first page

            var nextLblTapRecognizer = new TapGestureRecognizer();

            nextLblTapRecognizer.Tapped += onNextPageTapped;
            nextPage.GestureRecognizers.Add(nextLblTapRecognizer);

            //Sending HTTP request to obtain the tender page data
            Task <string> httpTask   = Task.Run <string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/notice/notice.jsp", false));
            var           httpResult = httpTask.Result.ToString();

            //Small data extraction to get "Next" and "Previous" page hyperlinks
            var htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(httpResult);
            var aNodes = htmlDoc.DocumentNode.SelectNodes("//a");

            if (aNodes != null)
            {
                foreach (var aNode in aNodes)
                {
                    if (aNode.InnerHtml == "Previous")
                    {
                        previousUrl         = "http://www2.sesco.com.my/etender/notice/" + aNode.Attributes["href"].Value;
                        isPreviousAvailable = true;
                    }
                    else if (aNode.InnerHtml == "Next")
                    {
                        nextUrl         = "http://www2.sesco.com.my/etender/notice/" + aNode.Attributes["href"].Value;
                        isNextAvailable = true;
                    }
                }
            }


            //Extract tender data from the response
            var tenders = DataExtraction.getWebData(httpResult, "tender");
            List <tenderItem> tenderItems = (List <tenderItem>)tenders;

            listView.ItemsSource         = tenderItems;
            listView.SeparatorVisibility = SeparatorVisibility.None;
            listView.ItemSelected       += onItemSelected;
        }
コード例 #2
0
        private async Task onUpdateBtnClicked(object sender, EventArgs e)
        {
            //Send request to retrieve response from Change Password page
            Task <string> httpTask       = Task.Run <string>(() => HttpRequestHandler.ChangePasswordRequest("http://www2.sesco.com.my/etender/vendor/vendor_change_password.jsp?check=yes", oldpass.Text, newpass.Text, renewpass.Text));
            var           httpTaskResult = httpTask.Result.ToString();

            //Extract response message data from Change Password page
            var responseData = DataExtraction.getChangePasswordResponse(httpTaskResult);
            ChangePasswordResponse response = (ChangePasswordResponse)responseData;

            bool   errPressence = response.ErrorPressence;
            string errMessage   = response.ErrorMessage;

            if (!String.IsNullOrWhiteSpace(errMessage))
            {
                await DisplayAlert("Change Password Error", errMessage, "OK");

                var page        = App.Current.MainPage as rootPage;
                var refreshPage = new userChangePassword();
                page.changePage(refreshPage);
            }
            else
            {
                var page      = App.Current.MainPage as rootPage;
                var relogPage = new relogPage();
                page.changePage(relogPage);
            }
        }
コード例 #3
0
ファイル: tenderPage.xaml.cs プロジェクト: yingy996/SEBTender
        async Task storeAllTenders()
        {
            //denotes the tender page for use in this method
            int i = 1;

            while (isNextAvailable != false)
            {
                string httpTask = await Task.Run <string>(() => getPageData(nextUrl));

                i = i + 1;

                var httpResult = httpTask.ToString();

                //Small data extraction to get "Next" and "Previous" page hyperlinks
                var htmlDoc = new HtmlDocument();
                htmlDoc.LoadHtml(httpResult);

                //Extract tender data from the response
                var tenderItems = await Task.Run <Object>(() => DataExtraction.getTenderPage(htmlDoc));

                saveToTenderDb((List <tenderItem>)tenderItems, i);
            }

            List <tenderItem> dbtenders = await Task.Run <List <tenderItem> >(() => retrieveTenderFromDatabase(2));

            if (dbtenders.Count > 0)
            {
                //nextPage.IsVisible = true;
            }
            //await WaitAndExecuteUpdateTenders(10800000, storeAllTenders);
        }
コード例 #4
0
        public async Task WaitAndExecuteUpdateTenders(int milisec)
        {
            await Task.Delay(milisec);


            //Sending HTTP request to obtain the tender page data
            string httpTask = await Task.Run <string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/vendor/vendor_tender_eligible.jsp", true));

            var httpResult = httpTask;

            //Extract tender data from the response
            var tenders = await DataExtraction.getWebData(httpResult, "eligibelTenderPage");

            List <tenderItem> tenderItems = (List <tenderItem>)tenders;

            //delete existing eligible tenders
            List <dbTenderItem> dbtenders0 = await App.Database.getTendersAsync(0);

            await deleteDatabaseEligibleTenders(dbtenders0);

            //save all eligible tenders to database
            await saveToTenderDb(tenderItems, 0);

            //Get bookmark details from database
            if (userSession.username != "")
            {
                //string httpTask = await Task.Run<string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/vendor/vendor_tender_eligible.jsp", true));
                //Task<List<tenderBookmark>> bookmarkHttpTask = Task.Run<List<tenderBookmark>>(() => retrieveBookmark());
                List <tenderBookmark> tenderBookmarks = await retrieveBookmark();

                if (tenderBookmarks != null)
                {
                    //List<tenderBookmark> tenderBookmarks = bookmarkHttpTask;
                    if (tenderBookmarks.Count > 0)
                    {
                        foreach (var tenderItem in tenderItems)
                        {
                            foreach (var tenderBookmark in tenderBookmarks)
                            {
                                if (tenderItem.Reference == tenderBookmark.tenderReferenceNumber)
                                {
                                    tenderItem.BookmarkImage = "bookmarkfilled.png";
                                    break;
                                }
                            }
                        }
                    }
                }
            }

            await DisplayAlert("Update Tenders", "Refresh Tenders", "Okay");

            listView.ItemsSource = tenderItems;



            await WaitAndExecuteUpdateTenders(10800000);
        }
コード例 #5
0
        public tenderEligiblePage()
        {
            BindingContext = this;
            InitializeComponent();
            var items = Enumerable.Range(0, 10);

            //Sending HTTP request to obtain the tender page data
            Task <string> httpTask   = Task.Run <string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/vendor/vendor_tender_eligible.jsp", true));
            var           httpResult = httpTask.Result.ToString();

            //Extract tender data from the response
            var tenders = DataExtraction.getWebData(httpResult, "eligibelTenderPage");
            List <tenderItem> tenderItems = (List <tenderItem>)tenders;

            listView.ItemsSource         = tenderItems;
            listView.SeparatorVisibility = SeparatorVisibility.None;
            listView.ItemSelected       += onItemSelected;
        }
コード例 #6
0
        public editContactPerson()
        {
            BindingContext = this;
            InitializeComponent();

            //Sending HTTP request to obtain the company profile data
            Task <string> httpTask   = Task.Run <string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/vendor/vendor_contact_edit.jsp", true));
            var           httpResult = httpTask.Result.ToString();

            //Extract company profile data from the response
            //var profileData = DataExtraction.getWebData(httpResult, "userContactPerson");
            var           profileData = Task.Run <Object>(() => DataExtraction.getWebData(httpResult, "userContactPerson"));
            ContactPerson profile     = (ContactPerson)profileData.Result;

            name.Text         = profile.Name;
            telephoneNo.Text  = profile.TelephoneNo;
            faxNo.Text        = profile.FaxNo;
            emailAddress.Text = profile.EmailAddress;
        }
コード例 #7
0
        public editCompanyProfile()
        {
            BindingContext = this;
            InitializeComponent();

            //Sending HTTP request to obtain the company profile data
            Task <string> httpTask   = Task.Run <string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/vendor/vendor_company_edit.jsp", true));
            var           httpResult = httpTask.Result.ToString();

            //Extract company profile data from the response
            var profileData = Task.Run <Object>(() => DataExtraction.getWebData(httpResult, "userCompanyProfile"));
            //var profileData = DataExtraction.getWebData(httpResult, "userCompanyProfile");
            CompanyProfile profile = (CompanyProfile)profileData.Result;

            companyName.Text           = profile.CompanyName;
            companyRegistrationNo.Text = profile.CompanyRegistrationNo;
            mailingAddress.Text        = profile.MailingAddress;
            country.Text = profile.Country;

            name    = profile.CompanyName;
            regno   = profile.CompanyRegistrationNo;
            coucode = profile.Country;
        }
コード例 #8
0
        public tenderSearchResultPage(string searchTenderResult)
        {
            //BindingContext = this;
            var label = new Label {
                Text = "text"
            };

            //StackLayout stackLayout = new StackLayout();
            //var childToRaise = stackLayout.Children.First();

            InitializeComponent();

            //Set "Previous" and "Next" hyperlink label.
            var previousLblTapRecognizer = new TapGestureRecognizer();

            previousLblTapRecognizer.Tapped += onPreviousPageTapped;
            previousPage.GestureRecognizers.Add(previousLblTapRecognizer);
            previousPage.IsVisible = false;  //"Previous" label is set to invisible for first page

            var nextLblTapRecognizer = new TapGestureRecognizer();

            nextLblTapRecognizer.Tapped += onNextPageTapped;
            nextPage.GestureRecognizers.Add(nextLblTapRecognizer);
            nextPage.IsVisible = false;

            //Sending HTTP request to obtain the tender page data
            var httpResult = searchTenderResult;

            //Small data extraction to get "Next" and "Previous" page hyperlinks
            var htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(httpResult);
            var aNodes = htmlDoc.DocumentNode.SelectNodes("//a");

            if (aNodes != null)
            {
                foreach (var aNode in aNodes)
                {
                    if (aNode.InnerHtml == "Previous")
                    {
                        previousUrl            = "http://www2.sesco.com.my/etender/notice/" + aNode.Attributes["href"].Value;
                        isPreviousAvailable    = true;
                        previousPage.IsVisible = true;
                    }
                    else if (aNode.InnerHtml == "Next")
                    {
                        nextUrl            = "http://www2.sesco.com.my/etender/notice/" + aNode.Attributes["href"].Value;
                        isNextAvailable    = true;
                        nextPage.IsVisible = true;
                    }
                }
            }


            //Extract tender data from the response
            var tenders = DataExtraction.getWebData(httpResult, "tender");
            List <tenderItem> tenderItems = (List <tenderItem>)tenders;

            if (tenderItems.Count > 0)
            {
                Console.WriteLine("Tender list item no.1 ref: " + tenderItems.First().Title);
            }
            else
            {
                Console.WriteLine("No item returned!!");
            }

            listView.ItemsSource         = tenderItems;
            listView.SeparatorVisibility = SeparatorVisibility.None;
            listView.ItemSelected       += onItemSelected;

            /*Console.WriteLine("testing");
             * BindingContext = this;
             * var label = new Label { Text = "text" };
             * //StackLayout stackLayout = new StackLayout();
             * //var childToRaise = stackLayout.Children.First();
             *
             * InitializeComponent();
             *
             * //Set "Previous" and "Next" hyperlink label.
             * var previousLblTapRecognizer = new TapGestureRecognizer();
             * previousLblTapRecognizer.Tapped += onPreviousPageTapped;
             * previousPage.GestureRecognizers.Add(previousLblTapRecognizer);
             * previousPage.IsVisible = false;  //"Previous" label is set to invisible for first page
             *
             * var nextLblTapRecognizer = new TapGestureRecognizer();
             * nextLblTapRecognizer.Tapped += onNextPageTapped;
             * nextPage.GestureRecognizers.Add(nextLblTapRecognizer);
             *
             * //Retrieve string search result passed from searchTenderPage
             * var httpResult = searchTenderResult;
             *
             * //Small data extraction to get "Next" and "Previous" page hyperlinks
             * var htmlDoc = new HtmlDocument();
             * htmlDoc.LoadHtml(httpResult);
             * var aNodes = htmlDoc.DocumentNode.SelectNodes("//a");
             * if (aNodes != null)
             * {
             *  foreach (var aNode in aNodes)
             *  {
             *      if (aNode.InnerHtml == "Previous")
             *      {
             *          previousUrl = "http://www2.sesco.com.my/etender/notice/" + aNode.Attributes["href"].Value;
             *          isPreviousAvailable = true;
             *      }
             *      else if (aNode.InnerHtml == "Next")
             *      {
             *          nextUrl = "http://www2.sesco.com.my/etender/notice/" + aNode.Attributes["href"].Value;
             *          isNextAvailable = true;
             *      }
             *  }
             * }
             *
             *
             * //Extract tender data from the response
             * var tenders = DataExtraction.getWebData(httpResult, "searchtenderpage");
             * List<tenderItem> tenderItems = (List<tenderItem>)tenders;
             *
             * listView.ItemsSource = tenderItems;
             * listView.SeparatorVisibility = SeparatorVisibility.None;
             * listView.ItemSelected += onItemSelected;*/
        }
コード例 #9
0
        async void onPreviousPageTapped(object sender, EventArgs eventArgs)
        {
            activityIndicator.IsVisible = true;
            activityIndicator.IsRunning = true;
            //Sending HTTP request to obtain the second tender page data
            string httpTask = await Task.Run <string>(() => HttpRequestHandler.GetRequest(previousUrl, false));

            var httpResult = httpTask.ToString();

            //Small data extraction to get "Next" and "Previous" page hyperlinks
            var htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(httpResult);
            var aNodes = htmlDoc.DocumentNode.SelectNodes("//a");

            isNextAvailable     = false;
            isPreviousAvailable = false;

            foreach (var aNode in aNodes)
            {
                if (aNode.InnerHtml == "Previous")
                {
                    previousUrl         = "http://www2.sesco.com.my/etender/notice/" + aNode.Attributes["href"].Value;
                    isPreviousAvailable = true;
                }
                else if (aNode.InnerHtml == "Next")
                {
                    nextUrl         = "http://www2.sesco.com.my/etender/notice/" + aNode.Attributes["href"].Value;
                    isNextAvailable = true;
                }
            }

            //Extract tender data from the response
            var tenderItems = await Task.Run <Object>(() => DataExtraction.getTenderPage(htmlDoc));

            //var tenders = DataExtraction.getWebData(httpResult, "tender");
            //List<tenderItem> tenderItems = (List<tenderItem>)tenders;

            listView.ItemsSource  = (List <tenderItem>)tenderItems;
            listView.ItemTemplate = dataTemplate;

            if (isPreviousAvailable)
            {
                previousPage.IsVisible = true;
            }
            else
            {
                previousPage.IsVisible = false;
            }

            if (isNextAvailable)
            {
                nextPage.IsVisible = true;
            }
            else
            {
                nextPage.IsVisible = false;
            }
            activityIndicator.IsVisible = false;
            activityIndicator.IsRunning = false;
        }
コード例 #10
0
        async void retrieveEligibleTenders()
        {
            activityIndicator.IsVisible = true;
            activityIndicator.IsRunning = true;

            //Show tenders from database first if exists, then clear database to make way for new tenders
            List <tenderItem> dbtenders0 = await Task.Run <List <tenderItem> >(() => retrieveTenderFromDatabase(0));

            if (dbtenders0.Count > 0)
            {
                //Get bookmark details from database
                if (userSession.username != "")
                {
                    //string httpTask = await Task.Run<string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/vendor/vendor_tender_eligible.jsp", true));
                    //Task<List<tenderBookmark>> bookmarkHttpTask = Task.Run<List<tenderBookmark>>(() => retrieveBookmark());
                    List <tenderBookmark> tenderBookmarks = await retrieveBookmark();

                    if (tenderBookmarks != null)
                    {
                        //List<tenderBookmark> tenderBookmarks = bookmarkHttpTask;
                        if (tenderBookmarks.Count > 0)
                        {
                            foreach (var tenderItem in dbtenders0)
                            {
                                foreach (var tenderBookmark in tenderBookmarks)
                                {
                                    if (tenderItem.Reference == tenderBookmark.tenderReferenceNumber)
                                    {
                                        tenderItem.BookmarkImage = "bookmarkfilled.png";
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }

                listView.ItemsSource        = dbtenders0;
                pageTitle.IsVisible         = true;
                activityIndicator.IsRunning = false;
                activityIndicator.IsVisible = false;
                upBtn.IsVisible             = true;


                await WaitAndExecuteUpdateTenders(10000);
            }
            else
            {
                //Sending HTTP request to obtain the tender page data
                string httpTask = await Task.Run <string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/vendor/vendor_tender_eligible.jsp", true));

                var httpResult = httpTask;

                //Extract tender data from the response
                var tenders = await DataExtraction.getWebData(httpResult, "eligibelTenderPage");

                List <tenderItem> tenderItems = (List <tenderItem>)tenders;


                //Get bookmark details from database
                if (userSession.username != "")
                {
                    //string httpTask = await Task.Run<string>(() => HttpRequestHandler.GetRequest("http://www2.sesco.com.my/etender/vendor/vendor_tender_eligible.jsp", true));
                    //Task<List<tenderBookmark>> bookmarkHttpTask = Task.Run<List<tenderBookmark>>(() => retrieveBookmark());
                    List <tenderBookmark> tenderBookmarks = await retrieveBookmark();

                    if (tenderBookmarks != null)
                    {
                        //List<tenderBookmark> tenderBookmarks = bookmarkHttpTask;
                        if (tenderBookmarks.Count > 0)
                        {
                            foreach (var tenderItem in tenderItems)
                            {
                                foreach (var tenderBookmark in tenderBookmarks)
                                {
                                    if (tenderItem.Reference == tenderBookmark.tenderReferenceNumber)
                                    {
                                        tenderItem.BookmarkImage = "bookmarkfilled.png";
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                listView.ItemsSource = tenderItems;

                //save all eligible tenders to database
                await saveToTenderDb(tenderItems, 0);

                pageTitle.IsVisible         = true;
                activityIndicator.IsVisible = false;
                activityIndicator.IsRunning = false;
                //pageTitle.IsVisible = true;


                if (tenderItems.Count > 0)
                {
                    upBtn.IsVisible = true;
                }

                await WaitAndExecuteUpdateTenders(10800000);
            }
        }