123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- 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;
- using InABox.Wpf;
- namespace PRSDesktop
- {
- public class JobActivitySummaryGrid : DynamicDataGrid<JobActivitySummary>, IMasterDetailControl<Job,JobActivitySummary>
- {
-
- public Job? Master { get; set; }
-
- public Filter<JobActivitySummary> MasterDetailFilter => (Master?.ID ?? Guid.Empty) != Guid.Empty
- ? new Filter<JobActivitySummary>(x => x.JobLink.ID).IsEqualTo(Master.ID)
- : new Filter<JobActivitySummary>().None();
-
- public JobActivitySummaryGrid() : base()
- {
- HiddenColumns.Add(x => x.JobLink.ID);
- HiddenColumns.Add(x => x.ActivityLink.ID);
-
- RowHeight = 30;
- }
- protected override void DoReconfigure(DynamicGridOptions options)
- {
- base.DoReconfigure(options);
- options.Clear();
- if (Security.CanView<JobActivity>())
- options.AddRows = true;
- if (Security.CanEdit<JobActivity>())
- options.EditRows = true;
- if (Security.CanDelete<JobActivity>())
- options.DeleteRows = true;
- if (Security.CanImport<JobActivity>())
- options.ImportData = true;
- if (Security.CanExport<JobActivity>())
- options.ExportData = true;
- options.FilterRows = true;
- options.MultiSelect = true;
- options.SelectColumns = true;
- options.RecordCount = true;
- options.Print = true;
- options.ShowHelp = true;
- }
- protected override void Reload(Filters<JobActivitySummary> criteria, Columns<JobActivitySummary> columns, ref SortOrder<JobActivitySummary>? sort, Action<CoreTable?, Exception?> action)
- {
- criteria.Add(MasterDetailFilter);
- 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);
- };
- }
- }
- protected override bool CanCreateItems()
- {
- return base.CanCreateItems() && (Master?.ID ?? Guid.Empty) != Guid.Empty;
- }
- protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
- {
- CheckEditGrid();
- var activity = new JobActivity();
- activity.JobLink.ID = Master?.ID ?? Guid.Empty;
- activity.JobLink.Synchronise(Master ?? new Job());
- 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 ((Master?.ID ?? Guid.Empty) == Guid.Empty)
- {
- 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(Master.ID).And(x => x.ActivityLink.ID).InList(ids),
- Columns.Required<JobActivity>().Add(x=>x.ID).Add(x=>x.JobLink.ID).Add(x=>x.ActivityLink.ID).Add(x=>x.Quote).Add(x=>x.Budget)
- );
- 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 = Master.ID;
- item.JobLink.Synchronise(Master);
- 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 ((Master?.ID ?? Guid.Empty) == Guid.Empty)
- {
- 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(Master.ID).And(x => x.ActivityLink.ID).InList(ids),
- Columns.None<JobActivity>().Add(x => x.ID)
- ).Rows.Select(x => x.ToObject<JobActivity>());
- using (new WaitCursor())
- new Client<JobActivity>().Delete(items.ToArray(),"Deleted from JobActivitySummary");
- Refresh(false, true);
- }
- }
- }
|