예제 #1
0
        public void BearbeitePosition(Einkaufsposition position)
        {
            if (!Einkaufsteuerung.IstLöschbar(position.Einkauf))
            {
                throw new InvalidOperationException("Die Position dieses Einkaufs kann nicht mehr bearbeitet werden.");
            }

            Kontext.SaveChanges();
            EinkaufspositionVerändert?.Invoke(position);
        }
예제 #2
0
        public void LöschePosition(Einkaufsposition position, bool erzwinge = false)
        {
            if (!erzwinge && !Einkaufsteuerung.IstLöschbar(position.Einkauf))
            {
                throw new InvalidOperationException("Aus diesem Einkauf kann keine Position mehr gelöscht werden.");
            }

            Kontext.Einkaufspositionen.Remove(position); // Nebeneffekt: Wird aus Einkauf gelöscht
            Kontext.SaveChanges();
            EinkaufspositionGelöscht?.Invoke(position);
        }
예제 #3
0
        public void LöschePositionen(ICollection <Einkaufsposition> positionen, bool erzwinge = false)
        {
            if (!erzwinge && positionen.Any(p => !Einkaufsteuerung.IstLöschbar(p.Einkauf)))
            {
                throw new InvalidOperationException("Aus diesem Einkauf kann keine Position mehr gelöscht werden.");
            }

            Kontext.Einkaufspositionen.RemoveRange(positionen);
            Kontext.SaveChanges();
            foreach (var position in positionen)
            {
                EinkaufspositionGelöscht?.Invoke(position);
            }
        }
예제 #4
0
        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);
        }