public ValidHeaderData MapData(IMessage message)
        {
            var ukprn = message.LearningProviderEntity.UKPRN;

            var validHeaderData = new ValidHeaderData();

            validHeaderData.CollectionDetails = new List <CollectionDetail>()
            {
                new CollectionDetail
                {
                    UKPRN               = ukprn,
                    Collection          = message.HeaderEntity.CollectionDetailsEntity.CollectionString,
                    FilePreparationDate = message.HeaderEntity.CollectionDetailsEntity.FilePreparationDate,
                    Year = message.HeaderEntity.CollectionDetailsEntity.YearString
                }
            };

            validHeaderData.LearningProviders = new List <LearningProvider>()
            {
                new LearningProvider
                {
                    UKPRN = ukprn
                }
            };

            var source = message.HeaderEntity.SourceEntity;

            validHeaderData.Sources = new List <Source>()
            {
                new EF.Valid.Source
                {
                    UKPRN = ukprn,
                    ComponentSetVersion = source.ComponentSetVersion,
                    DateTime            = source.DateTime,
                    ProtectiveMarking   = source.ProtectiveMarkingString,
                    ReferenceData       = source.ReferenceData,
                    Release             = source.Release,
                    SerialNo            = source.SerialNo,
                    SoftwarePackage     = source.SoftwarePackage,
                    SoftwareSupplier    = source.SoftwareSupplier
                }
            };

            validHeaderData.SourceFiles = message
                                          .SourceFilesCollection?
                                          .Select(sf => new SourceFile
            {
                UKPRN               = ukprn,
                DateTime            = sf.DateTimeNullable,
                FilePreparationDate = sf.FilePreparationDate,
                Release             = sf.Release,
                SerialNo            = sf.SerialNo,
                SoftwarePackage     = sf.SoftwarePackage,
                SoftwareSupplier    = sf.SoftwareSupplier,
                SourceFileName      = sf.SourceFileName,
            }).ToList()
                                          ?? new List <EF.Valid.SourceFile>();

            return(validHeaderData);
        }
 public Task StoreValidHeaderDataAsync(ValidHeaderData validHeaderData, SqlConnection sqlConnection, CancellationToken cancellationToken)
 => _validHeaderDataStoreService.StoreAsync(validHeaderData, sqlConnection, cancellationToken);