public ActionResult LetterTypes(LetterTypeModel lettertype) { ClearAlerts("Alert LetterTypes M", 3); // get the list of letter types from Session List <LetterTypeModel> lettertypes = getLetterTypes(); // we'll need to validate the data if (lettertypes.Exists(lt => lt.Name == lettertype.Name)) { Session.Add("Alert LetterTypes M2", "Letter type name already exists. Please use a distinct name."); } if (lettertypes.Exists(lt => lt.Pattern == lettertype.Pattern)) { Session.Add("Alert LetterTypes M3", "Letter type pattern already used. Please use a distinct pattern."); } if (Session["Alert LetterTypes M2"] != null || Session["Alert LetterTypes M3"] != null) { return(View()); } lettertype.Id = LetterTypeProcessor.CreateLetterType(lettertype.Name, (int)Session["Language"], lettertype.Description, lettertype.Pattern); lettertypes.Add(lettertype); // lastly, we'll need to clear the values in the field ModelState.SetModelValue("Name", new ValueProviderResult("", "", ModelState["Name"].Value.Culture)); ModelState.SetModelValue("Description", new ValueProviderResult("", "", ModelState["Description"].Value.Culture)); return(View()); }
public ActionResult RemoveLetterType(int id) { // get the list of letter types from Session List <LetterTypeModel> lettertypes = getLetterTypes(); lettertypes.RemoveAt(lettertypes.FindIndex(lt => lt.Id == id)); LetterTypeProcessor.DeleteLetterType(id); return(RedirectToAction("LetterTypes", "Language")); }
private List <LetterTypeModel> getLetterTypes() { List <LetterTypeModel> lettertypes = new List <LetterTypeModel>(); // the fail case for this method is if there is no selected language if (Session["Language"] == null) { return(lettertypes); } // check if Session already has a letter types list if (Session["Letter Types"] != null) { lettertypes = (List <LetterTypeModel>)Session["Letter Types"]; // now, if the list isn't empty return it if (lettertypes.Count != 0) { return(lettertypes); } } // otherwise, Session does not have a letter types list object, so we'll instead start checking the database // now load the letter types from the database List <LetterTypeDataModel> dmLetterTypes = LetterTypeProcessor.LoadLetterTypes((int)Session["Language"]); foreach (LetterTypeDataModel lettertype in dmLetterTypes) { lettertypes.Add(new LetterTypeModel { Id = lettertype.Id, Name = lettertype.Name, Description = lettertype.Description, Pattern = lettertype.Pattern }); } // now make sure Session has letter types list if (Session["Letter Types"] != null) { Session["Letter Types"] = lettertypes; } else { Session.Add("Letter Types", lettertypes); } return(lettertypes); }
// GET: Language public ActionResult Index() { // this action result is more for redirecting properly // first we need to check if there's a user if (Session["User"] == null) { // if there's no user, we'll need add an alert and also redirect to the login page Session.Add("No User", true); return(RedirectToAction("Login", "User")); } // now we need to check if a language has been selected if (Session["Language"] == null) { // if there's no language, we'll need to add an alert and also redirect to the languages page Session.Add("No Language", true); return(RedirectToAction("Languages", "Language")); } // so at this point, we know there's a user and language selected // we need to make several checks as the word maker doesn't work if we don't have letter types, letters, word patterns or classifications int languageid = Int32.Parse(Session["Language"].ToString()); // check if there are any letter types if (LetterTypeProcessor.getLetterTypesCount(languageid) <= 0) { return(RedirectToAction("LetterTypes", "Language")); } // check if there are any letters if (LetterProcessor.getLettersCount(languageid) <= 0) { return(RedirectToAction("Letters", "Language")); } // check if there are any word patterns if (WordPatternProcessor.getWordPatternsCount(languageid) <= 0) { return(RedirectToAction("WordPatterns", "Language")); } // check if there are any classifications if (ClassificationProcessor.getClassificationsCount(languageid) <= 0) { return(RedirectToAction("Classifications", "Language")); } // otherwise, we'll just go the the words page else { return(RedirectToAction("Words", "Language")); } }
// Action Result methods for Letter Type Views #region Letter Types public ActionResult LetterTypes() { ClearAlerts("Alert LetterTypes M", 3); // the fail cases for this page is if there isn't a User or a language isn't selected - redirect to Index if (Session["User"] == null || Session["Language"] == null) { return(RedirectToAction("Index", "Language")); } // this page needs to return a list of letter types List <LetterTypeModel> lettertypes = getLetterTypes(); // now, if the list isn't empty, the page should load it if (lettertypes.Count != 0) { return(View()); } // at this point lettertypes is definitively empty, so we'll autogenerate two letter types - consonants and vowels LetterTypeProcessor.CreateLetterType("Consonant", (int)Session["Language"], "Basic letter type, such as b, c & d in English", 'c'); LetterTypeProcessor.CreateLetterType("Vowel", (int)Session["Language"], "Basic letter type, such as a, e, and i in English", 'v'); Session.Add("Alert LetterTypes M1", "There were no existing letter types - Consonant & Vowel have been auto-generated."); // now load the new letter types from the database List <LetterTypeDataModel> dmLetterTypes = LetterTypeProcessor.LoadLetterTypes((int)Session["Language"]); foreach (LetterTypeDataModel lettertype in dmLetterTypes) { lettertypes.Add(new LetterTypeModel { Id = lettertype.Id, Name = lettertype.Name, Description = lettertype.Description }); } // assign lettertypes to Session Session["Letter Types"] = lettertypes; // return the view return(View()); }