/// <summary> /// Convert to service model /// </summary> /// <param name="diagnostics"></param> /// <param name="config"></param> /// <param name="codec"></param> /// <returns></returns> public static ServiceResultModel Encode(this IVariantEncoder codec, List <OperationResultModel> diagnostics, DiagnosticsModel config) { if ((diagnostics?.Count ?? 0) == 0) { return(null); // All well } var result = diagnostics.LastOrDefault(d => !d.TraceOnly); var statusCode = result?.StatusCode; return(new ServiceResultModel { // The last operation result is the one that caused the service to fail. StatusCode = statusCode?.Code, ErrorMessage = result?.DiagnosticsInfo?.AdditionalInfo ?? (statusCode == null ? null : StatusCode.LookupSymbolicId(statusCode.Value.CodeBits)), Diagnostics = codec.Write(diagnostics, config) }); }
/// <summary> /// Convert to service model /// </summary> /// <param name="statusCode"></param> /// <param name="diagnosticsInfo"></param> /// <param name="config"></param> /// <param name="codec"></param> /// <returns></returns> public static ServiceResultModel Encode(this IVariantEncoder codec, StatusCode?statusCode, DiagnosticInfo diagnosticsInfo = null, DiagnosticsModel config = null) { if ((statusCode?.Code ?? StatusCodes.Good) == StatusCodes.Good) { return(null); // All well } return(new ServiceResultModel { // The last operation result is the one that caused the service to fail. StatusCode = statusCode?.Code, ErrorMessage = diagnosticsInfo?.AdditionalInfo ?? (statusCode == null ? null : StatusCode.LookupSymbolicId(statusCode.Value.CodeBits)), Diagnostics = config == null ? null : codec.Write( new List <OperationResultModel> { new OperationResultModel { DiagnosticsInfo = diagnosticsInfo, StatusCode = statusCode.Value } }, config) }); }