BillStore.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using System;
  4. namespace Comal.Stores;
  5. internal class BillStore : BaseStore<Bill>
  6. {
  7. protected override void BeforeSave(Bill entity)
  8. {
  9. base.BeforeSave(entity);
  10. if(entity.HasOriginalValue(x => x.Number) || entity.SupplierLink.HasOriginalValue(x => x.ID))
  11. {
  12. var existing = Provider.Query<Bill>(
  13. new Filter<Bill>(x => x.Number).IsEqualTo(entity.Number)
  14. .And(x => x.SupplierLink.ID).IsEqualTo(entity.SupplierLink.ID)
  15. .And(x => x.ID).IsNotEqualTo(entity.ID),
  16. Columns.None<Bill>().Add(x => x.ID));
  17. if(existing.Rows.Count > 0)
  18. {
  19. throw new DuplicateCodeException(typeof(Bill), new Dictionary<string, object> {{ nameof(Bill.Number), entity.Number }});
  20. }
  21. }
  22. //UpdateAggregate<Supplier>(entity, entity.SupplierLink, Sum<Supplier>(b => b.Balance, s => s.Balance));
  23. }
  24. protected override void BeforeDelete(Bill entity)
  25. {
  26. base.BeforeDelete(entity);
  27. entity.SupplierLink.ID = Guid.Empty;
  28. //UpdateAggregate<Supplier>(entity, entity.SupplierLink, Sum<Supplier>(b => b.Balance, s => s.Balance));
  29. }
  30. }