#include #include #include #include #include #include "MenuManager.h" #include "ProductSale.h" std::string readFile(std::string &fileName, std::vector &allSales) { std::string content; std::ifstream infile; infile.open(fileName); if (!infile.is_open()) { std::cout << "File does not exist" << std::endl; return "FAILED_TO_READ_FILE"; } std::string line; std::getline(infile, line); // Skip first Line while (std::getline(infile, line)) { content += line; ProductSale *temp = new ProductSale(line); // TODO Use Smart Pointers allSales.push_back(temp); } return content; } void deleteAllPointers(std::vector &allSales) { for (auto it = allSales.begin(); it != allSales.end(); it++) { delete (*it); } } void getMostPopularTypeIn(std::string country, std::vector &allSales) { // TODO Add Map DataType std::mapTypeCounter; for (ProductSale* singelSale : allSales) { // map.add(singleSale) if (singelSale->country != country) { continue; } bool alreadyExists = false; for (auto element : TypeCounter) { if (element.first == singelSale->itemType) { element.second++; alreadyExists = true; break; } } if (!alreadyExists) { TypeCounter[singelSale->itemType] = 1; } } // return map.getMostCommon std::string mostPopularType; int counter = 0; for (auto element : TypeCounter) { if (element.second > counter) { counter = element.second; mostPopularType = element.first; } } std::cout << "Most popular Type : " << mostPopularType << std::endl << "Occurences : " << counter << std::endl << std::endl; } void Aufg8Main() { std::vector allSales; std::string fileName = "../Aufg8/IO-Files/sales_records_small.csv"; readFile(fileName, allSales); for (int i = 0; i < allSales.size(); ++i) { std::cout << allSales[i]->toString() << std::endl; std::cout << "==============" << std::endl; } std::string selectedRegion; std::string selectedType; int currentMenu = 0; std::string* PselectedRegion = &selectedRegion; std::string* PselectedType = &selectedType; int* PcurrentMenu = ¤tMenu; MenuManager menu{PcurrentMenu, PselectedRegion, PselectedType}; menu.MainInteraction(); while (currentMenu) { switch (currentMenu) { // TODO Finish these case 0: return; case 1: // getTotalProfitFor(*selectedType); break; case 2: // getSaleCount(*selectedType, *selectedRegion); break; case 3: getMostPopularTypeIn(selectedRegion, allSales); break; case 4: // getOnlineVsOfflineIn(*selectedRegion); break; default: std::cout << "You should not be able to reach this!"; } menu.MainInteraction(); } }