public void BestellingToegevoegd(BestellingToegevoegdEvent bestellingEvent)
        {
            bestellingEvent.Bestelling.BesteldeArtikelen.ForEach(b => b.Artikel = null);
            bestellingEvent.Bestelling.Klant = null;

            _datamapper.Insert(bestellingEvent.Bestelling);
            _logger.LogDebug("Added bestelling {id}", bestellingEvent.Bestelling.Id);
        }
        public async Task <int> PlaatsBestelling(NieuweBestellingCommand nieuweBestellingCommand)
        {
            var bestellingItems = new List <BestellingItem>();

            nieuweBestellingCommand.BesteldeArtikelen.ForEach(a =>
            {
                bestellingItems.Add(new BestellingItem {
                    Artikelnummer = a.Artikelnummer, Aantal = a.Aantal
                });
            });

            var bestelling = new Bestelling
            {
                KlantId           = nieuweBestellingCommand.KlantId,
                AdresRegel1       = nieuweBestellingCommand.AdresRegel1,
                AdresRegel2       = nieuweBestellingCommand.AdresRegel2,
                Postcode          = nieuweBestellingCommand.Postcode,
                Plaats            = nieuweBestellingCommand.Plaats,
                BesteldeArtikelen = bestellingItems
            };

            await _datamapper.Insert(bestelling);

            //get full bestelling so all data like artikel prices are filled in
            var fullBestelling = await _datamapper.GetBestelling(bestelling.Id);

            if (fullBestelling.GetTotaalPrijs + fullBestelling.Klant.KredietMetSales > NameConstants.KredietLimit)
            {
                fullBestelling.BestellingStatus = BestellingStatus.TerControleVoorSales;
            }
            else
            {
                fullBestelling.BestellingStatus   = BestellingStatus.GereedVoorBehandeling;
                fullBestelling.Klant.KredietOver -= fullBestelling.GetTotaalPrijs;
            }

            fullBestelling.Klant.KredietMetSales += fullBestelling.GetTotaalPrijs;
            await _klantDatamapper.Update(fullBestelling.Klant);

            await _datamapper.Update(fullBestelling);

            _eventPublisher.Publish(new BestellingToegevoegdEvent {
                Bestelling = bestelling
            });
            _eventPublisher.Publish(new KlantKredietAangepastEvent()
            {
                KlantId = fullBestelling.Klant.Id, NieuweKrediet = fullBestelling.Klant.KredietOver
            });

            _logger.LogInformation("Created new Bestelling with id {id} and {amount} artikelen", bestelling.Id,
                                   bestelling.BesteldeArtikelen.Count);

            return(bestelling.Id);
        }