import export nearly finished

This commit is contained in:
Martin Brodbeck 2018-08-05 14:52:34 +02:00
parent de91a804a0
commit 3ba230d9b9
5 changed files with 72 additions and 5 deletions

View file

@ -66,6 +66,9 @@ void JsonUtil::exportSales(const std::string& filename, Marketplace* market, int
root["source_no"] = cashPointNo;
for (const auto& sale : market->getSales()) {
if (sale->getSourceNo() != cashPointNo)
continue;
Json::Value newSale;
newSale["uuid"] = sale->getUuidAsString();
newSale["timestamp"] = sale->getTimestamp();
@ -100,5 +103,33 @@ void JsonUtil::importSales(const std::string& filename, Marketplace* market, int
"hier bereits verwendet.");
}
// TODO: Import sales
market->setSalesToDelete(jsonValues["source_no"].asInt());
market->storeToDb();
for (const auto& valSale : jsonValues["sales"]) {
auto sale = std::make_unique<Sale>();
sale->setUuidFromString(valSale["uuid"].asString());
sale->setSourceNo(jsonValues["source_no"].asInt());
sale->setTimestamp(valSale["timestamp"].asString());
for (const auto& valArticle : valSale["articles"]) {
auto article = std::make_unique<Article>();
article->setUuidFromString(valArticle["uuid"].asString());
article->setSourceNo(jsonValues["source_no"].asInt());
article->setArticleNo(valArticle["article_no"].asInt());
article->setDescription(valArticle["desc"].asString());
article->setPrice(valArticle["price"].asInt());
auto seller = market->findSellerWithUuid(valArticle["seller_uuid"].asString());
if (seller == nullptr) {
throw std::runtime_error(
"Die zu importierenden Daten verweisen auf einen nicht vorhandenen Verkäufer. "
"Die Daten konnten nicht importiert werden.");
// continue;
}
sale->addArticle(article.get());
seller->addArticle(std::move(article));
}
market->getSales().push_back(std::move(sale));
}
market->storeToDb();
}