kima2/src/core/jsonutil.cpp

89 lines
2.8 KiB
C++
Raw Normal View History

2018-08-02 11:15:15 +02:00
#include "jsonutil.h"
2018-08-02 12:34:56 +02:00
#include "database.h"
2018-08-02 11:15:15 +02:00
#include <json/json.h>
#include <fstream>
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<Json::StreamWriter> 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();
2018-08-02 12:34:56 +02:00
newEntry["num_offered_articles"] = seller->numArticlesOffered();
2018-08-02 11:15:15 +02:00
root["sellers"].append(newEntry);
}
writer->write(root, &file);
2018-08-02 12:34:56 +02:00
}
void JsonUtil::importSellers(const std::string& filename, Marketplace* market)
{
2018-08-02 15:06:35 +02:00
for (auto& seller : market->getSellers()) {
2018-08-02 12:34:56 +02:00
seller->setState(Seller::State::DELETE);
}
market->storeToDb(true);
2018-08-02 15:06:35 +02:00
2018-08-02 12:34:56 +02:00
Json::Value jsonValues;
std::ifstream file(filename);
file >> jsonValues;
2018-08-02 15:06:35 +02:00
for (auto val : jsonValues["sellers"]) {
2018-08-02 12:34:56 +02:00
auto seller = std::make_unique<Seller>();
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();
2018-08-02 15:06:35 +02:00
}
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<Json::StreamWriter> 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);
2018-08-02 11:15:15 +02:00
}