public Produkt(long _varunr, ProdKategoriEnum _kategori, string _namn, int _pris=0, int _saldo=0) { varunr = _varunr; Kategori = _kategori; Namn = _namn; Pris = _pris; Saldo = _saldo; }
/// <summary> /// Lägger till en ny produkt till sortementet. Sparas även till fil. /// </summary> /// <param name="_namn">Produktens namn.</param> /// <param name="_kategori">Produktens kategori.</param> /// <param name="_pris">Produktens pris.</param> /// <param name="_saldo">Produktens lagersaldo.</param> /// <returns>Returnerar adderad produkts varunr.</returns> public long AdderaProdukt(string _namn, ProdKategoriEnum _kategori, int _pris=0, int _saldo=0, long _varunr=0) { Produkt prod; if(produktLst.Count == 0 && _varunr != 0) // Tomt produktregister, produkten som ska adderas är inte importerad prod = new Produkt(1 , _kategori, _namn, _pris, _saldo); else if(_varunr != 0) // Produkten är importerad (har ett varunr) prod = new Produkt(_varunr, _kategori, _namn, _pris, _saldo); else // Produkten är nyupplaggd här i programmet prod = new Produkt(produktLst.Max(p => p.Varunr+1), _kategori, _namn, _pris, _saldo); produktLst.Add(prod); lagring.SparaProdukter(produktLst); return prod.Varunr; }
/// <summary> /// Beräknar och returnerar en sorterad lista på produkterna under angiven tidsperiod. /// </summary> /// <param name="_year">Önskat år för urvalet.</param> /// <param name="_month">Önskad månad för urvalet. Om värdet är 0 ska alla månader inkluderas.</param> /// <param name="_kategori">Önskad kategori för urvalet.</param> /// <returns>Returnerar en lista med ProdSales innehållande samtliga produkter som sålts under angiven tidsperiod, samt antalet sålda. /// Listan är sorterad från flest sålda till minst sålda.</returns> public List<ProdSales> GetSoldProductsOrdered(int _year, int _month, ProdKategoriEnum _kategori) { // Sorterar fram endast de ordrar som ligger inom önskat tidsintervall. List<Order> oList = orderLst.Where(delegate(Order o) { // Årtal if (o.OrderDatum.Year != _year) return false; // Månad if (_month != 0 && o.OrderDatum.Month != _month) return false; return true; } ).ToList(); List<ProdSales> salesLst = new List<ProdSales>(); foreach (Order o in oList) { foreach (Orderrad r in o) { // Verifierar att produkten är av rätt kategori try { Produkt prod = produktLst.First(p => p.Varunr == r.Varunr); if (_kategori == 0 || prod.Kategori == _kategori) { if (salesLst.Exists(p => p.Prod.Varunr == r.Varunr)) { ProdSales ps = salesLst.First(p => p.Prod.Varunr == r.Varunr); ps.Antal += r.BestSaldo; } else salesLst.Add(new ProdSales(prod, r.BestSaldo)); } } catch (InvalidOperationException) // Produkten finns inte i produktlistan fastän den finns i en order. Det betyder att den är raderad. Vi ignorerar den. {} } } salesLst.Sort((o1, o2) => o1.CompareTo(o2)); return salesLst; }