Files
mixtape/zero/Numbers/NumberInterceptor.cs
T
2022-12-20 15:22:02 +01:00

42 lines
1.1 KiB
C#

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