public async Task <OperationRisk> ValidateAsync(Operation operation) { var constraints = _constraintsRegistry.GetConstraints(operation.BlockchainType, operation.BlockchainAssetId, operation.Type); var violationsBuilder = new StringBuilder(); foreach (var item in constraints) { var validationResult = await item.constraint.ApplyAsync( item.blockchainType, item.blockchainAssetId, item.operationType, operation); if (validationResult.IsViolated) { violationsBuilder.AppendLine($"{item.constraint.GetConstraintName()}: {validationResult.Violation}"); } } return(violationsBuilder.Length > 0 ? OperationRisk.ResolutionRequired(violationsBuilder.ToString()) : OperationRisk.Reliable); }
public OperationRisk ToRisk() { return(Level == OperationRiskLevel.Reliable ? OperationRisk.Reliable : OperationRisk.ResolutionRequired(Violations)); }
public OperationRiskEntity(OperationRisk risk) { Violations = risk.Violations; Level = risk.Level; }