in src/MeteredTriggerJob/MeteredTriggerHelper.cs [253:306]
private void UpdateSchedulerItem(SchedulerManagerViewModel item,string requestJson,string responseJson,string status)
{
try
{
LogLine($"Scheduled Item Id: {item.Id} Saving Audit information", true);
var scheduler = schedulerService.GetSchedulerDetailById(item.Id);
var newMeteredAuditLog = new MeteredAuditLogs()
{
RequestJson = requestJson,
ResponseJson = responseJson,
StatusCode = status,
RunBy = $"Scheduler - {scheduler.SchedulerName}",
SubscriptionId = scheduler.SubscriptionId,
SubscriptionUsageDate = DateTime.UtcNow,
CreatedBy = 0,
CreatedDate = DateTime.Now,
};
subscriptionUsageLogsRepository.Save(newMeteredAuditLog);
if ((status == "Accepted"))
{
LogLine($"Scheduled Item Id: {item.Id} Meter event Accepted", true);
//Ignore updating NextRuntime value for OneTime frequency as they always depend on StartTime value
Enum.TryParse(item.Frequency, out SchedulerFrequencyEnum itemFrequency);
if (itemFrequency != SchedulerFrequencyEnum.OneTime)
{
scheduler.NextRunTime = GetNextRunTime(item.NextRunTime ?? item.StartDate, itemFrequency);
LogLine($"Scheduled Item Id: {item.Id} Updating Scheduler NextRunTime from {item.NextRunTime} to {scheduler.NextRunTime}", true);
schedulerService.UpdateSchedulerNextRunTime(scheduler);
}
}
else
{
LogLine($"Scheduled Item Id: {item.Id} failed with status {status}. NextRunTime will not be updated.", true);
}
LogLine($"Scheduled Item Id: {item.Id} Complete Triggering Meter event.", true);
// Check if Sending Email is Enabled
_= bool.TryParse(applicationConfigService.GetValueByName("EnablesSuccessfulSchedulerEmail"), out bool enablesSuccessfulSchedulerEmail);
_ = bool.TryParse(applicationConfigService.GetValueByName("EnablesFailureSchedulerEmail"), out bool enablesFailureSchedulerEmail);
if(enablesFailureSchedulerEmail || enablesSuccessfulSchedulerEmail)
{
LogLine("Send scheduled Email");
schedulerService.SendSchedulerEmail(item, newMeteredAuditLog);
}
}
catch (Exception ex)
{
LogLine(ex.Message);
}
}