public override bool LaddaOrdrar(ref List<Order> orderLst) { orderLst.Clear(); if (!File.Exists(Path.Combine(dataPath, orderFileName))) return false; using (StreamReader reader = File.OpenText(Path.Combine(dataPath, orderFileName))) { string line; try { while ((line = reader.ReadLine()) != null) { string[] fields = line.Split(';'); DateTime dt = new DateTime(); dt = DateTime.ParseExact(fields[1], "yyyyMMdd", null); Order order = new Order(Int64.Parse(fields[0]), dt); for(int i=0;i<Int32.Parse(fields[2]);i++) { line = reader.ReadLine(); string[] rowFields = line.Split(';'); order.AdderaOrderrad(Int64.Parse(rowFields[0]), rowFields[1], Int32.Parse(rowFields[2]), Int32.Parse(rowFields[3])); } orderLst.Add(order); } } catch(Exception) { return false; } return true; } }
/// <summary> /// Denna metod jämför två instanser av klassen. Detta möjliggör sortering i en List<Order>. /// </summary> public int CompareTo(Order _o) { if (this.OrderDatum.Year > _o.OrderDatum.Year) return 1; else if (this.OrderDatum.Year < _o.OrderDatum.Year) return -1; else return 0; }
/// <summary> /// Lägger till en order till listan. Sparas även till fil. /// </summary> /// <param name="_order">Den order som ska sparas.</param> public void AdderaOrder(Order _order) { if (orderLst.Count > 0) _order.Ordernr = orderLst.Max(o => o.Ordernr + 1); else _order.Ordernr = 1; orderLst.Add(_order); lagring.SparaOrdrar(orderLst); // Räkna ner lagersaldot foreach (Orderrad r in _order.RadLst) SubtraheraProduktSaldo(r.Varunr, r.BestSaldo); lagring.SparaProdukter(produktLst); }
/// <summary> /// Callback-metod som anropas då användaren slutför köpet. /// </summary> private void execBuyBtn_Click(object sender, EventArgs e) { bool isOk = true; bool skrivUtKvitto = false; Order order; if (varukorgDgw.RowCount == 0) return; foreach (DataGridViewRow row in varukorgDgw.Rows) { if (Int32.Parse(row.Cells["SaldoCol"].Value.ToString()) > ((Produkt)row.Tag).Saldo) { isOk = false; break; } } if (!isOk) MessageBox.Show("Alla produkter finns inte på lager i önskat antal. Anpassa köpet.", "Lagersaldon", MessageBoxButtons.OK); else // Köpet går igenom { DialogResult res; res = MessageBox.Show("Köpet slutförs nu. Vill du skriva ut ett kvitto?", "Slutför köp", MessageBoxButtons.YesNoCancel); if (res == DialogResult.Cancel) // Köpet avbryts return; else if (res == DialogResult.Yes) skrivUtKvitto = true; order = new Order(); foreach (DataGridViewRow row in varukorgDgw.Rows) { Produkt prod = (Produkt)row.Tag; int antal = Int32.Parse(row.Cells["SaldoCol"].Value.ToString()); order.AdderaOrderrad(prod.Varunr, prod.Namn, prod.Pris, antal); } butik.AdderaOrder(order); // Kvitto-utskrift if (skrivUtKvitto) order.PrintKvitto(); varukorgDgw.Rows.Clear(); butikSearchForm.Init(); } }