Ejemplo n.º 1
0
        public async Task StoreAsync(PointInTimeProvider provider, CancellationToken cancellationToken)
        {
            await _table.CreateIfNotExistsAsync(cancellationToken);

            var operation = TableOperation.InsertOrReplace(ModelToEntity(provider));
            await _table.ExecuteAsync(operation, cancellationToken);
        }
        private async Task ProcessProvider(
            PointInTimeProvider staging,
            Func <LearningProvider, DateTime, CancellationToken, Task> publishEvent,
            CancellationToken cancellationToken)
        {
            var current = await _providerRepository.GetProviderAsync(staging.UnitedKingdomProviderReferenceNumber, cancellationToken);

            staging.IsCurrent = current == null || staging.PointInTime > current.PointInTime;
            if (current != null && staging.IsCurrent)
            {
                current.IsCurrent = false;
            }

            var toStore = current == null || current.IsCurrent
                ? new[] { staging }
                : new[] { current, staging };

            await _providerRepository.StoreAsync(toStore, cancellationToken);

            _logger.Debug($"Stored {staging.UnitedKingdomProviderReferenceNumber} in repository");

            var learningProvider = await _mapper.MapAsync <LearningProvider>(staging, cancellationToken);

            await publishEvent(learningProvider, staging.PointInTime, cancellationToken);

            _logger.Debug($"Sent event for {staging.UnitedKingdomProviderReferenceNumber}");
        }
Ejemplo n.º 3
0
        private async Task <PointInTimeProvider[]> GetBatchOfProvidersAsync(long[] batchOfUkprns, DateTime?pointInTime, CancellationToken cancellationToken)
        {
            var providers = new PointInTimeProvider[batchOfUkprns.Length];

            for (var i = 0; i < batchOfUkprns.Length; i++)
            {
                providers[i] = await GetProviderAsync(batchOfUkprns[i], pointInTime, cancellationToken);
            }

            return(providers);
        }
Ejemplo n.º 4
0
 private ProviderEntity ModelToEntity(string partitionKey, string rowKey, PointInTimeProvider provider)
 {
     return(new ProviderEntity
     {
         PartitionKey = partitionKey,
         RowKey = rowKey,
         ProviderJson = JsonConvert.SerializeObject(provider),
         PointInTime = provider.PointInTime,
         IsCurrent = provider.IsCurrent,
     });
 }
Ejemplo n.º 5
0
 private ProviderEntity ModelToEntityForStaging(PointInTimeProvider provider)
 {
     return(ModelToEntity(GetStagingPartitionKey(provider.PointInTime),
                          provider.UnitedKingdomProviderReferenceNumber.ToString(), provider));
 }
Ejemplo n.º 6
0
 private ProviderEntity ModelToEntity(string rowKey, PointInTimeProvider provider)
 {
     return(ModelToEntity(provider.UnitedKingdomProviderReferenceNumber.ToString(), rowKey, provider));
 }
Ejemplo n.º 7
0
 private ProviderEntity ModelToEntity(PointInTimeProvider provider)
 {
     return(ModelToEntity(provider.PointInTime.ToString("yyyyMMdd"), provider));
 }