#ifndef MARKETPLACE_H #define MARKETPLACE_H #include "article.h" #include "sale.h" #include "seller.h" #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); void loadFromDb(); SellersVec& getSellers(); SalesVec& getSales(); int getNextSellerNo(); int getNextArticleNo(); int getNumSellersDelete(); 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 exportReportToCSV(const std::string& filename, 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