示例#1
0
 public IpDetailsController(IIPRequestHandlerService ipRequestHandlerService, IIPDetailsRepository ipDetailsRepository, IMapper mapper, IBatchRequestHandlerService batchRequestHandlerService)
 {
     IpRequestHandlerService = ipRequestHandlerService;
     IpDetailsRepository     = ipDetailsRepository;
     Mapper = mapper;
     BatchRequestHandlerService = batchRequestHandlerService;
 }
示例#2
0
 public IPInfoService(IMemoryCache memoryCache,
                      IUnitOfWork uow,
                      IIPDetailsRepository ipDetailsRepository)
 {
     _cache = memoryCache;
     _uow   = uow;
     _ipDetailsRepository = ipDetailsRepository;
 }
示例#3
0
 public IPDetailsUpdateBatchService(IMemoryCache memoryCache,
                                    IUnitOfWork uow,
                                    IBatchDetailsRepository batchDetailsRepository,
                                    IIPDetailsRepository ipDetailsRepository)
 {
     _cache = memoryCache;
     _uow   = uow;
     _batchDetailsRepository = batchDetailsRepository;
     _ipDetailsRepository    = ipDetailsRepository;
 }
示例#4
0
        /// <summary>
        /// Processes the job specified by it's unique identifier, using a context Transaction.
        /// </summary>
        /// <param name="jobKey">The job's unique identifier.</param>
        public void ProcessBatchJob(Guid jobKey)
        {
            using (IServiceScope scope = _iScopeFactory.CreateScope())
            {
                _logger.LogDebug($"Job: {jobKey}, has entered the process batch job scope");
                _logger.LogInformation($"Job: {jobKey} processing has began.");
                AppDbContext appDbContext = scope.ServiceProvider.GetRequiredService <AppDbContext>();

                _jobRepository       = scope.ServiceProvider.GetRequiredService <IJobRepository>();
                _ipDetailsRepository = scope.ServiceProvider.GetRequiredService <IIPDetailsRepository>();

                _ipModelsStored = _ipDetailsRepository.List();

                JobModel jobToProcess = _jobRepository.GetByJobKey(jobKey);

                JsonSerializerOptions options = new JsonSerializerOptions
                {
                    PropertyNameCaseInsensitive = true
                };

                IPDetailsToUpdateDTO[] itemsToProcess = JsonSerializer.Deserialize <IPDetailsToUpdateDTO[]>(jobToProcess.requestJSON, options);

                if (itemsToProcess.Count() == 0)
                {
                    _logger.LogError($"Job {jobKey} had zero items to process.");
                    throw new ArgumentException($"Job {jobKey} had zero items to process.");
                }

                try
                {
                    foreach (int i in Enumerable.Range(0, (itemsToProcess.Count() / _processedItemsPerBatch) + 1))
                    {
                        _logger.LogDebug($"Job {jobKey} is in batch {i} out of {(itemsToProcess.Count() / _processedItemsPerBatch) + 1}");
                        IEnumerable <IPDetailsToUpdateDTO> BatchItemsToProcess = itemsToProcess.Skip(i * _processedItemsPerBatch).Take(_processedItemsPerBatch);

                        BatchToProcess(ref jobToProcess, BatchItemsToProcess);
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError($"Job {jobKey} aborted unexpectedly. Exception message: {ex.Message}");
                    jobToProcess.BatchOperationResult = Kernel.Enums.Result.Aborted;
                    _jobRepository.UpdateAsync(jobToProcess);
                }

                SetJobCompleted(ref jobToProcess);
            }
        }
示例#5
0
 public IPInfoProvider(
     ICacheProvider cacheProvider, 
     IIPDetailsRepository detailsRepository,
     IBatchDetailsRepository batchDetailsRepository,
     IRequestProvider requestProvider,
     IPManagerConfig ipManagerConfig,
     IPInfoProviderConfig ipInfoProviderConfig,
     ILogger<IPInfoProvider> logger,
     IMapper mapper)
 {
     _cacheProvider = cacheProvider;
     _detailsRepository = detailsRepository;
     _batchDetailsRepository = batchDetailsRepository;
     _requestProvider = requestProvider;
     _ipManagerConfig = ipManagerConfig;
     _ipInfoProviderConfig = ipInfoProviderConfig;
     _logger = logger;
     _mapper = mapper;
 }
示例#6
0
 public IPDetailsService(IIPDetailsRepository IIPDetailsRepository)
 {
     _IIPDetailsRepository = IIPDetailsRepository;
 }