public static ChangeStatusViewModel Create(Project project, IProjectService projectService) { var viewModel = new ChangeStatusViewModel() { Project = project, Status = new List<KeyValuePair<int, string>>(), ChangeStatusProjectSteps = new List<ChangeStatusProjectStep>(), SquareTypes = project.ProjectSteps.Select(a => a.Step.SquareType).Distinct().ToList() }; // add the 3 status' viewModel.Status.Add(new KeyValuePair<int, string>((int)ProjectStepStatus.Pending, ProjectStepStatus.Pending.ToString())); viewModel.Status.Add(new KeyValuePair<int, string>((int)ProjectStepStatus.Working, ProjectStepStatus.Working.ToString())); viewModel.Status.Add(new KeyValuePair<int, string>((int)ProjectStepStatus.Complete, ProjectStepStatus.Complete.ToString())); // populate the list of change status project steps viewModel.ChangeStatusProjectSteps = project.ProjectSteps.Select(a => new ChangeStatusProjectStep() { ProjectStepId = a.Id, Order = a.Step.Order, SquareType = a.Step.SquareType.Id, Name = a.Step.Name, CurrentStepStatus = projectService.GetStepStatus(projectStep:a), CanEdit = true }).ToList(); return viewModel; }