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)); } } }
public OrderViewModel(Order order) { this.order = order; }
public OrderViewModel() { order = new Order(); }
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); }
public OrderChangedEventArgs(Order newOrder, Order oldOrder) { NewOrder = newOrder; OldOrder = oldOrder; }
public OrderAddedEventArgs(Order newOrder) { NewOrder = newOrder; }
public bool ContainsOrder(Order order) { Contract.Requires(order != null); return orders.ContainsKey(order.Id); }
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; }