Пример #1
0
        public void HandleBetalingVerwerken(Betaling betaling)
        {
            var klantnummer = _bestellingDataMapper.GetByFactuurnummer(betaling.Factuurnummer).Klantnummer;

            betaling.Klantnummer = klantnummer;
            try
            {
                _betalingDataMapper.Insert(betaling);
            }
            catch (Exception ex)
            {
                _logger.LogError("DB exception occured with factuurnummer: {0}", betaling.Factuurnummer);
                _logger.LogDebug(
                    "DB exception occured with betaling {}, it threw exception: {}. Inner exception: {}",
                    betaling, ex.Message, ex.InnerException?.Message
                    );
                throw new InvalidFactuurnummerException("Something unexpected happend while inserting into the database");
            }
            ProcessBestellingVerwerken(klantnummer);
        }
        public async Task <ActionResult <BevestigdeBestelling> > GetNextBestelling()
        {
            var email   = _jwtHelper.GetEmail(HttpContext);
            var session = _magazijnSessionDataMapper.Find(m => m.MedewerkerEmail == email).FirstOrDefault();

            var bestelling = session != null
            ? _bestellingDataMapper.GetByFactuurnummer(session.Factuurnummer)
            : _bestellingDataMapper
                             .Find(f => f.BestelStatus == BffWebshopBestelStatus.Goedgekeurd)
                             .OrderBy(b => b.Besteldatum)
                             .FirstOrDefault();

            if (bestelling == null)
            {
                _logger.LogInformation("Couldn't find any bestelling that has status: Goedgekeurd");
                return(NoContent());
            }

            try
            {
                if (session == null)
                {
                    await VerstuurUpdateBestelStatus(bestelling.Factuurnummer, BffWebshopBestelStatus.WordtIngepakt);

                    _magazijnSessionDataMapper.Insert(new MagazijnSessionEntity
                    {
                        Factuurnummer   = bestelling.Factuurnummer,
                        MedewerkerEmail = email
                    });
                }

                return(bestelling);
            }
            catch (TimeoutException)
            {
                _logger.LogError("UpdateBestelStatusCommand resulted in a TimeoutException.");
                return(StatusCode((int)HttpStatusCode.RequestTimeout, "Aanvraag kon niet worden verwerkt"));
            }
            catch (Exception ex)
            {
                _logger.LogError("UpdateBestelStatusCommand after GetNextOrder resulted in an error.");
                _logger.LogDebug(
                    "Exception occured during execution of UpdateBestelStatusCommand when getting next order, it threw exception: {}. Inner exception: {}",
                    ex.Message, ex.InnerException?.Message
                    );

                return(StatusCode(
                           (int)HttpStatusCode.InternalServerError,
                           "Er is een fout opgetreden tijdens het updaten van de bestelstatus"
                           ));
            }
        }
        public void HandleBetalingGeaccrediteerdEvent(BestellingGeaccrediteerdEvent message)
        {
            var bestelling = _bestellingDataMapper.GetByFactuurnummer(message.Factuurnummer);

            var status = bestelling.BestelStatus;

            bestelling.BestelStatus = status < BestelStatus.Betaald && status != BestelStatus.Verzonden
                ? BestelStatus.Goedgekeurd
                : BestelStatus.Afgerond;

            _bestellingDataMapper.Update(bestelling);

            var statusBijGewerktEvent = new BestelStatusBijgewerktEvent(bestelling, NameConstants.BestelServiceBestelStatusUpgedateEvent);

            _eventPublisher.Publish(statusBijGewerktEvent);
        }
        private Bestelling GetBestellingByFactuurNummer(long factuurnummer)
        {
            try
            {
                return(_bestellingDataMapper.GetByFactuurnummer(factuurnummer));
            }
            catch (Exception ex)
            {
                _logger.LogError("DB exception occured with factuurnummer: {0}", factuurnummer);
                _logger.LogDebug(
                    "DB exception occured while finding factuurnummer {}, it threw exception: {}. Inner exception: {}",
                    factuurnummer, ex.Message, ex.InnerException?.Message
                    );

                throw new DatabaseException("Something unexpected happend while find bestelling in the database");
            }
        }