Beispiel #1
0
        public static void LoadData(DashboardDataContext context)
        {
            var users    = CreateUsers();
            var projects = CreateProjects();
            var tasks    = CreateTasks(users, projects);

            int workLogCounter = 1;

            users.ForEach(u =>
            {
                u.Tasks = tasks.Where(t => t.AssignedUserID == u.ID).ToList();

                foreach (var t in u.Tasks)
                {
                    t.WorkLogs.Add(CreateWorkLog(u, t, workLogCounter++, $"Work started for {t.Name}.", 10));
                    t.WorkLogs.Add(CreateWorkLog(u, t, workLogCounter++, $"Work in progress for {t.Name}.", 30));

                    if (t.Status == Status.Waiting || (t.Status == Status.Completed && t.TaskID % 3 == 0))
                    {
                        t.WorkLogs.Add(CreateWorkLog(u, t, workLogCounter++, $"Work waiting for {t.Name}.", 20));
                    }
                    if ((t.Status == Status.Completed && t.TaskID % 3 == 0))
                    {
                        t.WorkLogs.Add(CreateWorkLog(u, t, workLogCounter++, $"Work resuming for {t.Name}.", 40));
                    }

                    if (t.Status == Status.Testing || t.Status == Status.Completed)
                    {
                        t.WorkLogs.Add(CreateWorkLog(u, t, workLogCounter++, $"Work being tested for {t.Name}.", 25));
                    }

                    if (t.Status == Status.Completed)
                    {
                        t.WorkLogs.Add(CreateWorkLog(u, t, workLogCounter++, $"Work finished for {t.Name}.", 60));
                    }
                }

                u.WorkLogs = u.Tasks.SelectMany(t => t.WorkLogs).ToList();
            });

            projects.ForEach(p =>
            {
                p.Tasks = tasks.Where(t => t.ProjectID == p.ID).ToList();
            });

            var workLogs = users.SelectMany(u => u.WorkLogs);

            context.Users.AddRange(users);
            context.Projects.AddRange(projects);
            context.Tasks.AddRange(tasks);
            context.WorkLogs.AddRange(workLogs);

            context.SaveChanges();
        }