using System; using System.Windows.Media.Imaging; using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; namespace PRSDesktop { public class JobDesignDocumentGrid : DynamicDataGrid { public JobDesignDocumentGrid() { HiddenColumns.Add(x => x.DocumentLink.ID); HiddenColumns.Add(x => x.EntityLink.ID); HiddenColumns.Add(x => x.Superceded); HiddenColumns.Add(x => x.DocumentLink.FileName); ActionColumns.Add(new DynamicImageColumn(DocumentImage, ViewDocument) { Position = DynamicActionColumnPosition.Start }); ActionColumns.Add(new DynamicTickColumn( x => x.Superceded, PRSDesktop.Resources.tick.AsBitmapImage(), PRSDesktop.Resources.warning.AsBitmapImage(), PRSDesktop.Resources.tick.AsBitmapImage(), SupercedeDocument )); } protected override void DoReconfigure(FluentList options) { base.DoReconfigure(options); options.BeginUpdate() .Add(DynamicGridOption.RecordCount) .Add(DynamicGridOption.SelectColumns) .Remove(DynamicGridOption.ImportData) .Remove(DynamicGridOption.ExportData) .EndUpdate(); } public Setout? Design { get; set; } public override SetoutDocument CreateItem() { var result = base.CreateItem(); result.EntityLink.ID = Design?.ID ?? Guid.Empty; result.EntityLink.Synchronise(Design ?? new Setout()); return result; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, Action action) { criteria.Add(Design != null ? new Filter(x => x.EntityLink.ID).IsEqualTo(Design.ID) : new Filter().None()); base.Reload(criteria, columns, ref sort, action); } private BitmapImage DocumentImage(CoreRow arg) { return PRSDesktop.Resources.view.AsBitmapImage(); } private bool ViewDocument(CoreRow row) { var doc = row.ToObject(); var viewer = new DocumentEditor(doc); viewer.SaveAllowed = Security.IsAllowed(); viewer.ShowDialog(); return false; } private bool SupercedeDocument(CoreRow row) { var sd = row.ToObject(); sd.Superceded = sd.Superceded.IsEmpty() ? DateTime.Now : DateTime.MinValue; new Client().Save(sd, string.Format("{0} Superceded Flag", sd.Superceded.IsEmpty() ? "Cleared" : "Set")); return true; } protected override bool CanCreateItems() { return base.CanCreateItems() && (Design?.ID ?? Guid.Empty) != Guid.Empty; } } }