| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using Comal.Classes;
- using Comal.Stores;
- using InABox.Core;
- namespace PRSStores;
- public class BillApprovalStore : BaseStore<BillApproval>
- {
-
- private void CheckBillApproval(Guid billId)
- {
- if (billId == Guid.Empty)
- return;
-
- var _statustask = Task.Run(() => Provider.Query(
- new Filter<BillApproval>(x => x.Bill.ID).IsEqualTo(billId),
- Columns.None<BillApproval>().Add(x => x.Status)
- )
- .ExtractValues<BillApproval, BillApprovalStatus>(x => x.Status)
- .Distinct()
- .ToArray()
- );
- var _billTask = Task.Run(() => Provider.Query(
- new Filter<Bill>(x => x.ID).IsEqualTo(billId),
- Columns.None<Bill>()
- .Add(x=>x.ID)
- .Add(x=>x.ApprovalStatus)
- )
- .ToObjects<Bill>()
- .FirstOrDefault()
- );
- Task.WaitAll(_statustask, _billTask);
- var _statuses = _statustask.Result;
-
- var _bill = _billTask.Result;
- if (_bill == null)
- return;
- var _status = Bill.CalculateApprovalStatus(_statuses);
- if (_status != _bill.ApprovalStatus)
- _bill.ApprovalStatus = _status;
- Provider.Save(_bill);
- }
-
- protected override void AfterSave(BillApproval entity)
- {
- base.AfterSave(entity);
- CheckBillApproval(entity.Bill.ID);
- }
-
- protected override void AfterSave(IEnumerable<BillApproval> entities)
- {
- var _billApprovals = entities as BillApproval[] ?? entities.ToArray();
- base.AfterSave(_billApprovals);
- var _ids = _billApprovals.Select(x => x.Bill.ID).Distinct().ToArray();
- foreach (var _id in _ids)
- CheckBillApproval(_id);
- }
- protected override void AfterDelete(BillApproval entity)
- {
- base.AfterDelete(entity);
- CheckBillApproval(entity.Bill.ID);
- }
-
-
- }
|