public async void retrieveAndDisplayFirstPageTenders() { activityIndicator.IsRunning = true; activityIndicator.IsVisible = true; //Retrieve originating sources from server string origSourceHttpTask = await Task.Run <string>(() => HttpRequestHandler.PostRetrieveOrigSources()); while (origSourceHttpTask == null) { origSourceHttpTask = await Task.Run <string>(() => HttpRequestHandler.PostRetrieveOrigSources()); } if (origSourceHttpTask != null) { if (origSourceHttpTask != "Originating sources not found") { Console.WriteLine("HTTP TASK IS: " + origSourceHttpTask); originatingSources = JsonConvert.DeserializeObject <List <string> >(origSourceHttpTask); currentFilter = originatingSources; //Default filter contain all sources } } //Show tenders from database first if exists, then clear database to make way for new tenders List <tenderItem> dbtenders1 = await Task.Run <List <tenderItem> >(() => retrieveTenderFromDatabase(1)); //List<tenderItem> dbtenders2 = await Task.Run<List<tenderItem>>(() => retrieveTenderFromDatabase(2)); if (dbtenders1.Count > 0) { if (userSession.username != "") { List <tenderBookmark> bookmarkHttpTask = await Task.Run <List <tenderBookmark> >(() => retrieveBookmark()); List <tenderBookmark> tenderBookmarks = bookmarkHttpTask.ToList(); if (tenderBookmarks.Count > 0) { foreach (var tenderItem in dbtenders1) { foreach (var tenderBookmark in tenderBookmarks) { if (tenderItem.Reference != "" && tenderItem.Reference != null) { if (tenderItem.Reference == tenderBookmark.tenderReferenceNumber) { tenderItem.BookmarkImage = "bookmarkfilled.png"; break; } } else { if (tenderItem.Title == tenderBookmark.tenderTitle) { tenderItem.BookmarkImage = "bookmarkfilled.png"; break; } } } } } } tenderListing = dbtenders1; listView.ItemsSource = dbtenders1; /*if (dbtenders2.Count > 0) * { * nextPage.IsVisible = true; * }*/ filterButton.IsVisible = true; sortButton.IsVisible = true; activityIndicator.IsRunning = false; activityIndicator.IsVisible = false; await WaitAndExecuteUpdateTenders(10000); } else { //Sending HTTP request to obtain the SEB tender page data //string httpTask = await Task.Run<string>(() => getPageData("http://www2.sesco.com.my/etender/notice/notice.jsp")); //var httpResult = httpTask; //Extract tender data from the response //var tenders = await DataExtraction.getWebData(httpResult, "tender"); //Retrieve Telekom tenders //string httpTaskTelekom = await Task.Run<string>(() => getPageData("https://www.tm.com.my/DoingBusinessWithTM/pages/notices.aspx?Year=2018")); //var httpResultTelekom = httpTaskTelekom; //Console.WriteLine("TELEKOM: " + httpTaskTelekom); //Extract tender data from the response //var tendersTelekom = await DataExtraction.getWebData(httpResultTelekom, "telekom"); //List<tenderItem> tenderItems = (List<tenderItem>)tendersTelekom; //tenderItems.AddRange((List<tenderItem>)tenders); //Get bookmark details from online database List <scrapped_tender> scrappedTenders = new List <scrapped_tender>(); List <tenderItem> tenderItems = new List <tenderItem>(); //Retrieve tenders from server string url = "https://pockettender.000webhostapp.com/process_getTenders.php"; string httpTaskResult = await Task.Run <string>(() => HttpRequestHandler.GetRequest(url, false)); if (httpTaskResult != null) { if (httpTaskResult != "No tender found") { scrappedTenders = JsonConvert.DeserializeObject <List <scrapped_tender> >(httpTaskResult); if (scrappedTenders != null) { Console.WriteLine("Number of scrapped tenders: " + scrappedTenders.Count); //Convert scrapped tender item into tender item foreach (scrapped_tender scrappedTender in scrappedTenders) { tenderItem tender = new tenderItem(); tender.Company = scrappedTender.originatingSource; tender.TenderSource = scrappedTender.tenderSource; tender.Reference = scrappedTender.reference; tender.Agency = scrappedTender.agency; tender.Title = scrappedTender.title; tender.Category = scrappedTender.category; tender.OriginatingStation = scrappedTender.originatingSource; tender.ClosingDate = scrappedTender.closingDate; //{"bidCloseDate":"N\/A","feeBeforeGST":"RM 0.00","feeGST":"RM 0.00","feeAfterGST":"RM 0.00"} //{ "name":"Francesca Lim","officePhone":"082-441188","extension":"1126","mobilePhone":null,"email":null,"fax":null} //{"PMS106-14-Instruction.pdf":"http:\/\/www2.sesco.com.my\/noticeDoc\/PMS106-14-Instruction.pdf"} if (scrappedTender.docInfoJson != null) { dynamic docInfo = JsonConvert.DeserializeObject(scrappedTender.docInfoJson); if (docInfo != null) { if (docInfo.bidCloseDate != null) { tender.BidClosingDate = docInfo.bidCloseDate; } if (docInfo.feeBeforeGST != null) { tender.FeeBeforeGST = docInfo.feeBeforeGST; } if (docInfo.feeGST != null) { tender.FeeGST = docInfo.feeGST; } if (docInfo.feeAfterGST != null) { tender.FeeAfterGST = docInfo.feeAfterGST; } } } if (scrappedTender.originatorJson != null) { dynamic originatorInfo = JsonConvert.DeserializeObject(scrappedTender.originatorJson); if (originatorInfo != null) { if (originatorInfo.name != null) { tender.Name = originatorInfo.name; } if (originatorInfo.officePhone != null) { tender.OffinePhone = originatorInfo.officePhone; } if (originatorInfo.extension != null) { tender.Extension = originatorInfo.extension; } if (originatorInfo.mobilePhone != null) { tender.MobilePhone = originatorInfo.mobilePhone; } if (originatorInfo.email != null) { tender.Email = originatorInfo.email; } if (originatorInfo.fax != null) { tender.Fax = originatorInfo.fax; } } } if (scrappedTender.fileLinks != null) { Dictionary <string, string> fileLinks = JsonConvert.DeserializeObject <Dictionary <string, string> >(scrappedTender.fileLinks); tender.FileLinks = fileLinks; //{"Folder 1.zip":"http:\/\/www2.sesco.com.my\/noticeDoc\/Folder 1.zip","Folder 2.zip":"http:\/\/www2.sesco.com.my\/noticeDoc\/Folder 2.zip","Folder 3.zip":"http:\/\/www2.sesco.com.my\/noticeDoc\/Folder 3.zip","Folder 4.zip":"http:\/\/www2.sesco.com.my\/noticeDoc\/Folder 4.zip"} } tenderItems.Add(tender); } } if (userSession.username != "") { List <tenderBookmark> bookmarkHttpTask = await Task.Run <List <tenderBookmark> >(() => retrieveBookmark()); List <tenderBookmark> tenderBookmarks = bookmarkHttpTask.ToList(); if (tenderBookmarks.Count > 0) { foreach (var tenderItem in tenderItems) { foreach (var tenderBookmark in tenderBookmarks) { if (tenderItem.Reference != "" && tenderItem.Reference != null) { if (tenderItem.Reference == tenderBookmark.tenderReferenceNumber) { tenderItem.BookmarkImage = "bookmarkfilled.png"; break; } } else { if (tenderItem.Title == tenderBookmark.tenderTitle) { tenderItem.BookmarkImage = "bookmarkfilled.png"; break; } } } } } } Console.WriteLine("Num of tender items: " + tenderItems.Count); tenderListing = tenderItems; listView.ItemsSource = tenderItems; } } //Save page 1 tenders to database await saveToTenderDb(tenderItems, 1); //save subsequent page tenders to database; //await storeAllTenders(); filterButton.IsVisible = true; sortButton.IsVisible = true; activityIndicator.IsRunning = false; activityIndicator.IsVisible = false; await WaitAndExecuteUpdateTenders(10800000); } }