public void SetProcessFrequency(ProcessControlId process, int frequency) { using (var conn = this.connectionFactory.GetEddsPerformanceConnection()) { conn.Execute(Resources.SetProcessControlFrequency, new { frequency, processControlId = (int)process }); } }
public ProcessControl ReadById(ProcessControlId processControlId) { using (var connection = this.connectionFactory.GetEddsPerformanceConnection()) { return(connection.QueryFirstOrDefault <ProcessControl>(Resources.ProcessControl_ReadById, new { id = (int)processControlId })); } }
public async Task <bool> HasRunSuccessfully(ProcessControlId processControlId, DateTime timeThreshold) { using (var connection = this.connectionFactory.GetEddsPerformanceConnection()) { return(await connection.QueryFirstOrDefaultAsync <bool>(Resources.ProcessControl_HasRunSuccessfully, new { id = (int)processControlId, timeThreshold })); } }
public async Task <ProcessControl> ReadByIdAsync(ProcessControlId processControlId) { using (var connection = this.connectionFactory.GetEddsPerformanceConnection()) { return(await connection.QueryFirstOrDefaultAsync <ProcessControl>(Resources.ProcessControl_ReadById, new { id = (int)processControlId })); } }
public async Task Execute(ProcessControlId processControlId, Action func) { var processControl = await this.processControlRepository.ReadByIdAsync(processControlId); if (processControl == null) { this.logger.WithCategory(processControlId.ToString()).LogVerbose("Skipping due to process control interval."); return; } var execSucceeded = processControl.LastExecSucceeded; try { var utcDate = DateTime.UtcNow; this.logger.LogVerbose($"Calling '{func.Method.Name}'"); var interval = processControl.Frequency.GetValueOrDefault(10080); if (interval > 0 && processControl.LastProcessExecDateTime.AddMinutes(interval) <= utcDate) { func.Invoke(); processControl.LastProcessExecDateTime = utcDate; execSucceeded = true; } else { this.logger.LogVerbose($"'{func.Method.Name}' Called - Skipping due to interval"); } } catch (Exception ex) { var message = ex.GetExceptionDetails(); this.logger.LogError($"'{func.Method.Name}' Called - Failure. Details: {message}"); execSucceeded = false; processControl.LastErrorMessage = ex.ToString(); } finally { processControl.LastExecSucceeded = execSucceeded; await this.processControlRepository.UpdateAsync(processControl); } }