Ejemplo n.º 1
0
        public static object GetResult(BaseResponse response)
        {
            BusinessRuleExceptions exs = null;

            if (response.Acknowledgement.Status == Acknowledgement.STATUS_NONOK)
            {
                foreach (Reply reply in response.Acknowledgement.Replys)
                {
                    var errorCode  = reply.ErrorCode ?? string.Empty;
                    var errorField = reply.ErrorField ?? string.Empty;
                    var errorLevel = reply.Level ?? BusinessRuleException.Level.Error.ToString();
                    // Add BusinessRuleException for all known errors.

                    BusinessRuleException error =
                        BusinessRuleException.CreateBusinessRuleException(reply.DefaultMessage, errorField);
                    if (Enum.TryParse <BusinessRuleException.Level>(errorLevel, out var exceptionLevel))
                    {
                        error.ExceptionLevel = exceptionLevel;
                    }

                    error.AddErrorCode(errorCode);
                    if (exs == null)
                    {
                        exs = new BusinessRuleExceptions(reply.DefaultMessage);
                    }
                    exs.AddErrorCode(errorCode);

                    // Add error data.
                    int idx = 0;
                    reply.CodeValues?.Execute(param => error.AddData((idx++).ToString(), param));

                    exs.AddBusinessRuleException(error);

                    RLog.Error(reply.DefaultMessage);
                }

                exs?.ThrowIfAny();
            }

            return(response.InternalGetResult());
        }