Пример #1
0
        public static void UpdateTaskStatusProcessing(int taskId)
        {
            using (var db = new AssessmentDbContext(ConfigHelper.DatabaseConnectionString))
            {
                var task = db.AssessmentTasks
                           .Where(t => t.Id.Equals(taskId))
                           .FirstOrDefault();

                if (task != null)
                {
                    task.Status = AssessmentTask.TaskStatus.Processing;

                    db.Entry(task).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
        }
Пример #2
0
        public static IEnumerable <AssessmentTask> ListAllNotStartedTasks()
        {
            using (var db = new AssessmentDbContext(ConfigHelper.DatabaseConnectionString))
            {
                var tasks = db.AssessmentTasks.Where(
                    t => t.DeploymentId.Equals(DeploymentId) &&
                    t.Status == AssessmentTask.TaskStatus.NotStarted)
                            .ToList();

                if (tasks.Count() < 2)
                {
                    return(tasks);
                }

                var result = new List <AssessmentTask>();

                var groups = tasks.GroupBy(
                    t => $"{t.TenantId}|{t.UserObjectId}|{t.SubscriptionId}|{t.TargetRegion}");

                foreach (var group in groups)
                {
                    if (group.Count() == 1)
                    {
                        result.Add(group.First());
                        continue;
                    }

                    var orderedTasks = group.OrderByDescending(t => t.CreatedTime);

                    result.Add(orderedTasks.First());

                    foreach (var task in orderedTasks.Skip(1))
                    {
                        task.Status          = AssessmentTask.TaskStatus.Failed;
                        task.CompletedTime   = DateTime.UtcNow;
                        task.FailedReason    = @"Abandoned.";
                        db.Entry(task).State = EntityState.Modified;
                    }
                }

                db.SaveChanges();

                return(result.OrderBy(t => t.CreatedTime));
            }
        }
Пример #3
0
        public static void UpdateTaskStatusCompleted(
            int taskId,
            string reportId)
        {
            using (var db = new AssessmentDbContext(ConfigHelper.DatabaseConnectionString))
            {
                var task = db.AssessmentTasks
                           .Where(t => t.Id.Equals(taskId))
                           .FirstOrDefault();

                if (task != null)
                {
                    task.Status        = AssessmentTask.TaskStatus.Completed;
                    task.CompletedTime = DateTime.UtcNow;
                    task.ReportId      = reportId;

                    db.Entry(task).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
        }