public IpDetailsController(IIPRequestHandlerService ipRequestHandlerService, IIPDetailsRepository ipDetailsRepository, IMapper mapper, IBatchRequestHandlerService batchRequestHandlerService) { IpRequestHandlerService = ipRequestHandlerService; IpDetailsRepository = ipDetailsRepository; Mapper = mapper; BatchRequestHandlerService = batchRequestHandlerService; }
public IPInfoService(IMemoryCache memoryCache, IUnitOfWork uow, IIPDetailsRepository ipDetailsRepository) { _cache = memoryCache; _uow = uow; _ipDetailsRepository = ipDetailsRepository; }
public IPDetailsUpdateBatchService(IMemoryCache memoryCache, IUnitOfWork uow, IBatchDetailsRepository batchDetailsRepository, IIPDetailsRepository ipDetailsRepository) { _cache = memoryCache; _uow = uow; _batchDetailsRepository = batchDetailsRepository; _ipDetailsRepository = ipDetailsRepository; }
/// <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); } }
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; }
public IPDetailsService(IIPDetailsRepository IIPDetailsRepository) { _IIPDetailsRepository = IIPDetailsRepository; }