public PeriodisedPaymentEventKey(IPeriodisedPaymentEvent periodisedPaymentEvent) : base(periodisedPaymentEvent) { if (periodisedPaymentEvent == null) { throw new ArgumentNullException(nameof(periodisedPaymentEvent)); } ApprenticeshipId = periodisedPaymentEvent.ApprenticeshipId; AccountId = periodisedPaymentEvent.AccountId; TransferSenderAccountId = periodisedPaymentEvent.TransferSenderAccountId; ApprenticeshipEmployerType = periodisedPaymentEvent.ApprenticeshipEmployerType; Amount = periodisedPaymentEvent.AmountDue; DeliveryPeriod = periodisedPaymentEvent.DeliveryPeriod; PriceEpisodeIdentifier = periodisedPaymentEvent.PriceEpisodeIdentifier; TransactionType = periodisedPaymentEvent.TransactionType; }
public async Task <bool> IsDuplicate(IPeriodisedPaymentEvent periodisedPaymentEvent, CancellationToken cancellationToken) { logger.LogDebug($"Checking if periodised payment event of type {periodisedPaymentEvent.GetType().Name} with guid: {periodisedPaymentEvent.EventId} has already been received."); var periodisedPaymentEventKey = new PeriodisedPaymentEventKey(periodisedPaymentEvent); logger.LogDebug($"Earning event key: {periodisedPaymentEventKey.LogSafeKey}"); if (await cache.Contains(periodisedPaymentEventKey.Key, cancellationToken).ConfigureAwait(false)) { logger.LogWarning($"Key: {periodisedPaymentEventKey.LogSafeKey} found in the cache and is probably a duplicate."); return(true); } logger.LogDebug($"New periodised payment event. Event key: {periodisedPaymentEventKey.LogSafeKey}, event id: {periodisedPaymentEvent.EventId}"); await cache.Add(periodisedPaymentEventKey.Key, periodisedPaymentEventKey, cancellationToken); logger.LogInfo($"Added new periodised payment event to cache. Key: {periodisedPaymentEventKey.LogSafeKey}"); return(false); }