Example #1
0
        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);
        }