Exemple #1
0
        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());
        }
Exemple #2
0
        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"));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        // 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"));
            }
        }
Exemple #5
0
        //  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());
        }