public void LöscheEinkauf(Einkauf einkauf) { if (!IstLöschbar(einkauf)) { throw new InvalidOperationException("Dieser Einkauf ist nicht löschbar, er ist Teil einer schon abgerechneten Abrechnung."); } using (var transaktion = Kontext.Database.BeginOrReuseTransaction()) { if (einkauf.Abrechnung != null) { Abrechnungssteuerung.Entferne(einkauf.Abrechnung, einkauf); } Einkaufspositionssteuerung.LöschePositionen(einkauf.Positionen.ToList(), erzwinge: true); var überweisung = einkauf.Überweisung; Überweisungssteuerung.StorniereÜberweisung(überweisung, erzwinge: true); einkauf.Überweisung = null; Kontext.Einkäufe.Remove(einkauf); Kontext.SaveChanges(); transaktion?.Commit(); } EinkaufGelöscht?.Invoke(einkauf); }
public Datenbanksteuerung() : base(null) { kontext = null; abrechnungssteuerung = new Abrechnungssteuerung(this); benutzersteuerung = new Benutzersteuerung(this); einkaufsteuerung = new Einkaufsteuerung(this); einkaufspositionssteuerung = new Einkaufspositionssteuerung(this); kastengrößensteuerung = new Kastengrößensteuerung(this); kontosteuerung = new Kontosteuerung(this); produktsteuerung = new Produktsteuerung(this); überweisungssteuerung = new Überweisungssteuerung(this); verbrauchsteuerung = new Verbrauchsteuerung(this); verkaufsproduktsteuerung = new Verkaufsproduktsteuerung(this); zahlungssteuerung = new Zahlungssteuerung(this); }
public void NeuePosition(Einkaufsposition position, Einkauf einkauf) { if (!Einkaufsteuerung.IstLöschbar(einkauf)) { throw new InvalidOperationException("Zu diesem Einkauf kann keine Position mehr hinzugefügt werden."); } position.Einkauf = einkauf; einkauf.Positionen.Add(position); if (einkauf.Abrechnung != null && !einkauf.Abrechnung.Produkte.Contains(position.Kastengröße.Produkt)) { Abrechnungssteuerung.FügeHinzu(einkauf.Abrechnung, position.Kastengröße.Produkt); } Kontext.SaveChanges(); EinkaufspositionHinzugefügt?.Invoke(position); }