| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | 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;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 DoReconfigure(DynamicGridOptions options)    {        options.Clear();        options.DeleteRows = true;        options.FilterRows = true;        options.MultiSelect = true;    }    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.NewProvider(Logger.Main).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;    }    public override void DeleteItems(params CoreRow[] rows)    {        foreach(var row in rows)        {            DbFactory.NewProvider(Logger.Main).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);        }    }    public override Deletion LoadItem(CoreRow row)    {        var id = row.Get<Deletion, Guid>(x => x.ID);        return DbFactory.NewProvider(Logger.Main).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,    	CancellationToken token, Action<CoreTable?, Exception?> action)    {        if(sort == null)        {            sort = new SortOrder<Deletion>(x => x.DeletionDate, SortDirection.Descending);        }        var table = DbFactory.NewProvider(Logger.Main).Query(criteria.Combine(), columns, sort);        action(table, null);    }    public override void SaveItem(Deletion item)    {        // Cannot save deletions    }}
 |