public void AddAutomationVersion(AutomationViewModel automationViewModel) { AutomationVersion automationVersion = new AutomationVersion(); automationVersion.CreatedBy = httpContextAccessor.HttpContext.User.Identity.Name; automationVersion.CreatedOn = DateTime.UtcNow; automationVersion.AutomationId = (Guid)automationViewModel.Id; if (string.IsNullOrEmpty(automationViewModel.Status)) { automationVersion.Status = "Published"; } else { automationVersion.Status = automationViewModel.Status; } automationVersion.VersionNumber = automationViewModel.VersionNumber; if (automationVersion.Status.Equals("Published")) { automationVersion.PublishedBy = httpContextAccessor.HttpContext.User.Identity.Name; automationVersion.PublishedOnUTC = DateTime.UtcNow; } else { automationVersion.PublishedBy = null; automationVersion.PublishedOnUTC = null; } int automationVersionNumber = 0; automationVersion.VersionNumber = automationVersionNumber; List <Automation> automations = repo.Find(null, x => x.Name?.Trim().ToLower() == automationViewModel.Name?.Trim().ToLower())?.Items; if (automations != null) { foreach (Automation automation in automations) { var automationVersionEntity = automationVersionRepository.Find(null, q => q?.AutomationId == automation?.Id).Items?.FirstOrDefault(); if (automationVersionEntity != null && automationVersionNumber < automationVersionEntity.VersionNumber) { automationVersionNumber = automationVersionEntity.VersionNumber; } } } automationVersion.VersionNumber = automationVersionNumber + 1; automationVersionRepository.Add(automationVersion); }
//updates the automation averages for the specified job's automation public void UpdateAutomationAverages(Guid?updatedJobId) { Job updatedJob = _repo.GetOne(updatedJobId ?? Guid.Empty); Automation automation = _automationRepo.Find(null, a => a.Id == updatedJob.AutomationId).Items.FirstOrDefault(); List <Job> sameAutomationJobs; if (updatedJob.IsSuccessful ?? false) { sameAutomationJobs = _repo.Find(null, j => j.AutomationId == automation.Id && j.IsSuccessful == true).Items; automation.AverageSuccessfulExecutionInMinutes = GetAverageExecutionTime(sameAutomationJobs); } else { sameAutomationJobs = _repo.Find(null, j => j.AutomationId == automation.Id && j.IsSuccessful == false).Items; automation.AverageUnSuccessfulExecutionInMinutes = GetAverageExecutionTime(sameAutomationJobs); } _automationRepo.Update(automation); }