#include "jsonutil.h" #include "database.h" #include #include void JsonUtil::exportSellers(const std::string& filename, Marketplace* market) { Json::Value root; std::ofstream file(filename); Json::StreamWriterBuilder builder; builder["commentStyle"] = "None"; builder["indentation"] = " "; std::unique_ptr writer(builder.newStreamWriter()); for (const auto& seller : market->getSellers()) { Json::Value newEntry; newEntry["uuid"] = seller->getUuidAsString(); newEntry["seller_no"] = seller->getSellerNo(); newEntry["last_name"] = seller->getLastName(); newEntry["first_name"] = seller->getFirstName(); newEntry["num_offered_articles"] = seller->numArticlesOffered(); root["sellers"].append(newEntry); } writer->write(root, &file); } void JsonUtil::importSellers(const std::string& filename, Marketplace* market) { for (auto& seller : market->getSellers()) { seller->setState(Seller::State::DELETE); } market->storeToDb(true); Json::Value jsonValues; std::ifstream file(filename); file >> jsonValues; for (auto val : jsonValues["sellers"]) { auto seller = std::make_unique(); seller->setUuidFromString(val["uuid"].asString()); seller->setSellerNo(val["seller_no"].asInt()); seller->setLastName(val["last_name"].asString()); seller->setFirstName(val["first_name"].asString()); seller->setNumArticlesOffered(val["num_offered_articles"].asInt()); market->getSellers().push_back(std::move(seller)); } market->storeToDb(); } void JsonUtil::exportSales(const std::string& filename, Marketplace* market, int cashPointNo) { Json::Value root; std::ofstream file(filename); Json::StreamWriterBuilder builder; builder["commentStyle"] = "None"; builder["indentation"] = " "; std::unique_ptr writer(builder.newStreamWriter()); root["source_no"] = cashPointNo; for (const auto& sale : market->getSales()) { Json::Value newSale; newSale["uuid"] = sale->getUuidAsString(); newSale["timestamp"] = sale->getTimestamp(); for (const auto& article : sale->getArticles()) { Json::Value newArticle; newArticle["uuid"] = article->getUuidAsString(); newArticle["seller_uuid"] = article->getSeller()->getUuidAsString(); newArticle["desc"] = article->getDescription(); newArticle["price"] = article->getPrice(); // newArticle["source_no"] = article->getSourceNo(); newArticle["article_no"] = article->getArticleNo(); newSale["articles"].append(newArticle); } root["sales"].append(newSale); } writer->write(root, &file); } void JsonUtil::importSales(const std::string& filename, Marketplace* market, int cashPointNo) { Json::Value jsonValues; std::ifstream file(filename); file >> jsonValues; int source_no = jsonValues["source_no"].asInt(); if (source_no == cashPointNo) { throw std::runtime_error("Die Kassen-Nr. der zu imporierenden Daten wird von dieser Kasse " "hier bereits verwendet."); } // TODO: Import sales }