Ejemplo n.º 1
0
        public ActionResult Invoke(TActionMethodResult actionMethodResult, ControllerContext context)
        {
            var modelState = context.Controller.ViewData.ModelState;
            Func <IGenericMapper, ErrorContext, ActionResult> actionResult = actionMethodResult.Failure;
            ErrorContext errorContext = null;

            if (modelState.IsValid)
            {
                TExecutedCommandResult executedCommandResult = _resultProcessor.ProcessCommand(actionMethodResult, _mapper);
                if (executedCommandResult.Successful)
                {
                    actionResult = _resultProcessor.HandleSuccess(executedCommandResult, actionMethodResult);
                }
                else
                {
                    errorContext = SetError(context, isAjaxRequest =>
                                            actionMethodResult.NoErrorState || isAjaxRequest
                            ? _errorAspect.BuildErrorContext(context, executedCommandResult.Error)
                            : _errorAspect.SetErrorContext(context, executedCommandResult.Error));
                }
            }
            else
            {
                errorContext = SetError(context, isAjaxRequest =>
                                        actionMethodResult.NoErrorState || isAjaxRequest
                            ? _errorAspect.BuildErrorContext(context, modelState)
                            : _errorAspect.SetErrorContext(context, modelState));
            }

            return(actionResult(_mapper, errorContext));
        }