123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- using InABox.Core;
- using InABox.Database;
- using InABox.DynamicGrid;
- using InABox.Wpf;
- using InABox.WPF;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- namespace PRSServer.Forms
- {
- public class DeletionsGrid : DynamicGrid<Deletion>
- {
- private Button Refresh;
- private Button Recover;
- private Button View;
- public DeletionsGrid()
- {
- HiddenColumns.Add(x => x.ID);
- HiddenColumns.Add(x => x.Data);
- Refresh = AddButton("", Properties.Resources.refresh.AsBitmapImage(), RefreshItems);
- Recover = AddButton("Recover", null, RecoverItems);
- View = AddButton("", Properties.Resources.view.AsBitmapImage(), ViewItems);
- OnDoubleClick += DeletionsGrid_OnDoubleClick;
- }
- protected override void Init()
- {
- }
- protected override void DoReconfigure(FluentList<DynamicGridOption> options)
- {
- options.BeginUpdate().Clear()
- .AddRange(DynamicGridOption.DeleteRows, DynamicGridOption.FilterRows, DynamicGridOption.MultiSelect)
- .EndUpdate();
- }
- private void DeletionsGrid_OnDoubleClick(object sender, System.ComponentModel.HandledEventArgs args)
- {
- DoViewItems(SelectedRows);
- }
- private bool RefreshItems(Button button, CoreRow[] selectedRows)
- {
- return true;
- }
- private bool RecoverItems(Button button, CoreRow[] selectedRows)
- {
- var rows = SelectedRows.ToList();
- if (!rows.Any())
- return false;
- var recover = MessageWindow.ShowYesNo(
- "Are you sure you wish to recover these records?",
- "Confirm Recover");
- if(recover)
- {
- foreach(var row in rows)
- {
- DbFactory.Provider.Recover(row.ToObject<Deletion>());
- }
- MessageWindow.ShowMessage("Records recovered", "Records recovered");
- return true;
- }
- return false;
- }
- private void DoViewItems(CoreRow[] selectedRows)
- {
- var rows = SelectedRows.ToList();
- if (!rows.Any())
- return;
- else if (rows.Count > 1)
- {
- MessageWindow.ShowMessage("Please select only one row", "Error");
- return; ;
- }
- var deletion = rows[0].ToObject<Deletion>();
- var window = new ViewDeletionWindow(deletion);
- window.ShowDialog();
- }
- private bool ViewItems(Button button, CoreRow[] selectedRows)
- {
- DoViewItems(selectedRows);
- return false;
- }
- protected override void DeleteItems(params CoreRow[] rows)
- {
- foreach(var row in rows)
- {
- DbFactory.Provider.Purge(row.ToObject<Deletion>());
- }
- }
- protected override void DoDelete()
- {
- var rows = SelectedRows.ToArray();
- if (!rows.Any())
- return;
- var delete = MessageWindow.ShowYesNo(
- "Are you sure you wish to permanently delete these records?\n(This cannot be undone.)",
- "Confirm Permanent Delete");
- if(delete)
- {
- DeleteItems(rows);
- SelectedRows = Array.Empty<CoreRow>();
- DoChanged();
- Refresh(false, true);
- SelectItems(null);
- }
- }
- protected override Deletion LoadItem(CoreRow row)
- {
- var id = row.Get<Deletion, Guid>(x => x.ID);
- return DbFactory.Provider.Query(new Filter<Deletion>(x => x.ID).IsEqualTo(id))
- .Rows.FirstOrDefault()?.ToObject<Deletion>()!;
- }
- protected override void Reload(Filters<Deletion> criteria, Columns<Deletion> columns, ref SortOrder<Deletion>? sort, Action<CoreTable?, Exception?> action)
- {
- if(sort == null)
- {
- sort = new SortOrder<Deletion>(x => x.DeletionDate, SortDirection.Descending);
- }
- var table = DbFactory.Provider.Query(criteria.Combine(), columns, sort);
- action(table, null);
- }
- public override void SaveItem(Deletion item)
- {
- // Cannot save deletions
- }
- }
- }
|