using Raven.Client.Documents; namespace zero.Commerce.Numbers; public class NumberInterceptor : Interceptor { protected IZeroStore Store { get; private set; } public NumberInterceptor(IZeroStore store) { Store = store; } /// public override Task> Creating(InterceptorParameters args, Number model) => Saving(args, model, false); /// public override Task> Updating(InterceptorParameters args, Number model) => Saving(args, model, true); protected async Task> Saving(InterceptorParameters args, Number model, bool update) { string flavor = model.Flavor; string existingId = await args.Operations.Session.Query().Where(x => x.Flavor == flavor).Select(x => x.Id).FirstOrDefaultAsync(); if (!existingId.IsNullOrEmpty() && existingId != model.Id) { return new() { Result = Result.Fail("@shop.errors.number.multiplenotallowed") }; } model.Alias = flavor; model.IsActive = true; model.Name = null; return default; } }