internal void UpdateFromItem(DataItem item, HashSet <DataItem> removedItems) { foreach (var d in item.ItemData) { var current = ItemData[d.Name]; if (current != null) { if (d.IsDefaultValue || d is DataDeletedNode) { if (current is DataItem) { removedItems.Add((DataItem)current); } ItemData.Remove(current); } else if (current.GetType() != d.GetType() || current is DataValue) { var i = ItemData.IndexOf(current); ItemData [i] = d; if (current is DataItem) { removedItems.Add((DataItem)current); } } else if (current is DataItem) { ((DataItem)current).UpdateFromItem((DataItem)d, removedItems); } } else if (!d.IsDefaultValue && !(d is DataDeletedNode)) { ItemData.Add(d); } } }
private void btnAddPizza_Click(object sender, EventArgs e) { // Validation if (cbOrder.SelectedIndex > -1 && cbPizzas.SelectedIndex > -1 && cbCrust.SelectedIndex > -1) { try { int selectedOrderId = int.Parse(cbOrder.Text); Enum.TryParse(cbPizzas.SelectedItem.ToString().Trim(), out Topping topping); Enum.TryParse(cbCrust.SelectedItem.ToString().Trim(), out Crust crust); Item item = new Item(++itemId, selectedOrderId, new Pizza(crust, topping), null); itemData.Add(item); UpdatelbOrders(selectedOrderId); } catch (Exception ex) { // Write it in a Log file } } }
internal void UpdateFromItem(DataItem item, HashSet <DataItem> removedItems) { var counter = new Dictionary <string, int> (); foreach (var d in item.ItemData) { DataNode current = null; DataCollection col; if (!counter.ContainsKey(d.Name)) { counter [d.Name] = 0; } var index = ItemData.FindData(d.Name, out col, false, counter[d.Name]); counter [d.Name]++; if (index != -1) { current = col [index]; } if (current != null) { if (d.IsDefaultValue || d is DataDeletedNode) { if (current is DataItem) { removedItems.Add((DataItem)current); } ItemData.Remove(current); } else if (current.GetType() != d.GetType() || current is DataValue) { var i = ItemData.IndexOf(current); ItemData [i] = d; if (current is DataItem) { removedItems.Add((DataItem)current); } } else if (current is DataItem) { ((DataItem)current).UpdateFromItem((DataItem)d, removedItems); } } else if (!d.IsDefaultValue && !(d is DataDeletedNode)) { var dataItem = d as DataItem; if (dataItem != null) { var newDataItem = new DataItem() { Name = d.Name, UniqueNames = dataItem.UniqueNames }; newDataItem.UpdateFromItem(dataItem, removedItems); ItemData.Add(newDataItem); } else { ItemData.Add(d); } } } }