private void AddLinkToProject(DraftProject project, IEnumerable <TaskCreationInformation> tasks) { // Load tasks IEnumerable <DraftTask> draftTasks = BaseProjectContext.LoadQuery(project.Tasks); BaseProjectContext.ExecuteQuery(); // Disorder the tasks List <TaskCreationInformation> levelTasks = tasks.ToList(); List <TaskCreationInformation> linkTasks = new List <TaskCreationInformation>(); while (levelTasks.Count > 0) { int taskIndex = RandomHelper.Random(0, levelTasks.Count - 1); linkTasks.Add(levelTasks[taskIndex]); levelTasks.RemoveAt(taskIndex); } // Add links for (int i = 0; i < linkTasks.Count - 1; i++) { TaskLinkCreationInformation linkInfo = NewFSTaskLink(linkTasks[i].Id, linkTasks[i + 1].Id); DraftTask task = draftTasks.Where(item => item.Id == linkInfo.StartId).FirstOrDefault(); task.Successors.Add(linkInfo); } ExcuteJobWithRetries(() => { QueueJob job = project.Update(); WaitForJobComplete(job); BaseProjectContext.ExecuteQuery(); LoggerHelper.Instance.Comment(string.Format("Finish Adding Links to Project: {0}", project.Name)); }, "Add Links to project"); }
private DraftTask SetCustomFields(DraftTask draftTask, IDictionary <CustomField, object> customFields) { if (customFields != null) { foreach (var customField in customFields) { draftTask[customField.Key.InternalName] = customField.Value; } } return(draftTask); }
private void AddAssignmentToTask(DraftTask task, IEnumerable <EnterpriseResource> resources, int resourceCount, Guid taskId) { int resourceCountPerTask = RandomHelper.Random(1, resourceCount); int[] resourcesIndex = RandomHelper.GetRandomIndex(resourceCountPerTask, resources.Count() - 1); for (int i = 0; i < resourcesIndex.Count(); i++) { AssignmentCreationInformation assignmentInfo = new AssignmentCreationInformation { ResourceId = resources.ElementAt(resourcesIndex[i]).Id, TaskId = taskId }; task.Assignments.Add(assignmentInfo); } }
private static void CreateNewTask() { Guid ProjectGuid = new Guid("b7dfde50 - 7a2d - e611 - 9bf8 - 681729bb2204"); var Project = projectContext.Projects.GetByGuid(ProjectGuid); var draftProject = Project.CheckOut(); TaskCreationInformation task = new TaskCreationInformation(); task.Id = Guid.NewGuid(); task.Name = "New Task"; task.Start = DateTime.Today.Date; task.IsManual = false; DraftTask draftTask = draftProject.Tasks.Add(task); draftProject.Update(); draftProject.Publish(true); //Publish and check-in the Project projectContext.ExecuteQuery(); }
private int ReadAndUpdateProject() { try { var tasksList = _db.ProjectServer_UpdateMustStartOn.ToList(); if (tasksList.Count > 0) { try { foreach (var dataList in tasksList) { ProjectContext context = new ProjectContext(PwaPath); string nameProject = _db.PWA_EmpProject.First(d => d.ProjectUID == dataList.ProjectUID).ProjectName; var projCollection = context.LoadQuery(context.Projects.Where(p => p.Name == nameProject)); context.ExecuteQuery(); PublishedProject project = projCollection.First(); DraftProject draft = project.CheckOut(); context.Load(draft, p => p.StartDate, p => p.Description); string taskName = _db.PWA_EmpTaskAll.First(d => d.TaskUID == dataList.TaskUID).TaskName; context.Load(draft.Tasks, dt => dt.Where(t => t.Name == taskName)); context.Load(draft.Assignments, da => da.Where(a => a.Task.Name == taskName)); context.ExecuteQuery(); DraftTask task = draft.Tasks.First(); task.ConstraintType = ConstraintType.MustStartOn; task.ConstraintStartEnd = dataList.ActualStart; draft.Update(); JobState jobState = context.WaitForQueue(draft.Publish(true), 20); } return(1); } catch { return(0); } } else { return(0); } } catch { return(0); } }
private void AddTaskToProject(DraftProject project, IEnumerable <IEnumerable <TaskCreationInformation> > tasks, IEnumerable <EnterpriseResource> resources, int resourceCount) { foreach (TaskCreationInformation taskInfo in tasks.SelectMany(item => item)) { LoggerHelper.Instance.Comment(string.Format("About to Add Task: {0} to Project: {1}", taskInfo.Name, project.Name)); DraftTask draftTask = project.Tasks.Add(taskInfo); AddAssignmentToTask(draftTask, resources, resourceCount, taskInfo.Id); } ExcuteJobWithRetries(() => { QueueJob job = project.Update(); WaitForJobComplete(job); BaseProjectContext.ExecuteQuery(); LoggerHelper.Instance.Comment(string.Format("Finish Adding Task to Project: {0}", project.Name)); }, "Add Task to Project"); // Add tasks link int levelIndex = RandomHelper.Random(0, tasks.Count() - 1); AddLinkToProject(project, tasks.ElementAt(levelIndex)); }
public static object[] GetArray(DraftTask a) { return(GetArray((BaseTask)a).Concat(new string[] { a.FolderName }).ToArray()); }
public static bool EditTaskEquals(DraftTask a, DraftTask b) { return(ArraysEqual(GetArray(a), GetArray(b))); }
public EditTask() { m_task = new DraftTask(); m_task.PropertyChanged += task_propertyChanged; validateDescription(); }