Пример #1
0
        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");
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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();
        }
Пример #5
0
 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);
     }
 }
Пример #6
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));
        }
Пример #7
0
 public static object[] GetArray(DraftTask a)
 {
     return(GetArray((BaseTask)a).Concat(new string[] { a.FolderName }).ToArray());
 }
Пример #8
0
 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();
 }