private void RemoveResources() { PublishedProject publishedProject = null; DraftProject draftProject; List <DraftProjectResource> draftProjectResourceresList = new List <DraftProjectResource>(); LV_Projects.InvokeIfRequired(s => publishedProject = (PublishedProject)s.SelectedItems[0].Tag); LV_ProjectResources.InvokeIfRequired(s => { ListView.SelectedListViewItemCollection selectedItems = s.SelectedItems; draftProjectResourceresList.AddRange(selectedItems.Cast <ListViewItem>().Select(selectedItem => (DraftProjectResource)selectedItem.Tag)); }); if (draftProjectResourceresList.Any()) { draftProject = publishedProject.IsCheckedOut ? publishedProject.Draft : publishedProject.CheckOut(); draftProjectResourceresList.ForEach(r => { Log.WriteVerbose(new SourceInfo(), TB_Status, "Removing Resource:{0} from Project:{1}.", r.Name, publishedProject.Draft.Name); draftProject.ProjectResources.Remove(r); }); QueueJob queueJob = draftProject.Update(); Log.WriteVerbose(new SourceInfo(), TB_Status, _bgeRemoveProjectResources, "Waiting for the Project Update job to complete."); CsomHelper.ExecuteAndWait(queueJob, TB_Status); } Log.WriteVerbose(new SourceInfo(), TB_Status, _bgeRemoveProjectResources, "Refreshing Project resources."); GetDraftTeamForSelectedProject(); }
private void DeleteProjects() { List <PublishedProject> projectList = new List <PublishedProject>(); LV_ServerObjects.InvokeIfRequired(s => { ListView.SelectedListViewItemCollection selectedItems = s.SelectedItems; projectList.AddRange(selectedItems.Cast <ListViewItem>().Select(selectedItem => (PublishedProject)selectedItem.Tag)); }); if (!projectList.Any()) { return; } int projectCounter = 1; List <QueueJob> jobs = projectList.Select(p => { if (p.IsCheckedOut) { QueueJob checkinJob = p.Draft.CheckIn(true); CsomHelper.ExecuteAndWait(checkinJob, TB_Status); } QueueJob job = p.DeleteObject(); Log.WriteVerbose(new SourceInfo(), TB_Status, "Deleting project {0} of {1} with name {2}.", projectCounter++, projectList.Count, p.Name); return(job); }).ToList(); Log.WriteVerbose(new SourceInfo(), TB_Status, _bgeProjectsDelete, "Waiting for the Delete queue job to complete."); CsomHelper.ExecuteAndWait(jobs, TB_Status); Log.WriteVerbose(new SourceInfo(), TB_Status, _bgeProjectsDelete, "Refreshing Projects."); LoadProjectsList(); }
private void PublishProjects() { List <PublishedProject> projectList = new List <PublishedProject>(); LV_Projects.InvokeIfRequired(s => { ListView.SelectedListViewItemCollection selectedItems = s.SelectedItems; projectList.AddRange(selectedItems.Cast <ListViewItem>().Select(selectedItem => (PublishedProject)selectedItem.Tag)); }); if (!projectList.Any()) { return; } List <QueueJob> jobs = projectList.Select(p => { if (!p.IsCheckedOut) { p.CheckOut(); } Log.WriteVerbose(new SourceInfo(), TB_Status, "Publishing project:{0}.", p.Name); QueueJob job = p.Draft.Publish(true); return(job); }).ToList(); Log.WriteVerbose(new SourceInfo(), TB_Status, _backgroundExecutorWithStatus, "Waiting for the Publish queue job to complete."); CsomHelper.ExecuteAndWait(jobs, TB_Status); Log.WriteVerbose(new SourceInfo(), TB_Status, _backgroundExecutorWithStatus, "Refreshing Projects."); LoadProjects(); }
private void CheckInCheckoutProjects() { List <PublishedProject> projectList = new List <PublishedProject>(); LV_ServerObjects.InvokeIfRequired(s => { ListView.SelectedListViewItemCollection selectedItems = s.SelectedItems; projectList.AddRange(selectedItems.Cast <ListViewItem>().Select(selectedItem => (PublishedProject)selectedItem.Tag)); }); if (!projectList.Any()) { return; } if (_checkin) { List <QueueJob> jobs = projectList.Where(s => s.IsCheckedOut).Select(p => { QueueJob job = null; Log.WriteVerbose(new SourceInfo(), TB_Status, "Checking in Project {0}", p.Name); job = p.Draft.CheckIn(true); return(job); }).ToList(); if (jobs.Count <= 0) { return; } Log.WriteVerbose(new SourceInfo(), TB_Status, _backgroundExecutorWithStatus, "Waiting for the Queue jobs to complete"); CsomHelper.ExecuteAndWait(jobs, TB_Status); Log.WriteVerbose(new SourceInfo(), TB_Status, _backgroundExecutorWithStatus, "Loading Projects"); LoadProjects(); } else { bool needExecute = false; projectList.ForEach(p => { if (p.IsCheckedOut) { return; } Log.WriteVerbose(new SourceInfo(), TB_Status, "Checking out Project {0}", p.Name); p.CheckOut(); needExecute = true; }); if (needExecute) { ProjContext.ExecuteQuery(); LoadProjects(); } else { Log.WriteVerbose(new SourceInfo(), TB_Status, _backgroundExecutorWithStatus, "All selected projects are in checked out state."); } } }
private void BTN_Update_Click(object sender, EventArgs e) { if (_publishedProject == null) { return; } if (!_publishedProject.IsCheckedOut) { _publishedProject.CheckOut(); } QueueJob job = _publishedProject.Draft.Update(); CsomHelper.ExecuteAndWait(job, TB_Status); LoadProjectInfo(); }
private void UpdateProjectOwner() { List <PublishedProject> projectList = new List <PublishedProject>(); EnterpriseResource resource = null; LV_Projects.InvokeIfRequired(s => { ListView.SelectedListViewItemCollection selectedItems = s.SelectedItems; projectList.AddRange(selectedItems.Cast <ListViewItem>().Select(selectedItem => (PublishedProject)selectedItem.Tag)); }); LV_EnterpiseResources.InvokeIfRequired(s => resource = (EnterpriseResource)s.SelectedItems[0].Tag); if (resource == null) { Log.WriteWarning(new SourceInfo(), TB_Status, "No enterprise resource selected."); return; } List <QueueJob> jobs = new List <QueueJob>(); foreach (PublishedProject publishedproject in projectList) { if (!publishedproject.IsCheckedOut) { publishedproject.CheckOut(); } else if (!publishedproject.CheckedOutBy.IsNull() && publishedproject.CheckedOutBy.Title != CsomBase.CurrentResource.User.Title) { Log.WriteWarning(new SourceInfo(), TB_Status, "Project:{0} checked out to a different user:{1}, not changing the owner to {2}.", publishedproject.Name, publishedproject.Owner.Title, resource.User.Title); continue; } Log.WriteVerbose(new SourceInfo(), TB_Status, "Updating project:{0}, Setting owner to:{1}", publishedproject.Name, resource.Name); publishedproject.Owner = resource.User; jobs.Add(publishedproject.Draft.Update()); } Log.WriteVerbose(new SourceInfo(), TB_Status, _bgeProject, "Waiting for the Project Update job to complete."); CsomHelper.ExecuteAndWait(jobs, TB_Status); Log.WriteVerbose(new SourceInfo(), TB_Status, _bgeProject, "Loading Projects."); LoadProjects(); }
private void LoginProjectServer() { Log.WriteVerbose(new SourceInfo(), "Logging into project server on url:{0}", TB_Url.Text); ProjContext = new ProjectContext(TB_Url.Text); Log.WriteVerbose(new SourceInfo(), "Authenticating against {0} pwa instance", CB_Online.Checked ? "Online" : "OnPerm"); if (CB_Online.Checked && RB_Forms.Checked) { //case online with user credential SecureString secpassword = new SecureString(); foreach (char c in TB_Password.Text) { secpassword.AppendChar(c); } ProjContext.Credentials = new SharePointOnlineCredentials(TB_UserName.Text, secpassword); } else if (!CB_Online.Checked && RB_Forms.Checked) { //case onprem with user credential ProjContext.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication; FormsAuthenticationLoginInfo formsAuthInfo = new FormsAuthenticationLoginInfo(TB_UserName.Text, TB_Password.Text); ProjContext.FormsAuthenticationLoginInfo = formsAuthInfo; } else { //Default case - Windows Auth ProjContext.Credentials = CredentialCache.DefaultCredentials; } CsomHelper.ProjContext = ProjContext; CsomBase.CurrentResource = CsomHelper.LoadMe(); CsomBase.CurrentUser = CsomBase.CurrentResource.User; if (_bge.TaskCancelled || _bge.ActionTask.IsFaulted) { return; } Log.WriteVerbose(new SourceInfo(), "Login on url:{0} for user:{1}", TB_Url.Text, CsomBase.CurrentUser.Title); DialogResult = DialogResult.OK; }
private void PublishProject() { CsomHelper.ExecuteAndWait(_publishedProject.Draft.Publish(true), TB_Status); }
private void CreateProjects() { IList <EnterpriseResource> enterpriseResources = null; List <QueueJob> projectCreationJobs = new List <QueueJob>(); if (RB_AssignExistingEnterpriseResources.Checked) { IEnumerable <EnterpriseResource> resList = ProjContext.LoadQuery(ProjContext.EnterpriseResources.Where(r => r.ResourceType == EnterpriseResourceType.Work)); ProjContext.ExecuteQuery(); enterpriseResources = resList.ToList(); } for (int projCount = 1; projCount <= numProjects.Value; projCount++) { string projName = txtProjName.Text + projCount; List <EnterpriseResource> projectTeam = new List <EnterpriseResource>(); PublishedProject newProject = ProjContext.Projects.Add(new ProjectCreationInformation { Name = projName }); //Build the team first. if (RB_AssignExistingEnterpriseResources.Checked) { if (enterpriseResources.Count > 0) { projectTeam = enterpriseResources.PickRandom((int)numTasks.Value); projectTeam.ForEach(p => newProject.Draft.ProjectResources.AddEnterpriseResource(p)); } else { Log.WriteWarning(new SourceInfo(), TB_Status, "No enterprise resources available in the server."); } } else if (RB_AssignToMe.Checked) { if (CsomBase.CurrentResourceIsAssignable) { newProject.Draft.ProjectResources.AddEnterpriseResource(CsomBase.CurrentResource); } else { Log.WriteWarning(new SourceInfo(), TB_Status, "Current user is not resource. Not creating assignments."); } } List <TaskCreationInformation> dtc = CreateTasks(); if (CB_Tasks.Checked) { foreach (var task in dtc) { newProject.Draft.Tasks.Add(task); if (RB_AssignExistingEnterpriseResources.Checked) { if (projectTeam.Count > 0) { EnterpriseResource res = projectTeam.PickRandom(); newProject.Draft.Assignments.Add(new AssignmentCreationInformation { TaskId = task.Id, ResourceId = res.Id }); } else { Log.WriteWarning(new SourceInfo(), TB_Status, "No enterprise resources available in the server. Not creating assignments."); } } else if (RB_AssignToMe.Checked) { if (CsomBase.CurrentResourceIsAssignable) { AssignmentCreationInformation assnCi = CreateAssignment(task.Id, CsomBase.CurrentResource.Id); newProject.Draft.Assignments.Add(assnCi); } else { Log.WriteWarning(new SourceInfo(), TB_Status, "Current user is not resource. Not creating assignments."); } } } } if (RB_UseLocalResources.Checked) { for (int localResourceCount = 1; localResourceCount <= numTasks.Value; localResourceCount++) { ProjectResourceCreationInformation localResourceCi = CreateLocalResource(localResourceCount); newProject.Draft.ProjectResources.Add(localResourceCi); if (chkResAssign.Checked) { AssignmentCreationInformation assnCi = CreateAssignment(dtc.PickRandom().Id, localResourceCi.Id); newProject.Draft.Assignments.Add(assnCi); } } } Log.WriteVerbose(new SourceInfo(), TB_Status, "Creating project {0} of {1} with name {2}.", projCount, numProjects.Value, projName); projectCreationJobs.Add(newProject.Draft.Update()); } Log.WriteVerbose(new SourceInfo(), TB_Status, _backgroundExecutorWithStatus, "Waiting for the Project creation queue job to complete."); CsomHelper.ExecuteAndWait(projectCreationJobs, TB_Status); }