public Task <HandlerResult <OrderStatus> > Handle(ChangeStateOrderContext <TCommand, TFrom> input) { return(Handler .Handle(input) .AwaitAndPipeTo(x => x.Match( result => { input.Order.RemoveDomainEvents(); return new HandlerResult <OrderStatus>(result.EligibleStatus); }, failure => failure))); }
public async Task <HandlerResult <TTo> > Handle(ChangeStateOrderContext <TCommand, TFrom> input) { using var tr = _unitOfWork.BeginTransaction(); try { await Task.Delay(300); var result = ChangeStateOrder(input); _unitOfWork.Commit(); await tr.CommitAsync(); return(result); } catch (Exception e) { await tr.RollbackAsync(); return(FailureInfo.Invalid(e.Message)); } }
protected abstract TTo ChangeStateOrder(ChangeStateOrderContext <TCommand, TFrom> input);