public void BaseSetup()
        {
            MockCurrentDateTime = new Mock <ICurrentDateTime>();
            MockCurrentDateTime.SetupGet(x => x.Now).Returns(new DateTime(2017, 6, 10));

            MockUlnValidator          = new Mock <IUlnValidator>();
            MockAcademicYearValidator = new Mock <IAcademicYearValidator>();

            Validator = new ApprenticeshipValidator(MockCurrentDateTime.Object, MockUlnValidator.Object, MockAcademicYearValidator.Object);

            ExampleValidApprenticeship = new Apprenticeship
            {
                FirstName   = "Bob",
                LastName    = "Smith",
                NINumber    = ApprenticeshipTestDataHelper.CreateValidNino(),
                ULN         = ApprenticeshipTestDataHelper.CreateValidULN(),
                ProviderRef = "Provider ref",
                EmployerRef = null,
                StartDate   = DateTime.Now.AddYears(5),
                EndDate     = DateTime.Now.AddYears(7)
            };
        }
示例#2
0
        public static async Task Run(
            string input,          // Work around https://github.com/Azure/azure-functions-vs-build-sdk/issues/168
            ILogger log,
            [Inject] IConfigurationRoot configuration,
            [Inject] IApprenticeshipCollectionService apprenticeshipCollectionService,
            [Inject] ICosmosDbHelper cosmosDbHelper,
            [Inject] IBlobStorageHelper blobhelper,
            [Inject] IUkrlpApiService ukrlpApiService
            )
        {
            const string apprenticeshipAppName = "Validate.Apprenticeship";

            var apprenticeshipValidationFileName = $"{apprenticeshipAppName}-{DateTime.Now.ToString("dd-MM-yy HHmm")}";
            var blobContainer = blobhelper.GetBlobContainer(configuration["BlobStorageSettings:Container"]);
            var validator     = new ApprenticeshipValidator();

            List <ApprenticeshipValidationResult> validationEResult = new List <ApprenticeshipValidationResult>();

            var stopWatch = new Stopwatch();

            stopWatch.Start();

            var resultData = await apprenticeshipCollectionService.GetAllApprenticeshipsAsync();

            foreach (var item in resultData)
            {
                //item.ContactEmail = "testing";
                //item.Url = "testing";
                //item.ContactWebsite = "testing";
                //item.ContactTelephone = "101101abc";
                //item.ApprenticeshipTitle = item.ApprenticeshipTitle + " @";

                var validationResult = validator.Validate(item);

                if (!validationResult.IsValid)
                {
                    foreach (var error in validationResult.Errors)
                    {
                        validationEResult.Add(new ApprenticeshipValidationResult()
                        {
                            ApprenticeshipId = item.ApprenticeshipId,
                            ProviderUkprn    = item.ProviderUKPRN,
                            FieldName        = error.PropertyName,
                            ErrorMessage     = error.ErrorMessage
                        });
                    }
                }
            }

            var resultsObjBytes = GetResultAsByteArray(validationEResult);

            await WriteResultsToBlobStorage(resultsObjBytes);

            stopWatch.Stop();

            byte[] GetResultAsByteArray(IList <ApprenticeshipValidationResult> message)
            {
                using (var memoryStream = new System.IO.MemoryStream())
                {
                    using (var streamWriter = new System.IO.StreamWriter(memoryStream))
                        using (var csvWriter = new CsvWriter(streamWriter, CultureInfo.InvariantCulture))
                        {
                            csvWriter.WriteRecords <ApprenticeshipValidationResult>(message);
                        }
                    return(memoryStream.ToArray());
                }
            }

            async Task WriteResultsToBlobStorage(byte[] data)
            {
                await blobhelper.UploadFile(blobContainer, apprenticeshipValidationFileName, data);
            }
        }