using Comal.Classes; using InABox.Core; using System; namespace Comal.Stores; internal class BillStore : BaseStore { protected override void BeforeSave(Bill entity) { base.BeforeSave(entity); if(entity.HasOriginalValue(x => x.Number) || entity.SupplierLink.HasOriginalValue(x => x.ID)) { var existing = Provider.Query( new Filter(x => x.Number).IsEqualTo(entity.Number) .And(x => x.SupplierLink.ID).IsEqualTo(entity.SupplierLink.ID) .And(x => x.ID).IsNotEqualTo(entity.ID), Columns.None().Add(x => x.ID)); if(existing.Rows.Count > 0) { throw new DuplicateCodeException(typeof(Bill), new Dictionary {{ nameof(Bill.Number), entity.Number }}); } } //UpdateAggregate(entity, entity.SupplierLink, Sum(b => b.Balance, s => s.Balance)); } protected override void BeforeDelete(Bill entity) { base.BeforeDelete(entity); entity.SupplierLink.ID = Guid.Empty; //UpdateAggregate(entity, entity.SupplierLink, Sum(b => b.Balance, s => s.Balance)); } }