| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- using com.sun.net.ssl.@internal.ssl;
 
- using Comal.Classes;
 
- using Comal.Stores;
 
- using InABox.Core;
 
- using InABox.Database;
 
- using InABox.Scripting;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- namespace PRSStores;
 
- public class BillApprovalSetStore : BaseStore<BillApprovalSet>
 
- {
 
-     private static Dictionary<Guid, ScriptDocument?> _scripts = new();
 
-     protected override void BeforeSave(BillApprovalSet entity)
 
-     {
 
-         base.BeforeSave(entity);
 
-         if(entity.HasOriginalValue(x => x.ApprovalSetUpdateScript))
 
-         {
 
-             UpdateApprovalSetScript(entity.ID, entity.ApprovalSetUpdateScript);
 
-         }
 
-     }
 
-     private static ScriptDocument? UpdateApprovalSetScript(Guid approvalSetID, string script)
 
-     {
 
-         ScriptDocument? document = null;
 
-         if (!script.IsNullOrWhiteSpace())
 
-         {
 
-             document = new ScriptDocument(script);
 
-             if (!document.Compile())
 
-             {
 
-                 InABox.Core.Logger.Send(LogType.Error, "", $"Bill Approval Script failed to compile: {document.Result}");
 
-                 document = null;
 
-             }
 
-         }
 
-         lock(_scripts)
 
-         {
 
-             _scripts[approvalSetID] = document;
 
-         }
 
-         return document;
 
-     }
 
-     public static ScriptDocument? GetUpdateApprovalsScript(Guid approvalSetID)
 
-     {
 
-         lock (_scripts)
 
-         {
 
-             if (_scripts.TryGetValue(approvalSetID, out var script)) return script;
 
-         }
 
-         var set = DbFactory.NewProvider(Logger.Main).Query<BillApprovalSet>(
 
-             new Filter<BillApprovalSet>(x => x.ID).IsEqualTo(approvalSetID),
 
-             Columns.None<BillApprovalSet>().Add(x => x.ApprovalSetUpdateScript))
 
-             .ToObjects<BillApprovalSet>().FirstOrDefault();
 
-         if(set is not null)
 
-         {
 
-             return UpdateApprovalSetScript(approvalSetID, set.ApprovalSetUpdateScript);
 
-         }
 
-         else
 
-         {
 
-             return null;
 
-         }
 
-     }
 
- }
 
 
  |