| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using FastReport;
- using InABox.Clients;
- using InABox.Core;
- using InABox.Database;
- using InABox.DynamicGrid;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- namespace PRSServer.Forms
- {
- class DeletedEntityGrid<T> : DynamicGrid<T>, ISpecificGrid where T : Entity, new()
- {
- private Deletion Deletion { get; set; }
- public DeletedEntityGrid(Deletion deletion)
- {
- Deletion = deletion;
- HiddenColumns.Add(x => x.ID);
- Options.BeginUpdate().Clear()
- .AddRange(DynamicGridOption.EditRows).EndUpdate();
- }
- protected override DynamicGridColumns LoadColumns()
- {
- var result = base.LoadColumns();
- result.RemoveAll(x =>
- {
- var prop = CoreUtils.GetProperty(typeof(T), x.ColumnName);
- return prop.GetCustomAttribute<DoNotSerialize>() != null && prop.GetCustomAttribute<DoNotPersist>() != null;
- });
- return result;
- }
- protected override void Reload(Filters<T> criteria, Columns<T> columns, ref SortOrder<T> sort, Action<CoreTable, Exception> action)
- {
- try
- {
- var table = DbFactory.Provider.QueryDeleted(Deletion, criteria.Combine(), columns, sort);
- action(table, null);
- }
- catch(Exception e)
- {
- action(null, e);
- }
- }
- protected override T LoadItem(CoreRow row)
- {
- var id = row.Get<T, Guid>(x => x.ID);
- var filter = new Filter<T>(x => x.ID).IsEqualTo(id);
- return DbFactory.Provider.QueryDeleted(Deletion, filter, null).Rows.FirstOrDefault()?.ToObject<T>();
- }
- protected override void DoEdit()
- {
- if (!SelectedRows.Any())
- return;
- var item = LoadItem(SelectedRows.First());
- var editor = new DynamicEditorForm(typeof(T));
- editor.ReadOnly = true;
- editor.OnDefineLookups += sender => DefineLookups(sender, Array.Empty<T>());
- editor.Items = new BaseObject[] { item };
- editor.ShowDialog();
- }
- protected override void SaveItem(T item)
- {
- // No saving allowed
- }
- protected override void DeleteItems(params CoreRow[] rows)
- {
- // No deleting allowed
- }
- }
- }
|