示例#1
0
 private void DrawMaintenanceItems()
 {
     MaintenanceItemsListBox.Items.Clear();
     if (MaintenanceItems != null)
     {
         foreach (var item in MaintenanceItems)
         {
             var listBoxItem = new ListBoxItem()
             {
                 Content    = item.ToString(),
                 Tag        = item,
                 FontWeight = FontWeights.Bold,
                 Background = (item.DueNow()) ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.White),
             };
             MaintenanceItemsListBox.Items.Add(listBoxItem);
             if (item == SelectedMaintenanceItem)
             {
                 listBoxItem.IsSelected = true;
             }
         }
     }
     MaintenanceItemActions.IsReadOnly = (SelectedMaintenanceItem == null);
     if (SelectedCompleteItem != null)
     {
         SelectedCompleteItem.Actions = CompletedItemActions.Text;
         SelectedCompleteItem         = null;
     }
     CompletedItemActions.Text       = "";
     CompletedItemActions.IsReadOnly = true;
     SetSelectedItem(SelectedMaintenanceItem);
 }
示例#2
0
 private void MaintenanceItemsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (e.AddedItems.Count == 1)
     {
         SetSelectedItem(((e.AddedItems[0] as ListBoxItem).Tag as MaintenanceItem));
     }
     if (SelectedCompleteItem != null)
     {
         SelectedCompleteItem.Actions = CompletedItemActions.Text;
         SelectedCompleteItem         = null;
     }
     CompletedItemActions.Text       = "";
     CompletedItemActions.IsReadOnly = true;
 }
示例#3
0
 private void CloseButton_Click(object sender, RoutedEventArgs e)
 {
     if (SelectedMaintenanceItem != null)
     {
         SelectedMaintenanceItem.Actions = MaintenanceItemActions.Text;
     }
     if (SelectedCompleteItem != null)
     {
         SelectedCompleteItem.Actions = CompletedItemActions.Text;
         SelectedCompleteItem         = null;
     }
     CompletedItemActions.Text       = "";
     CompletedItemActions.IsReadOnly = true;
     Close();
 }
示例#4
0
 private void CompletedItemsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (e.AddedItems.Count == 1)
     {
         if (SelectedCompleteItem != null)
         {
             SelectedCompleteItem.Actions = CompletedItemActions.Text;
         }
         SelectedCompleteItem = ((e.AddedItems[0] as ListBoxItem).Tag as CompletedItem);
         if (SelectedCompleteItem != null)
         {
             CompletedItemActions.Text       = SelectedCompleteItem.Actions;
             CompletedItemActions.IsReadOnly = false;
         }
     }
 }
示例#5
0
 private void SetSelectedItem(MaintenanceItem maintenanceItem)
 {
     if (maintenanceItem == null)
     {
         return;
     }
     if (SelectedMaintenanceItem != null && SelectedMaintenanceItem != maintenanceItem)
     {
         SelectedMaintenanceItem.Actions = MaintenanceItemActions.Text;
     }
     SelectedMaintenanceItem = maintenanceItem;
     if (SelectedMaintenanceItem != null)
     {
         MaintenanceItemActions.Text       = SelectedMaintenanceItem.Actions;
         MaintenanceItemActions.IsReadOnly = false;
         SelectedCompleteItem = null;
         DrawCompleteItems();
     }
     else
     {
         MaintenanceItemActions.IsReadOnly = true;
     }
 }
