public int GetWordFrequency_PassedFilePathAndWord(string filePath, string word)
 {
     filePath = Directory.GetCurrentDirectory() + filePath;
     return(TextFileManipulator.GetWordFrequency(filePath, word));
 }
Exemplo n.º 2
0
        public IActionResult Index()
        {
            List <SelectListItem> originalListItems = new List <SelectListItem>();
            List <SelectListItem> outputListItems   = new List <SelectListItem>();

            TextFileManipulator textFileManipulator = new TextFileManipulator();

            // Get Raw Name Data from file
            string rawData = textFileManipulator.GetRawFileData();

            // Convert Raw Name Data to list
            List <string> rawDataStringList = textFileManipulator.ConvertRawDataToList(rawData);

            foreach (var item in rawDataStringList)
            {
                originalListItems.Add(new SelectListItem()
                {
                    Text = item, Value = item, Selected = false
                });
            }

            // Sort Names list
            List <string> sortedStringList = textFileManipulator.SortStringList(rawDataStringList);

            // Delete previous sorted_names.txt
            if (System.IO.File.Exists("sorted_names.txt"))
            {
                System.IO.File.Delete("sorted_names.txt");
            }

            for (int i = 0; i < sortedStringList.Count - 1; i++)
            {
                string word            = sortedStringList[i];
                int    wordScore       = WordCalculations.CalculateWordScore(word, i + 1);
                string wordScoreString = wordScore.ToString();

                // Save sorted Names list to file
                textFileManipulator.WriteStringToFile(word, wordScoreString);
                // Output Sorted List to ListBox
                outputListItems.Add(new SelectListItem()
                {
                    Text = word + " - " + wordScoreString, Value = wordScoreString, Selected = false
                });
            }

            // Calculate Grand Total
            int grandTotal = WordCalculations.CalculateGrandTotalFromList(sortedStringList);

            // Question 1
            string highestTotalScoringName         = WordCalculations.CalculateHighestTotalScoringNameFromList(sortedStringList);
            int    highestTotalScoringNamePosition = WordCalculations.GetNamePositionFromList(sortedStringList, highestTotalScoringName);

            // Question 2
            string lowestTotalScoringName         = WordCalculations.CalculateLowestTotalScoringNameFromList(sortedStringList);
            int    lowestTotalScoringNamePosition = WordCalculations.GetNamePositionFromList(sortedStringList, lowestTotalScoringName);

            // Question 3
            Tuple <string, int> highestAlphabeticalValueAndName = WordCalculations.CalculateHighestAlphabeticalValueAndNameFromList(sortedStringList);
            string highestAlphabeticalValueName = highestAlphabeticalValueAndName.Item1;
            int    highestAlphabeticalValue     = highestAlphabeticalValueAndName.Item2;

            // Question 4
            Tuple <string, int> lowestAlphabeticalValueAndName = WordCalculations.CalculateLowestAlphabeticalValueAndNameFromList(sortedStringList);
            string lowestAlphabeticalValueName = lowestAlphabeticalValueAndName.Item1;
            int    lowestAlphabeticalValue     = lowestAlphabeticalValueAndName.Item2;

            // Question 5
            int averageAlphabeticalValue = WordCalculations.CalculateAverageAlphabeticalValueFromList(sortedStringList);

            NamesModel namesModel = new NamesModel()
            {
                OriginalNames                   = originalListItems,
                OutputNames                     = outputListItems,
                GrandTotal                      = grandTotal.ToString(),
                HighestTotalScoringName         = highestTotalScoringName,
                HighestTotalScoringNamePosition = highestTotalScoringNamePosition.ToString(),
                LowestTotalScoringName          = lowestTotalScoringName,
                LowestTotalScoringNamePosition  = lowestTotalScoringNamePosition.ToString(),
                HighestAlphabeticalValueName    = highestAlphabeticalValueName,
                HighestAlphabeticalValue        = highestAlphabeticalValue.ToString(),
                LowestAlphabeticalValueName     = lowestAlphabeticalValueName,
                LowestAlphabeticalValue         = lowestAlphabeticalValue.ToString(),
                AverageAlphabeticalValue        = averageAlphabeticalValue.ToString()
            };

            return(View(namesModel));
        }