Exemplo n.º 1
0
 public void AddOrder(Order order)
 {
     if (!ContainsOrder(order))
     {
         orders.Add(order.Id, order);
         OnOrderAdded(new OrderAddedEventArgs(order));
     }
     else
     {
         Order oldOrder = orders[order.Id];
         if (!oldOrder.Equals(order))
         {
             orders[order.Id] = order;
             OnOrderChanged(new OrderChangedEventArgs(order, oldOrder));
         }
     }
 }
Exemplo n.º 2
0
 public OrderViewModel(Order order)
 {
     this.order = order;
 }
Exemplo n.º 3
0
 public OrderViewModel()
 {
     order = new Order();
 }
Exemplo n.º 4
0
 public bool Equals(Order other)
 {
     if (ReferenceEquals(null, other)) return false;
     if (ReferenceEquals(this, other)) return true;
     return other.Id == Id && other.Date.Equals(Date) && Equals(other.BuyerUserId, BuyerUserId) && other.Items == Items && other.Insurance.Equals(Insurance) && other.Lots == Lots && other.Shipping.Equals(Shipping) && other.AdditionalCharge.Equals(AdditionalCharge) && other.CouponCredit.Equals(CouponCredit) && other.ExtraCredit.Equals(ExtraCredit) && other.OrderTotal.Equals(OrderTotal) && Equals(other.Status, Status) && other.IsComplete.Equals(IsComplete);
 }
Exemplo n.º 5
0
 public OrderChangedEventArgs(Order newOrder, Order oldOrder)
 {
     NewOrder = newOrder;
     OldOrder = oldOrder;
 }
Exemplo n.º 6
0
 public OrderAddedEventArgs(Order newOrder)
 {
     NewOrder = newOrder;
 }
Exemplo n.º 7
0
 public bool ContainsOrder(Order order)
 {
     Contract.Requires(order != null);
     return orders.ContainsKey(order.Id);
 }
Exemplo n.º 8
0
        IEnumerable<Order> ParseTable(HtmlNode table)
        {
            var rows = table.SelectNodes("tr");
            List<Order> parsedOrders = new List<Order>();
            Regex regex = new Regex(@"(?<parts>\d+)\s\((?<lots>\d+)\)");

            List<HtmlNode> headerCells = rows.First().SelectNodes("td").ToList();

            int indexId = headerCells.FindIndex(c => c.InnerText.Equals("ID"));
            int indexDate = headerCells.FindIndex(c => c.InnerText.Equals("Date"));
            int indexBuyer = headerCells.FindIndex(c => c.InnerText.Equals("Buyer"));
            int indexItems = headerCells.FindIndex(c => c.InnerText.StartsWith("Items"));
            int indexShip = headerCells.FindIndex(c => c.InnerText.Equals("Ship."));
            int indexAddCharge = headerCells.FindIndex(c => c.InnerText.StartsWith("Add."));
            int indexInsur = headerCells.FindIndex(c => c.InnerText.Equals("Insur."));
            int indexCredit = headerCells.FindIndex(c => c.InnerText.Equals("Credit"));
            int indexOrder = headerCells.FindIndex(c => c.InnerText.EndsWith("Total"));
            int indexStatus = headerCells.FindIndex(c => c.InnerText.EndsWith("Status"));

            int count = rows.Count;
            for (int i = 1; i < count - 1; i++)
            {
                HtmlNode row = rows[i];
                HtmlNode[] cells = (from cell in row.SelectNodes("td") select cell).ToArray();
                string orderId = cells[indexId].ChildNodes[0].InnerText;
                DateTime date = DateTime.Parse(cells[indexDate].InnerText);
                string userId = cells[indexBuyer].ChildNodes[0].InnerText;
                string items = HtmlEntity.DeEntitize(cells[indexItems].InnerText);
                Match match = regex.Match(items);

                int parts = Int32.Parse(match.Groups["parts"].Value); ;
                int lots = Int32.Parse(match.Groups["lots"].Value);

                float value;
                bool result = Single.TryParse(cells[indexShip].ChildNodes[0].Attributes["VALUE"].Value, out value);
                float shipping = result ? value : 0;

                result = Single.TryParse(cells[indexInsur].ChildNodes[0].Attributes["VALUE"].Value, out value);
                float insurance = result ? value : 0;

                HtmlNode cellCredit = cells[indexCredit];
                float couponCredit = 0;
                float extraCredit;
                if (cellCredit.ChildNodes.Count == 2)
                {
                    result = Single.TryParse(HtmlEntity.DeEntitize(cellCredit.ChildNodes[0].InnerText).Trim(), out value);
                    couponCredit = result ? value : 0;
                    result = Single.TryParse(cells[indexCredit].ChildNodes[1].Attributes["VALUE"].Value, out value);
                    extraCredit = result ? value : 0;
                }
                else
                {
                    result = Single.TryParse(cells[indexCredit].ChildNodes[0].Attributes["VALUE"].Value, out value);
                    extraCredit = result ? value : 0;
                }

                result = Single.TryParse(cells[indexAddCharge].ChildNodes[0].Attributes["VALUE"].Value, out value);
                float addCharge = result ? value : 0;

                result = Single.TryParse(cells[indexOrder].ChildNodes[0].InnerText, out value);
                float orderTotal = result ? value : 0;

                bool isComplete;
                OrderStatus orderStatus;
                if (cells[indexStatus].ChildNodes.Count == 2)
                {
                    // Is a "completed" order;
                    isComplete = true;
                    orderStatus = OrderStatus.Completed;
                }
                else
                {
                    string orderStatusValue =
                        cells[indexStatus].ChildNodes[0].ChildNodes.First(o => o.Attributes.Contains("selected")).
                        Attributes["Value"].Value;
                    int statusId = Int32.Parse(orderStatusValue);
                    orderStatus = (OrderStatus)statusId;
                    isComplete = false;
                }

                Order order = new Order
                {
                    Id = Int32.Parse(orderId),
                    Date = date,
                    BuyerUserId = userId,
                    Items = parts,
                    Lots = lots,
                    Shipping = shipping,
                    Insurance = insurance,
                    AdditionalCharge = addCharge,
                    CouponCredit = couponCredit,
                    ExtraCredit = extraCredit,
                    OrderTotal = orderTotal,
                    Status = orderStatus,
                    IsComplete = isComplete
                };
                parsedOrders.Add(order);
            }

            return parsedOrders;
        }