|
@@ -2,6 +2,7 @@
|
|
using System.Reflection;
|
|
using System.Reflection;
|
|
using System.Text.RegularExpressions;
|
|
using System.Text.RegularExpressions;
|
|
using InABox.Core;
|
|
using InABox.Core;
|
|
|
|
+using NPOI.OpenXmlFormats.Dml;
|
|
using NPOI.POIFS.FileSystem;
|
|
using NPOI.POIFS.FileSystem;
|
|
|
|
|
|
namespace InABox.Database
|
|
namespace InABox.Database
|
|
@@ -462,6 +463,7 @@ namespace InABox.Database
|
|
AfterSave(entity);
|
|
AfterSave(entity);
|
|
|
|
|
|
entity = RunScript(ScriptType.AfterSave, new[] { entity }).First();
|
|
entity = RunScript(ScriptType.AfterSave, new[] { entity }).First();
|
|
|
|
+ NotifyListeners([entity]);
|
|
}
|
|
}
|
|
|
|
|
|
protected void AuditTrail(IEnumerable<Entity> entities, IEnumerable<string> notes)
|
|
protected void AuditTrail(IEnumerable<Entity> entities, IEnumerable<string> notes)
|
|
@@ -590,6 +592,8 @@ namespace InABox.Database
|
|
}
|
|
}
|
|
|
|
|
|
entities = RunScript(ScriptType.AfterSave, entities);
|
|
entities = RunScript(ScriptType.AfterSave, entities);
|
|
|
|
+
|
|
|
|
+ NotifyListeners(entities);
|
|
|
|
|
|
//}
|
|
//}
|
|
//catch (Exception e)
|
|
//catch (Exception e)
|
|
@@ -598,6 +602,19 @@ namespace InABox.Database
|
|
//}
|
|
//}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private static List<Tuple<Type, Action<Guid[]>>> _listeners = new List<Tuple<Type, Action<Guid[]>>>();
|
|
|
|
+
|
|
|
|
+ public static void RegisterListener<TType>(Action<Guid[]> listener)
|
|
|
|
+ => _listeners.Add(new Tuple<Type, Action<Guid[]>>(typeof(TType), listener));
|
|
|
|
+
|
|
|
|
+ private void NotifyListeners(IEnumerable<T> items)
|
|
|
|
+ {
|
|
|
|
+ var ids = items.Select(x => x.ID).ToArray();
|
|
|
|
+ foreach (var listener in _listeners.Where(x => x.Item1 == typeof(T)))
|
|
|
|
+ listener.Item2(ids);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
#region Delete Functions
|
|
#region Delete Functions
|
|
@@ -637,6 +654,8 @@ namespace InABox.Database
|
|
AfterDelete(entity);
|
|
AfterDelete(entity);
|
|
|
|
|
|
entity = RunScript(ScriptType.AfterDelete, new[] { entity }).First();
|
|
entity = RunScript(ScriptType.AfterDelete, new[] { entity }).First();
|
|
|
|
+
|
|
|
|
+ NotifyListeners([entity]);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
catch (Exception e)
|
|
{
|
|
{
|
|
@@ -667,6 +686,8 @@ namespace InABox.Database
|
|
foreach (var entity in entities) AfterDelete(entity);
|
|
foreach (var entity in entities) AfterDelete(entity);
|
|
|
|
|
|
entities = RunScript(ScriptType.AfterDelete, entities);
|
|
entities = RunScript(ScriptType.AfterDelete, entities);
|
|
|
|
+
|
|
|
|
+ NotifyListeners(entities);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
catch (Exception e)
|
|
{
|
|
{
|