Exemplo n.º 1
0
 public void SetProcessFrequency(ProcessControlId process, int frequency)
 {
     using (var conn = this.connectionFactory.GetEddsPerformanceConnection())
     {
         conn.Execute(Resources.SetProcessControlFrequency, new { frequency, processControlId = (int)process });
     }
 }
Exemplo n.º 2
0
 public ProcessControl ReadById(ProcessControlId processControlId)
 {
     using (var connection = this.connectionFactory.GetEddsPerformanceConnection())
     {
         return(connection.QueryFirstOrDefault <ProcessControl>(Resources.ProcessControl_ReadById,
                                                                new { id = (int)processControlId }));
     }
 }
Exemplo n.º 3
0
 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 }));
     }
 }
Exemplo n.º 4
0
 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 }));
     }
 }
Exemplo n.º 5
0
        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);
            }
        }