#ifndef MARKETPLACE_H #define MARKETPLACE_H #include "article.h" #include "database.h" #include "sale.h" #include "seller.h" #include #include class ExcelReader; namespace { using SellersVec = std::vector>; using SalesVec = std::vector>; using BasketVec = std::vector>; } // namespace class Marketplace { public: Marketplace(); void storeToDb(bool onlyDelete = false); Database::InitResult loadFromDb(); SellersVec &getSellers(); SalesVec &getSales(); int getNextSellerNo(); int getNextArticleNo(); int getNumSellersDelete(); int getNumArticlesSold(); int getNumArticlesOffered(); BasketVec &getBasket(); int getBasketSumInCent(); std::string getBasketSumAsString(); void sortSellers(); Seller *findSellerWithSellerNo(int sellerNo); Seller *findSellerWithUuid(const std::string &uuid); void addArticleToBasket(std::unique_ptr
article); size_t basketSize(); void finishCurrentSale(std::unique_ptr sale); void removeSale(boost::uuids::uuid uuid); void setSalesToDelete(int cashPointNo); int getOverallSumInCent(); std::string getOverallSumAsString(); int getOverallPaymentInCent(int percent, int maxFee); std::string getOverallPaymentAsString(int percent, int maxFee); std::string getOverallRevenueAsString(int percent, int maxFee); void clear(); void exportReportToCSV(const std::filesystem::path &filePath, int feeInPercent, int maxFeeInEuro); friend class ExcelReader; private: SellersVec sellers_; SalesVec sales_; BasketVec basket_; }; double marketFee(int sumInCent, int percent, int maxFeeInCent); std::string marketFeeAsString(int sumInCent, int percent, int maxFeeInCent); std::string paymentAsString(int sumInCent, int percent, int maxFeeInCent); std::string escapeCsvValue(const std::string &value, const char delimiter); #endif