public void Abschliessen()
        {
            BestellungSpecs.NichtAbgeschlossen
            .And(Specs.Existiert)
            .ThrowDomainErrorIfNotStatisfied(this);

            ArtikelSpecs.Zugeordnet
            .And(ArtikelSpecs.Status(ArtikelStatus.Offen))
            .ForAll()
            .ThrowDomainErrorIfNotStatisfied(this.Artikel);

            var zugeordneteArtikel = (from artikel in this.Artikel
                                      group artikel by artikel.Benutzer
                                      into artikelNachBenutzer
                                      select artikelNachBenutzer).ToArray();

            foreach (var artikelNachBenutzer in zugeordneteArtikel)
            {
                var beschreibung = $"Bestellung bei {this.state.Lieferdienst}";
                var betrag       = artikelNachBenutzer.Sum(a => a.Betrag);
                var datum        = this.state.Datum;
                var e            = new BezahlungAngefordert(artikelNachBenutzer.Key, beschreibung, betrag, datum);
                this.Emit(e);
            }

            if (!zugeordneteArtikel.Any())
            {
                this.Emit(new BestellungAbgeschlossen());
            }
        }
 public void Apply(BezahlungAngefordert e)
 {
     this.UpdateArtikel(e.Benutzer, a => a.Status = ArtikelStatus.BezahlungAngefordert);
 }