Example #1
0
        ActionResult RunAction(Action action, Framework.Core.Entities.User userToRunAs, string currentPageName, string submittedPageNames, bool back, AuthorisedAction auth = null)
        {
            MultiPageAction.Page givenPage = null;

            model        = new ActionViewModel(HasAccessToNewActions);
            model.Action = action;

            if (action is MultiPageAction)
            {
                givenPage = PrepareMultipageAction(action, userToRunAs, currentPageName, submittedPageNames, back, model);
            }
            else if (Request.HttpMethod == "POST")
            {
                SetPostValues(action, action.Fields);
            }

            if (Request.HttpMethod == "POST")
            {
                action.BeforeRun(true);
                if (!action.AccessibleTo(userToRunAs, DbContext) && !(action is Login))
                {
                    Response.Redirect(Url.Action("MainPage", "LandingPage") + "?ReturnUrl=" + Request.Url);
                }

                return(HandlePostAction(action, userToRunAs, back, givenPage, model, auth));
            }
            else

            {
                SetGetParams(action);
                action.BeforeRun(false);
                if (!action.AccessibleTo(userToRunAs, DbContext) && !(action is Login))
                {
                    Response.Redirect(Url.Action("MainPage", "LandingPage") + "?ReturnUrl=" + Request.Url);
                }

                if (action.Fields.Count() == 0)
                {
                    if (action.RedirectLocation != null && action.RedirectLocation is RedirectToURL)
                    {
                        Response.Redirect((action.RedirectLocation as RedirectToURL).Url);
                    }

                    return(View(EmptyActionViewPathPrefix, model));
                }
                else
                {
                    return(View(ActionViewPathPrefix, model)); // method was not post
                }
            }
        }
Example #2
0
        private ActionResult HandlePostAction(Action action, Framework.Core.Entities.User userToRunAs, bool back, MultiPageAction.Page givenPage, ActionViewModel model, AuthorisedAction auth)
        {
            if (back)
            {
                model.SubmittedPages.Remove(model.SubmittedPages.FirstOrDefault(p => (p is MultiPageAction.CustomPage && model.Page is MultiPageAction.CustomPage) ? (p as MultiPageAction.CustomPage).Identifier == (model.Page as MultiPageAction.CustomPage).Identifier : p.GetType() == model.Page.GetType()));
                return(View(ActionViewPathPrefix, model));
            }
            else
            {
                MultiPageAction.Page nextPage = null;

                if (model.IsMultiPage)
                {
                    nextPage = model.MultiPageAction.Validate(givenPage);
                }
                else
                {
                    action.Validate();
                }

                if (action.IsValid)
                {
                    if (action is MultiPageAction)
                    {
                        if (nextPage == null)
                        {
                            return(RunActionAndRedirect(action, auth));
                        }
                        else
                        {
                            return(View(ActionViewPathPrefix, model.AdvanceToPage(nextPage)));
                        }
                    }
                    else
                    {
                        return(RunActionAndRedirect(action, auth));
                    }
                }
                else
                {
                    return(View(ActionViewPathPrefix, model));
                }
            }
        }
Example #3
0
        private MultiPageAction.Page PrepareMultipageAction(Action action, Framework.Core.Entities.User userToRunAs, string currentPageName, string submittedPageNames, bool back, ActionViewModel model)
        {
            var multipageAction = (MultiPageAction)action;

            model.Page = currentPageName == null?multipageAction.GetFirstPage() : multipageAction.PageByName(currentPageName);

            var givenPage = model.Page;

            if (Request.HttpMethod == "POST")
            {
                SetPostValues(multipageAction, action.Fields);
            }

            if (submittedPageNames != null && submittedPageNames.Length >= 1)
            {
                model.SubmittedPages = submittedPageNames.Split(',').ToList().Select(p => multipageAction.PageByName(p)).ToList();
            }

            model.Page            = back ? model.SubmittedPages.Last() : givenPage;
            model.IsMultiPage     = true;
            model.MultiPageAction = multipageAction;
            return(givenPage);
        }