private void HandleException(ExceptionContext context, IApplicationException exception)
    {
        Dictionary <string, object> error = new Dictionary <string, object>();

        error["class"] = exception._class;
        error["name"]  = exception._name;
        error["extra"] = exception.extraData;
        context.Result = new ObjectResult(new { error });
    }
Example #2
0
        internal static IResult <TResult> FromException <TResult>([NotNull] IApplicationException exception)
        {
            if (exception == null)
            {
                throw new ArgumentNullException(nameof(exception));
            }

            return(new Result <TResult>
            {
                Resource = default,
Example #3
0
            public static IResult <T> FromException <T>(IApplicationException exception = null)
            {
                exception ??= ApplicationException.Default;

                var substitute = Substitute.For <IResult <T> >();

                substitute.Exception.Returns(exception);

                return(substitute);
            }
 public void OnException(ExceptionContext context)
 {
     if (context.Exception.GetType().IsSubclassOf(typeof(IApplicationException)))
     {
         IApplicationException exception = (IApplicationException)context.Exception;
         HandleException(context, exception);
     }
     else
     {
         if (development)
         {
             //context.Result = new ObjectResult(new { context.Exception.Message, context.Exception.StackTrace });
             HandleException(context, new InternalErrorException(context.Exception));
         }
         else
         {
             HandleException(context, new InternalErrorException());
         }
     }
 }
Example #5
0
        public static void AddModelErrors(this ModelStateDictionary modelState, IApplicationException appException)
        {
            if (modelState == null)
            {
                throw new ArgumentNullException(nameof(modelState));
            }

            if (appException == null)
            {
                throw new ArgumentNullException(nameof(appException));
            }

            var messagesUsed = false;

            if (appException.Messages != null)
            {
                foreach (var m in appException.Messages)
                {
                    messagesUsed = true;
                    modelState.AddModelError(m.Field ?? string.Empty, m.Message);
                }
            }

            var messageUsed = false;

            if (!string.IsNullOrWhiteSpace(appException.Message))
            {
                messageUsed = true;
                modelState.AddModelError(string.Empty, appException.Message);
            }

            if (!messagesUsed &&
                !messageUsed)
            {
                modelState.AddModelError(string.Empty, "Internal error");
            }
        }