public virtual ActionResult QuestState(int Id, int QuestId, int ParentStateId)
        {
            IQuestRepository repo = new EFQuestRepository();

            var questState = repo.QuestStates.FirstOrDefault(q => q.Id == Id);

            if (questState == null)
            {
                questState = new QuestState
                {
                    QuestEndId     = -1,
                    Text           = "",
                    QuestId        = QuestId,
                    QuestStateName = "[ state name ]",

                    QuestEnds = new List <QuestEnd>(),
                    QuestConnectionRequirements = new List <QuestConnectionRequirement>(),
                    QuestStatePreactions        = new List <QuestStatePreaction>(),
                    X            = 0,
                    Y            = 0,
                    PinToDiagram = true
                };
            }

            var output = new QuestStateFormViewModel();

            output.QuestState             = questState;
            output.QuestConnectionsTo     = repo.QuestConnections.Where(q => q.QuestStateToId == output.QuestState.Id && q.QuestStateToId > 0);
            output.QuestConnectionsFailTo = repo.QuestConnections.Where(q => q.QuestStateFailToId == output.QuestState.Id && q.QuestStateFailToId > 0);

            output.QuestConnectionsFrom = repo.QuestConnections.Where(q => q.QuestStateFromId == output.QuestState.Id && q.QuestStateFromId > 0);

            return(PartialView(MVC.QuestWriter.Views.QuestState, output));
        }
        public virtual ActionResult QuestStateSend(QuestStateFormViewModel input)
        {
            var id = QuestWriterProcedures.SaveQuestState(input.QuestState);

            QuestWriterProcedures.LogQuestWriterAction(User.Identity.Name, input.QuestState.QuestId, " saved quest state Id <b>" + input.QuestState.Id + "</b>.");

            return(RedirectToAction(MVC.QuestWriter.QuestState(id, input.QuestState.QuestId, -1)));
        }