public ActionResult Add(string Template = "")
        {
            AddEditDictionaryPhraseViewModel vModel = new AddEditDictionaryPhraseViewModel(Template)
            {
                AuthedUser = UserManager.FindById(User.Identity.GetUserId())
            };

            return(View("~/Views/GameAdmin/DictionaryPhrase/Add.cshtml", vModel));
        }
        public ActionResult Edit(string id, string ArchivePath = "")
        {
            IDictataPhrase obj = ConfigDataCache.Get <IDictataPhrase>(new ConfigDataCacheKey(typeof(IDictataPhrase), id, ConfigDataType.Dictionary));

            if (obj == null)
            {
                string message = "That does not exist";
                return(RedirectToAction("Index", new { Message = message }));
            }

            AddEditDictionaryPhraseViewModel vModel = new AddEditDictionaryPhraseViewModel(ArchivePath, obj)
            {
                AuthedUser = UserManager.FindById(User.Identity.GetUserId())
            };

            return(View("~/Views/GameAdmin/DictionaryPhrase/Edit.cshtml", vModel));
        }
        public ActionResult Add(AddEditDictionaryPhraseViewModel vModel)
        {
            ApplicationUser authedUser = UserManager.FindById(User.Identity.GetUserId());

            IDictataPhrase newObj = vModel.DataObject;
            string         message;

            if (newObj.Save(authedUser.GameAccount, authedUser.GetStaffRank(User)))
            {
                LoggingUtility.LogAdminCommandUsage("*WEB* - AddDictataPhrase[" + newObj.UniqueKey + "]", authedUser.GameAccount.GlobalIdentityHandle);
                message = "Creation Successful.";
            }
            else
            {
                message = "Error; Creation failed.";
            }

            return(RedirectToAction("Index", new { Message = message }));
        }
        public ActionResult Edit(string id, AddEditDictionaryPhraseViewModel vModel)
        {
            string          message    = string.Empty;
            ApplicationUser authedUser = UserManager.FindById(User.Identity.GetUserId());

            IDictataPhrase obj = ConfigDataCache.Get <IDictataPhrase>(new ConfigDataCacheKey(typeof(IDictataPhrase), id, ConfigDataType.Dictionary));

            if (obj == null)
            {
                message = "That does not exist";
                return(RedirectToAction("Index", new { Message = message }));
            }

            obj.Severity       = vModel.DataObject.Severity;
            obj.Quality        = vModel.DataObject.Quality;
            obj.Elegance       = vModel.DataObject.Elegance;
            obj.Tense          = vModel.DataObject.Tense;
            obj.Synonyms       = vModel.DataObject.Synonyms;
            obj.Antonyms       = vModel.DataObject.Antonyms;
            obj.PhraseSynonyms = vModel.DataObject.PhraseSynonyms;
            obj.PhraseAntonyms = vModel.DataObject.PhraseAntonyms;
            obj.Language       = vModel.DataObject.Language;
            obj.Words          = vModel.DataObject.Words;
            obj.Feminine       = vModel.DataObject.Feminine;
            obj.Positional     = vModel.DataObject.Positional;
            obj.Perspective    = vModel.DataObject.Perspective;
            obj.Semantics      = vModel.DataObject.Semantics;

            if (obj.Save(authedUser.GameAccount, authedUser.GetStaffRank(User)))
            {
                foreach (IDictata syn in obj.Synonyms)
                {
                    if (!syn.PhraseSynonyms.Any(dict => dict == obj))
                    {
                        System.Collections.Generic.HashSet <IDictataPhrase> synonyms = syn.PhraseSynonyms;
                        synonyms.Add(obj);

                        syn.PhraseSynonyms = synonyms;
                        syn.GetLexeme().Save(authedUser.GameAccount, authedUser.GetStaffRank(User));
                    }
                }

                foreach (IDictata ant in obj.Antonyms)
                {
                    if (!ant.PhraseAntonyms.Any(dict => dict == obj))
                    {
                        System.Collections.Generic.HashSet <IDictataPhrase> antonyms = ant.PhraseAntonyms;
                        antonyms.Add(obj);

                        ant.PhraseAntonyms = antonyms;
                        ant.GetLexeme().Save(authedUser.GameAccount, authedUser.GetStaffRank(User));
                    }
                }

                foreach (IDictataPhrase syn in obj.PhraseSynonyms)
                {
                    if (!syn.PhraseSynonyms.Any(dict => dict == obj))
                    {
                        System.Collections.Generic.HashSet <IDictataPhrase> synonyms = syn.PhraseSynonyms;
                        synonyms.Add(obj);

                        syn.PhraseSynonyms = synonyms;
                        syn.Save(authedUser.GameAccount, authedUser.GetStaffRank(User));
                    }
                }

                foreach (IDictataPhrase ant in obj.PhraseAntonyms)
                {
                    if (!ant.PhraseAntonyms.Any(dict => dict == obj))
                    {
                        System.Collections.Generic.HashSet <IDictataPhrase> antonyms = ant.PhraseAntonyms;
                        antonyms.Add(obj);

                        ant.PhraseAntonyms = antonyms;
                        ant.Save(authedUser.GameAccount, authedUser.GetStaffRank(User));
                    }
                }

                LoggingUtility.LogAdminCommandUsage("*WEB* - EditDictataPhrase[" + obj.UniqueKey + "]", authedUser.GameAccount.GlobalIdentityHandle);
                message = "Edit Successful.";
            }
            else
            {
                message = "Error; Edit failed.";
            }

            return(RedirectToAction("Index", new { Message = message }));
        }