123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- namespace PRSDesktop
- {
- public class JobActivitySummaryGrid : DynamicDataGrid<JobActivitySummary>
- {
-
- public Guid JobID { get; set; }
-
- public JobActivitySummaryGrid() : base()
- {
- Options.BeginUpdate();
- Options.Clear();
- if (Security.CanView<JobActivity>())
- Options.Add(DynamicGridOption.AddRows);
- if (Security.CanEdit<JobActivity>())
- Options.Add(DynamicGridOption.EditRows);
- if (Security.CanDelete<JobActivity>())
- Options.Add(DynamicGridOption.DeleteRows);
- if (Security.CanImport<JobActivity>())
- Options.Add(DynamicGridOption.ImportData);
- if (Security.CanExport<JobActivity>())
- Options.Add(DynamicGridOption.ExportData);
- Options.Add(DynamicGridOption.FilterRows);
- Options.Add(DynamicGridOption.MultiSelect);
- Options.Add(DynamicGridOption.SelectColumns);
- Options.Add(DynamicGridOption.RecordCount);
- Options.Add(DynamicGridOption.Print);
- Options.Add(DynamicGridOption.ShowHelp);
- Options.EndUpdate();
-
- HiddenColumns.Add(x => x.JobLink.ID);
- HiddenColumns.Add(x => x.ActivityLink.ID);
-
- RowHeight = 30;
- }
- protected override void Reload(Filters<JobActivitySummary> criteria, Columns<JobActivitySummary> columns, ref SortOrder<JobActivitySummary> sort, Action<CoreTable, Exception> action)
- {
- criteria.Add(new Filter<JobActivitySummary>(x => x.JobLink.ID).IsEqualTo(JobID));
- base.Reload(criteria, columns, ref sort, action);
- }
-
- private DynamicDataGrid<JobActivity>? _editgrid;
-
- private void CheckEditGrid()
- {
- if (_editgrid == null)
- {
- var type = DynamicGridUtils.FindDynamicGrid(typeof(DynamicDataGrid<>), typeof(JobActivity));
- _editgrid = Activator.CreateInstance(type, new object[] { }) as DynamicDataGrid<JobActivity>;
- _editgrid.OnCustomiseEditor += (sender, items, column, editor) =>
- {
- if (String.Equals(column.ColumnName, "JobLink.ID"))
- editor.Editable = Editable.Hidden;
- else if (String.Equals(column.ColumnName, "ActivityLink.ID"))
- (editor as ComboLookupEditor).Type = typeof(JobActivityLookup);
- else if (String.Equals(column.ColumnName, "Duration"))
- editor.Caption = "Budget";
- };
- }
- }
- protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
- {
- if (JobID.Equals(Guid.Empty) || JobID.Equals(CoreUtils.FullGuid))
- {
- MessageBox.Show("Please select a Job first!");
- return;
- }
-
- CheckEditGrid();
- var activity = new JobActivity();
- activity.JobLink.ID = JobID;
- if (_editgrid.EditItems(new object[] { activity }))
- Refresh(false, true);
- }
-
- protected override void DoEdit()
- {
- Guid[] ids = SelectedRows.Select(row => row.Get<JobActivitySummary, Guid>(c => c.ActivityLink.ID)).ToArray();
- if (!ids.Any())
- return;
-
- if (JobID.Equals(Guid.Empty) || JobID.Equals(CoreUtils.FullGuid))
- {
- MessageBox.Show("Please select a Job first!");
- return;
- }
-
- CheckEditGrid();
-
- List<JobActivity> items;
- using(new WaitCursor())
- {
- var table = new Client<JobActivity>().Query(
- new Filter<JobActivity>(x => x.JobLink.ID).IsEqualTo(JobID).And(x => x.ActivityLink.ID).InList(ids),
- new Columns<JobActivity>(x=>x.ID).Add(x=>x.JobLink.ID).Add(x=>x.ActivityLink.ID).Add(x=>x.Duration)
- );
- items = table.Rows.Select(x => x.ToObject<JobActivity>()).ToList();
- }
- foreach (Guid id in ids)
- {
- if (!items.Any(x => x.ActivityLink.ID == id))
- {
- JobActivity item = new JobActivity();
- item.JobLink.ID = JobID;
- item.ActivityLink.ID = id;
- items.Add(item);
- }
- }
- if (_editgrid.EditItems(items.ToArray<object>()))
- Refresh(false, true);
- }
- protected override void DoDelete()
- {
-
- Guid[] ids = SelectedRows.Select(row => row.Get<JobActivitySummary, Guid>(c => c.ActivityLink.ID)).ToArray();
- if (!ids.Any())
- return;
-
- if (JobID.Equals(Guid.Empty) || JobID.Equals(CoreUtils.FullGuid))
- {
- MessageBox.Show("Please select a Job first!");
- return;
- }
-
- if (MessageBox.Show("Are you sure you wish to delete these activities?", "Confirm", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
- return;
- var items = new Client<JobActivity>().Query(
- new Filter<JobActivity>(x => x.JobLink.ID).IsEqualTo(JobID).And(x => x.ActivityLink.ID).InList(ids),
- new Columns<JobActivity>(x => x.ID)
- ).Rows.Select(x => x.ToObject<JobActivity>());
- using (new WaitCursor())
- new Client<JobActivity>().Delete(items.ToArray(),"Deleted from JobActivitySummary");
- Refresh(false, true);
- }
- }
- }
|