public FileDetailsDataService(
     IFileDetailsRepository repository,
     ILRConfiguration configuration)
 {
     _repository    = repository;
     _configuration = configuration;
 }
        public async Task <IList <ILR1718.EsfLearningDeliveryDeliverablePeriodisedValues> > Get1718PeriodisedValues(
            int ukPrn,
            ILRConfiguration configuration,
            CancellationToken cancellationToken)
        {
            IList <ILR1718.EsfLearningDeliveryDeliverablePeriodisedValues> values = null;

            try
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    return(null);
                }

                var optionsBuilder = new DbContextOptionsBuilder <ILR1718.ILR1718Context>();
                optionsBuilder.UseSqlServer(
                    configuration.ILR1718ConnectionString,
                    providerOptions => providerOptions.CommandTimeout(60));

                using (_1718Context = new ILR1718.ILR1718Context(optionsBuilder.Options))
                {
                    values = await _1718Context.EsfLearningDeliveryDeliverablePeriodisedValues
                             .Where(v => v.Ukprn == ukPrn)
                             .ToListAsync(cancellationToken);
                }
            }
            catch (Exception ex)
            {
                // _logger.LogError($"Failed to get 17/18 FM70 periodised values with ukPrn {ukPrn}", ex);
            }

            return(values);
        }
 public FM70DataService(
     IFM70Repository repository,
     IFM70Mapper mapper,
     ILRConfiguration configuration)
 {
     _repository    = repository;
     _mapper        = mapper;
     _configuration = configuration;
 }
        public async Task TestDataServiceDoesntBlowUp()
        {
            var container = new ContainerBuilder();

            container.RegisterModule <DependencyInjectionModule>();

            container.Build();

            const int ukPrn = 10006439;

            var config = new ILRConfiguration
            {
                ILR1617ConnectionString = string.Empty,
                ILR1718ConnectionString = string.Empty
            };

            var repo        = new FM70Repository();
            var mapper      = new FM70Mapper();
            var dataService = new FM70DataService(repo, mapper, config);

            var result = await dataService.GetPeriodisedValues(ukPrn, CancellationToken.None);
        }
        public async Task <ILRFileDetails> GetLatest1718FileDetailsPerUkPrn(
            int ukPrn,
            ILRConfiguration configuration,
            CancellationToken cancellationToken)
        {
            ILRFileDetails result = null;

            try
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    return(null);
                }

                var optionsBuilder = new DbContextOptionsBuilder <ILR1718.ILR1718Context>();
                optionsBuilder.UseSqlServer(
                    configuration.ILR1617ConnectionString,
                    providerOptions => providerOptions.CommandTimeout(60));

                using (_1718Context = new ILR1718.ILR1718Context(optionsBuilder.Options))
                {
                    result = await _1718Context.FileDetails
                             .Where(fd => fd.Ukprn == ukPrn)
                             .OrderByDescending(fd => fd.SubmittedTime)
                             .Select(fd => new ILRFileDetails
                    {
                        FileName       = fd.Filename,
                        LastSubmission = fd.SubmittedTime
                    }).FirstOrDefaultAsync(cancellationToken);
                }
            }
            catch (Exception ex)
            {
                // _logger.LogError($"Failed to get 17/18 file details with ukPrn {ukPrn}", ex);
            }

            return(result);
        }