示例#6
0
        private List <CompletedItem> BuildCompletedItemsList(string html, string keyWords)
        {
            bool isDirectMatch;
            List <CompletedItem> completedItems = new List <CompletedItem>();
            CompletedItem        completedItem  = new CompletedItem();
            HtmlDocument         htmlDocument   = new HtmlDocument();

            htmlDocument.LoadHtml(html);

            var productsHtml = htmlDocument.DocumentNode.Descendants("ul")
                               .Where(node => node.GetAttributeValue("class", "")
                                      .Contains("srp-results")).ToList();


            var productListItems = productsHtml[0].Descendants("li")
                                   .Where(node => node.GetAttributeValue("class", "")
                                          .Contains("s-item")).ToList();

            foreach (var productListItem in productListItems)
            {
                isDirectMatch = true;
                // We do not want to include International for now, so if the listing is international, we want to take it out of our list.
                string location = GetNodeInnerText(productListItem.Descendants("span")
                                                   .Where(node => node.GetAttributeValue("class", "")
                                                          .Contains("s-item__location")).FirstOrDefault());
                if (location != "")
                {
                    continue; //on to the next listing
                }

                // Weed out any "related" items ebay wants to throw in there by double-checking our keywords against the title
                string[] keyWordsArray = keyWords.Split(" ");

                string title = GetNodeInnerText(productListItem.Descendants("h3")
                                                .Where(node => node.GetAttributeValue("class", "")
                                                       .Contains("s-item__title")).FirstOrDefault());

                foreach (string keyWord in keyWordsArray)
                {
                    if (title.IndexOf(keyWord, StringComparison.OrdinalIgnoreCase) == -1)
                    {
                        isDirectMatch = false;
                    }
                }
                if (!isDirectMatch)
                {
                    continue;
                }

                completedItem = new CompletedItem()
                {
                    Title     = title,
                    Condition = GetNodeInnerText(productListItem.Descendants("span")
                                                 .Where(node => node.GetAttributeValue("class", "")
                                                        .Contains("SECONDARY_INFO")).FirstOrDefault()),
                    ItemPrice = GetNodeInnerText(productListItem.Descendants("span")
                                                 .Where(node => node.GetAttributeValue("class", "")
                                                        .Contains("s-item__price")).FirstOrDefault()),
                    ShippingPrice = GetNodeInnerText(productListItem.Descendants("span")
                                                     .Where(node => node.GetAttributeValue("class", "")
                                                            .Contains("s-item__shipping")).FirstOrDefault()),
                    //ItemLocation = GetNodeInnerText(productListItem.Descendants("span")
                    //    .Where(node => node.GetAttributeValue("class", "")
                    //    .Contains("s-item__location")).FirstOrDefault()),
                    thumbnailUrl = productListItem.Descendants("img")
                                   .Where(node => node.GetAttributeValue("class", "")
                                          .Contains("s-item__image-img")).FirstOrDefault().GetAttributeValue("src", ""),
                    url = productListItem.Descendants("a")
                          .Where(node => node.GetAttributeValue("class", "")
                                 .Contains("s-item__link")).FirstOrDefault().GetAttributeValue("href", ""),
                    WasSold = !productListItem.Descendants("span")
                              .Where(node => node.GetAttributeValue("class", "")
                                     .Equals("NEGATIVE")).Any(),
                    WasBuyItNow = productListItem.Descendants("span")
                                  .Where(node => node.GetAttributeValue("class", "")
                                         .Equals("s-item__purchase-options-with-icon")).Any()
                };

                if (completedItem.WasSold)
                {
                    completedItem.EndDate = GetNodeInnerText(productListItem.Descendants("span")
                                                             .Where(node => node.GetAttributeValue("class", "")
                                                                    .Contains("POSITIVE")).FirstOrDefault());
                }
                else
                {
                    completedItem.EndDate = GetNodeInnerText(productListItem.Descendants("span")
                                                             .Where(node => node.GetAttributeValue("class", "")
                                                                    .Contains("NEGATIVE")).FirstOrDefault());
                }

                //Extract the ebay identifier from the the URL. Probably a better way to do this via RegEx, but for now I'm just looking for everything between
                // the last slash in the URL and the question mark, which is where the Item ID lives.
                int slashIndex        = completedItem.url.LastIndexOf("/") + 1;
                int questionMarkIndex = completedItem.url.LastIndexOf("?");
                completedItem.ItemId = completedItem.url.Substring(slashIndex, questionMarkIndex - slashIndex);

                completedItems.Add(completedItem);
            }

            return(completedItems);
        }