public static OperationValidation CreateResolved(
     Operation operation,
     OperationRisk risk,
     DateTime validationMoment,
     DateTime resolutionMoment,
     OperationValidationResolution resolution)
 {
     return(new OperationValidation
            (
                version: null,
                operation: operation,
                risk: risk,
                validationMoment: validationMoment,
                resolutionMoment: resolutionMoment,
                resolution: resolution
            ));
 }
        public void Resolve(OperationValidationResolution resolution)
        {
            if (!Risk.IsResolutionRequired)
            {
                throw new InvalidOperationException($"Resolution is not required, since operation risk level is {Risk.Level}");
            }

            if (IsResolved)
            {
                if (Resolution != resolution)
                {
                    throw new InvalidOperationException($"Validation already was resolved as {Resolution} and can't be changed to {resolution}");
                }
            }
            else
            {
                Resolution       = resolution;
                ResolutionMoment = DateTime.UtcNow;
            }
        }