private void UpdateSchedulerItem()

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);
        }
    }