public async Task BestellingVerzonden(BestellingVerzondenEvent bestellingVerzondenEvent)
        {
            var bestelling = await _datamapper.Get(bestellingVerzondenEvent.Id);

            bestelling.BestellingStatus = BestellingStatus.Verzonden;

            await _datamapper.Update(bestelling);

            _logger.LogDebug("Updated bestelling {id} to verzonden", bestellingVerzondenEvent.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);
        }