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 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 GetDraftProjectsList() { LV_Projects.InvokeIfRequired(s => s.Items.Clear()); IEnumerable <PublishedProject> projectList = ProjContext.LoadQuery(ProjContext.Projects.Include(p => p.Draft.Name, p => p.Draft.Id, p => p.IsCheckedOut)); ProjContext.ExecuteQuery(); PublishedProject[] publishedProjects = projectList.ToArray(); List <ListViewItem> listViewItems = new List <ListViewItem>(); foreach (PublishedProject project in publishedProjects) { ListViewItem lvi = new ListViewItem(project.Draft.Name) { Tag = project }; Log.WriteVerbose(new SourceInfo(), "Found Project:{0}", project.Draft.Name); listViewItems.Add(lvi); } LV_Projects.InvokeIfRequired(s => { s.Columns[0].Text = $"Projects({publishedProjects.Length})"; s.Items.AddRange(listViewItems.ToArray()); }); }
private void LoadProjectsList() { LV_Projects.InvokeIfRequired(s => { s.Items.Clear(); s.Columns.Clear(); s.Columns.Add(new ColumnHeader { Text = "Id", DisplayIndex = 0, Width = 20 }); s.Columns.Add(new ColumnHeader { Text = "Name", DisplayIndex = 0, Width = 20 }); s.Columns.Add(new ColumnHeader { Text = "Owner", DisplayIndex = 0, Width = 20 }); s.Columns.Add(new ColumnHeader { Text = "CheckOut by", DisplayIndex = 0, Width = 20 }); s.Columns.Add(new ColumnHeader { Text = "Published Date", DisplayIndex = 0, Width = 20 }); s.Columns.Add(new ColumnHeader { Text = "Updated Date", DisplayIndex = 0, Width = 20 }); s.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); s.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }); IEnumerable <PublishedProject> projectList = ProjContext.LoadQuery(ProjContext.Projects.Include(p => p.Name, p => p.Id, p => p.IsCheckedOut, p => p.CheckedOutBy.LoginName, p => p.LastPublishedDate, p => p.Owner.LoginName, p => p.Draft.LastSavedDate)); ProjContext.ExecuteQuery(); List <ListViewItem> listViewItems = new List <ListViewItem>(); foreach (PublishedProject proj in projectList) { ListViewItem lvi = new ListViewItem(proj.Id.ToString()); lvi.SubItems.Add(proj.Name); lvi.SubItems.Add(proj.Owner.LoginName); lvi.SubItems.Add(proj.IsCheckedOut ? proj.CheckedOutBy.LoginName : string.Empty); lvi.SubItems.Add(proj.LastPublishedDate.ToString(CultureInfo.InvariantCulture)); lvi.SubItems.Add(proj.Draft.LastSavedDate.ToString(CultureInfo.InvariantCulture)); lvi.Tag = proj; listViewItems.Add(lvi); } LV_Projects.InvokeIfRequired(s => { s.Items.AddRange(listViewItems.ToArray()); s.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); s.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }); }
private void ProjectOwner_Load(object sender, EventArgs e) { LV_Projects.View = View.Details; LV_Projects.Alignment = ListViewAlignment.SnapToGrid; LV_Projects.FullRowSelect = true; LV_Projects.Scrollable = true; LV_Projects.HideSelection = false; LV_Projects.MultiSelect = true; LV_Projects.Columns.Add(new ColumnHeader { Text = "Projects", DisplayIndex = 0 }); LV_Projects.Columns.Add(new ColumnHeader { Text = "Owner", DisplayIndex = 1 }); LV_Projects.Columns.Add(new ColumnHeader { Text = "CheckedOut By", DisplayIndex = 2 }); LV_Projects.Columns.Add(new ColumnHeader { Text = "Updated Date", DisplayIndex = 3 }); LV_Projects.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); LV_Projects.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); LV_EnterpiseResources.View = View.Details; LV_EnterpiseResources.Alignment = ListViewAlignment.SnapToGrid; LV_EnterpiseResources.Scrollable = true; LV_EnterpiseResources.HideSelection = false; LV_EnterpiseResources.FullRowSelect = true; LV_EnterpiseResources.MultiSelect = false; LV_EnterpiseResources.Columns.Add(new ColumnHeader { Text = "Enterprise Resources", DisplayIndex = 0 }); LV_Projects.OwnerDraw = true; //LV_Projects.Resize += ListView_Resize; LV_Projects.DrawItem += ListView_DrawItem; LV_Projects.DrawSubItem += ListView_DrawSubItem; LV_Projects.DrawColumnHeader += ControlHelpers.ListViewDrawColumnHeader; LV_Projects.ColumnClick += ControlHelpers.SortListView; LV_EnterpiseResources.OwnerDraw = true; LV_EnterpiseResources.Resize += ListView_Resize; LV_EnterpiseResources.DrawItem += ListView_DrawItem; LV_EnterpiseResources.DrawSubItem += ListView_DrawSubItem; LV_EnterpiseResources.DrawColumnHeader += ControlHelpers.ListViewDrawColumnHeader; LV_EnterpiseResources.ColumnClick += ControlHelpers.SortListView; LV_EnterpiseResources.MultiSelect = false; LoadProjectsAndResources(); }
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 GetDraftTeamForSelectedProject() { PublishedProject project = null; LV_Projects.InvokeIfRequired(s => project = s.SelectedItems[0].Tag as PublishedProject); LV_ProjectResources.InvokeIfRequired(s => s.Items.Clear()); IEnumerable <DraftProjectResource> resourceList = ProjContext.LoadQuery(project.Draft.ProjectResources); ProjContext.ExecuteQuery(); DraftProjectResource[] draftProjectResources = resourceList.ToArray(); foreach (ListViewItem lvi in draftProjectResources.Select(res => new ListViewItem(res.Name) { Tag = res })) { LV_ProjectResources.InvokeIfRequired(s => s.Items.Add(lvi)); } LV_ProjectResources.InvokeIfRequired(s => s.Columns[0].Text = $"Project Resources({draftProjectResources.Length})"); }
private void LoadProjects() { Log.WriteVerbose(new SourceInfo(), "Loading projects"); IEnumerable <PublishedProject> projectList = ProjContext.LoadQuery(ProjContext.Projects.Include(p => p.Name, p => p.Owner, p => p.Id, p => p.Owner.Title, p => p.IsCheckedOut, p => p.CheckedOutBy.Title, p => p.Draft.LastSavedDate, p => p.Draft)); ProjContext.ExecuteQuery(); List <ListViewItem> listViewItems = new List <ListViewItem>(); foreach (PublishedProject project in projectList) { ListViewItem lvi = new ListViewItem(project.Name); lvi.SubItems.Add(project.Owner.Title); if (project.CheckedOutBy.IsNull()) { lvi.SubItems.Add(String.Empty); } else { lvi.SubItems.Add(project.CheckedOutBy.Title); } lvi.SubItems.Add(project.Draft.LastSavedDate.ToString(CultureInfo.InvariantCulture)); lvi.Tag = project; Log.WriteVerbose(new SourceInfo(), "Found Project:{0}", project.Name); listViewItems.Add(lvi); } LV_Projects.InvokeIfRequired(s => { s.Items.Clear(); s.Items.AddRange(listViewItems.ToArray()); s.Columns[0].Text = $"Projects({listViewItems.Count})"; LV_Projects.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); LV_Projects.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }); }
private void ProjectTeamBuilder_ResizeEnd(object sender, EventArgs e) { LV_Projects.ResizeColumnHeaders(); LV_ProjectResources.ResizeColumnHeaders(); LV_EnterpiseResources.ResizeColumnHeaders(); }