private void Handle(Command command, KundeErfassen aktion)
 {
     var repo = new KundeRepository(aktion.KundenId, _eventStore);
     var kunde = repo.Retrieve();
     kunde.Erfassen(aktion.Name, aktion.Anschrift);
     repo.Commit();
 }
 private void Handle(Command command, AnschriftAendern aktion)
 {
     var repo = new KundeRepository(aktion.KundenId, _eventStore);
     var kunde = repo.Retrieve();
     kunde.AnschriftAendern(aktion.NeueAnschrift);
     repo.Commit();
 }
        private void Handle(Command command, AuftragErfassen aktion)
        {
            var repo = new AuftragRepository(aktion.AuftragsId, _eventStore);
            var auftrag = repo.Retrieve();

            var produktrepo = new ProduktRepository(aktion.Produkt, _eventStore);
            var kunderepo = new KundeRepository(aktion.Kunde, _eventStore);

            auftrag.Erfassen(produktrepo.Retrieve(), aktion.Menge, kunderepo.Retrieve());

            produktrepo.Commit();
            repo.Commit();
        }
 private void Handle(CommandEnvelope commandEnvelope, WarenkorbBestellen aktion, UnitOfWork unitOfWork)
 {
     var warenkorb = new WarenkorbRepository(unitOfWork).Retrieve(aktion.Warenkorb);
     var auftrags_repo = new AuftragRepository(unitOfWork);
     var produkt_repo = new ProduktRepository(unitOfWork);
     var kunde_repo = new KundeRepository(unitOfWork);
     warenkorb.Bestellen((produkt, menge, kunde) =>
         {
             var id = Guid.NewGuid();
             var auftrag = auftrags_repo.Retrieve(id);
             auftrag.Erfassen(id, produkt, menge, kunde_repo.Retrieve(kunde));
         });
 }