Example #1
0
        protected virtual ActionResult GetErrorResponse(Exception ex, MvcOptionsAttribute options, Object viewModel)
        {
            if (ex is ValidationException || ex is DbUnexpectedValidationException)
            {
                var validationEx = ex as ValidationException;
                this.ModelState.AddModelError(String.Empty, ex.Message);
            }
            else if (ex is DbEntityValidationException)
            {
                var exception = ex as DbEntityValidationException;
                foreach (var error in exception.EntityValidationErrors.SelectMany(ev => ev.ValidationErrors.Select(ve => ve)))
                {
                    this.ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
                }

                this.ModelState.AddModelError(String.Empty, ex.Message);
            }
            else if (ex is ApprovalNeededException)
            {
                var approvalException = (ApprovalNeededException)ex;
                var url = String.Format(ConfigurationHelper.ChangeSubmitUrl, approvalException.ChangeID);
                return this.AutoRedirect(url);
            }
            else
            {
                LogError(ex);
                if (ConfigurationHelper.Debug)
                    throw ex;
                else
                {
                    ViewBag.Error = true;
                    Response.StatusCode = 500;
                    ViewBag.ErrorText = this.GetErrorMessage(ex, options);
                }

                if (options.ReturnErrorViewOnError)
                {
                    Session["ErrorText"] = ViewBag.ErrorText;
                    return Redirect(ConfigurationHelper.DefaultErrorpage);
                }
            }

            if (viewModel.NotNull())
                this.BaseRepository.MapRepoFunction(viewModel);

            return (ActionResult)this.View(viewModel);

        }