Esempio n. 1
0
        static void Main(string[] args)
        {
            var codeFirstDataBase   = new CodeFirstDataBase();
            var myDictionaryManager = new DictionaryManager();

            codeFirstDataBase.AddFromFile(myDictionaryManager.LoadDictionary(ConfigurationManager.AppSettings["DictionaryPath"]), "Server=localhost;Database=anagramsolver; User Id = sa; Password = LAMA55lama;");
            // StartApp();
        }
Esempio n. 2
0
        public async Task <ActionResult <Dictionary <string, DictionaryEntry> > > GetFilteredWord(string word)
        {
            var dataBase = new CodeFirstDataBase();
            var items    = await dataBase.FilterWords(word, Configuration["ConnectionString"]);

            if (items.Count < 1)
            {
                return(NotFound());
            }

            return(items);
        }
Esempio n. 3
0
        public async Task <ActionResult <Dictionary <string, DictionaryEntry> > > Get(int index)
        {
            var dataBase = new CodeFirstDataBase();
            var numberOfItemsToReturn = Int32.Parse(Configuration["NumberOfDictionaryEntriesToReturn"]);
            var items = await dataBase.GetWords(index, numberOfItemsToReturn, Configuration["ConnectionString"]);

            if (items.Count < 1)
            {
                return(NotFound());
            }

            return(items);
        }
Esempio n. 4
0
        public async Task <List <string> > GenerateAnagrams(string word, int maxNumberOfAnagrams, string connString)
        {
            var codeFirstDataBase = new CodeFirstDataBase();
            var returned          = await codeFirstDataBase.GetCachedWords(word, connString);

            if (returned.Count > 0)
            {
                return(returned);
            }

            var generatedAnagrams = new List <string>();
            var entities          = new List <WordEntity>();

            if (word.Length < 6)
            {
                var returnList = await FindAllCombinations(word);

                foreach (var item in returnList)
                {
                    var wordEntity = await Task.Run(() => codeFirstDataBase.CheckIfExistsInWords(item, connString));

                    if (wordEntity.Word != null && item != word && generatedAnagrams.Count < maxNumberOfAnagrams && !generatedAnagrams.Any(listItem => listItem == item))
                    {
                        generatedAnagrams.Add(item);
                        entities.Add(wordEntity);
                    }
                }
            }
            else
            {
                var orderedWord = word.ToCharArray();
                Array.Sort(orderedWord);
                var wordEntities = await Task.Run(() => codeFirstDataBase.CheckIfExistsInOrderedWords(new string(orderedWord), connString));

                foreach (var wordEntity in wordEntities)
                {
                    if (wordEntity.Word != word && generatedAnagrams.Count < maxNumberOfAnagrams)
                    {
                        generatedAnagrams.Add(wordEntity.Word);
                        entities.Add(wordEntity);
                    }
                }
            }

            await codeFirstDataBase.AddToChaced(word, entities, connString);

            return(generatedAnagrams);
        }
        public async Task <ActionResult <List <string> > > Get(string id, [FromQuery] int numberOfAnagramsToGenerate)
        {
            if (numberOfAnagramsToGenerate == 0)
            {
                numberOfAnagramsToGenerate = 1;
            }

            var anagramGenerator = new AnagramGenerator();
            var items            = await anagramGenerator.GenerateAnagrams(id, numberOfAnagramsToGenerate, Configuration["ConnectionString"]);

            if (items.Count < 1)
            {
                return(NotFound());
            }

            var codeFirstDataBase = new CodeFirstDataBase();
            await codeFirstDataBase.SaveUserLog(HttpContext.Connection.RemoteIpAddress.ToString(), id, Configuration["ConnectionString"]);

            return(items);
        }