public void AddOrder(int id, string code, double value) { OrderedItem item = this.Ordered.FirstOrDefault(it => it.Id == id); if (item == null) { item = new OrderedItem() { Id = id, Code = code, Value = value }; this.Ordered.Add(item); } }
public override Items GetStatisticData() { Items originalData = base.GetStatisticData(); Items data = new Items() { Orders = originalData.Orders }; List<ItemData> processed = new List<ItemData>(); foreach (ItemData item in originalData.Rows) { if (!string.IsNullOrWhiteSpace(item.Code) && item.Code.StartsWith(CODE_601)) { processed.Add(item); data.Rows.Add(item); string[] parts = item.Code.Split(' '); if (parts.Length > 1) { string common = parts[1]; IEnumerable<ItemData> partialData = originalData.Rows.Where(it => it.Code.Contains(common) && !it.Code.StartsWith(CODE_601)); foreach (ItemData partial in partialData) { processed.Add(partial); item.OnStock += partial.OnStock; //item.Ordered += partial.Ordered; foreach (string year in partial.Usages.Keys) { if (item.Usages.ContainsKey(year)) item.Usages[year] += partial.Usages[year]; else item.Usages.Add(year, partial.Usages[year]); } foreach (OrderedItem order in partial.Ordered) { OrderedItem old = item.Ordered.FirstOrDefault(ord=>ord.Id == order.Id); if (old == null) { old = new OrderedItem() { Code = order.Code, Id = order.Id }; item.Ordered.Add(old); } old.Value += order.Value; } } } } } // Este pridame tie, ktore sa doteraz nespracovali, bude to zobrazene na konci statistiky IEnumerable<ItemData> unprocessed = originalData.Rows.Where(he => !processed.Contains(he)); foreach(ItemData item in unprocessed) data.Rows.Add(item); return data; }