Beispiel #1
0
        private Provider MapFromUkrlpProviderRecord(ProviderRecordStructure record)
        {
            var aliases = record.ProviderAliases?.Where(pa => !string.IsNullOrEmpty(pa.ProviderAlias)).Select(pa => pa.ProviderAlias).ToList() ?? new List <string>();

            var provider = new Provider
            {
                UnitedKingdomProviderReferenceNumber = record.UnitedKingdomProviderReferenceNumber,
                ProviderName    = record.ProviderName,
                ProviderAliases = aliases.Any() ? aliases : null,
                ProviderContact = record.ProviderContact?.Select(MapFromContact)
            };

            return(provider);
        }
Beispiel #2
0
        private UkrlpSyncHelper SetupUkrlpSyncHelper(int ukprn, ProviderRecordStructure ukrlpProviderData)
        {
            var ukrlpWcfService = new Mock <IUkrlpService>();

            ukrlpWcfService.Setup(w => w.GetProviderData(ukprn)).ReturnsAsync(ukrlpProviderData);

            var loggerFactory = new Mock <ILoggerFactory>();

            loggerFactory.Setup(mock => mock.CreateLogger(It.IsAny <string>())).Returns(Mock.Of <ILogger>());

            return(new UkrlpSyncHelper(
                       ukrlpWcfService.Object,
                       CosmosDbQueryDispatcher.Object,
                       Clock,
                       loggerFactory.Object));
        }
Beispiel #3
0
        private UkrlpSyncHelper SetupUkrlpSyncHelper(int ukprn, ProviderRecordStructure ukrlpProviderData)
        {
            var ukrlpWcfService = new Mock <IUkrlpService>();

            ukrlpWcfService
            .Setup(w => w.GetProviderData(It.Is <IEnumerable <int> >(v => v.SequenceEqual(new[] { ukprn }))))
            .ReturnsAsync(new Dictionary <int, ProviderRecordStructure>()
            {
                { ukprn, ukrlpProviderData }
            });

            var loggerFactory = new Mock <ILoggerFactory>();

            loggerFactory.Setup(mock => mock.CreateLogger(It.IsAny <string>())).Returns(Mock.Of <ILogger>());

            return(new UkrlpSyncHelper(
                       ukrlpWcfService.Object,
                       CosmosDbQueryDispatcher.Object,
                       Clock,
                       loggerFactory.Object));
        }
        private async Task <CreateOrUpdateResult> CreateOrUpdateProvider(ProviderRecordStructure providerData)
        {
            var ukprn = int.Parse(providerData.UnitedKingdomProviderReferenceNumber);

            var existingProvider = await GetProvider(ukprn);

            var contact = SelectContact(providerData.ProviderContact);

            if (existingProvider == null)
            {
                var providerId = Guid.NewGuid();

                await _cosmosDbQueryDispatcher.ExecuteQuery(
                    new CreateProviderFromUkrlpData()
                {
                    Alias       = providerData.ProviderAliases.FirstOrDefault()?.ProviderAlias,
                    Aliases     = providerData.ProviderAliases.Select(MapAlias),
                    DateUpdated = _clock.UtcNow,
                    ProviderId  = providerId,
                    Contacts    = contact != null ?
                                  new List <ProviderContact>()
                    {
                        MapContact(contact)
                    } :
                    new List <ProviderContact>(),
                    ProviderName   = providerData.ProviderName,
                    ProviderStatus = providerData.ProviderStatus,
                    ProviderType   = NewProviderProviderType,
                    Status         = NewProviderProviderStatus,
                    Ukprn          = ukprn,
                    UpdatedBy      = UpdatedBy
                });

                return(CreateOrUpdateResult.Created);
            }
            else
            {
                await _cosmosDbQueryDispatcher.ExecuteQuery(
                    new UpdateProviderFromUkrlpData()
                {
                    Alias       = providerData.ProviderAliases.FirstOrDefault()?.ProviderAlias,
                    Aliases     = providerData.ProviderAliases.Select(MapAlias),
                    DateUpdated = _clock.UtcNow,
                    ProviderId  = existingProvider.Id,
                    Contacts    = contact != null ?
                                  new List <ProviderContact>()
                    {
                        MapContact(contact)
                    } :
                    new List <ProviderContact>(),
                    ProviderName   = providerData.ProviderName,
                    ProviderStatus = providerData.ProviderStatus,
                    UpdatedBy      = UpdatedBy
                });

                var oldStatusCode = MapProviderStatusDescription(existingProvider.ProviderStatus);
                var newStatusCode = MapProviderStatusDescription(providerData.ProviderStatus);

                var deactivating = !IsDeactivatedStatus(oldStatusCode) && IsDeactivatedStatus(newStatusCode);

                if (deactivating)
                {
                    await _cosmosDbQueryDispatcher.ExecuteQuery(new ArchiveApprenticeshipsForProvider()
                    {
                        Ukprn = ukprn
                    });

                    await _cosmosDbQueryDispatcher.ExecuteQuery(new ArchiveCoursesForProvider()
                    {
                        Ukprn = ukprn
                    });
                }

                return(CreateOrUpdateResult.Updated);
            }
        }