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;
- }
- }
- }
|