From f2425f41b2894ddfd8aefd984d57a72b51992e53 Mon Sep 17 00:00:00 2001 From: adityapk00 Date: Sun, 27 Jan 2019 21:14:11 -0800 Subject: [PATCH] Refactor --- src/recurring.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++++ src/recurring.h | 74 ++++------------------------------------------- 2 files changed, 76 insertions(+), 68 deletions(-) diff --git a/src/recurring.cpp b/src/recurring.cpp index e4e3ee3..2f1178e 100644 --- a/src/recurring.cpp +++ b/src/recurring.cpp @@ -15,6 +15,76 @@ QString schedule_desc(Schedule s) { } } + +RecurringPaymentInfo RecurringPaymentInfo::fromJson(QJsonObject j) { + RecurringPaymentInfo r; + r.hashid = j["hash"].toString(); + r.desc = j["desc"].toString(); + r.fromAddr = j["from"].toString(); + r.toAddr = j["to"].toString(); + r.amt = j["amt"].toString().toDouble(); + r.memo = j["memo"].toString(); + r.currency = j["currency"].toString(); + r.schedule = (Schedule)j["schedule"].toInt(); + r.frequency = j["frequency"].toInt(); + r.numPayments = j["numpayments"].toInt(); + r.startDate = QDateTime::fromSecsSinceEpoch(j["startdate"].toString().toLongLong()); + r.completedPayments = j["completed"].toInt(); + + r.history = QList(); + for (auto h : j["history"].toArray()) { + HistoryItem item; + + item.paymentNumber = h.toObject()["paymentnumber"].toInt(); + item.date = QDateTime::fromSecsSinceEpoch(h.toObject()["date"].toString().toLongLong()); + item.txid = h.toObject()["txid"].toString(); + + r.history.append(item); + } + + return r; +} + +void RecurringPaymentInfo::updateHash() { + auto val = getScheduleDescription() + fromAddr + toAddr; + hashid = QString(QCryptographicHash::hash(val.toUtf8(), QCryptographicHash::Sha256).toHex()); +} + +QJsonObject RecurringPaymentInfo::toJson() { + QJsonArray historyJson; + for (auto h : history) { + historyJson.append(QJsonObject{ + {"paymentnumber", h.paymentNumber}, + {"date", QString::number(h.date.toSecsSinceEpoch())}, + {"txid", h.txid} + }); + } + + auto j = QJsonObject{ + {"hash", hashid}, + {"desc", desc}, + {"from", fromAddr}, + {"to", toAddr}, + {"amt", Settings::getDecimalString(amt)}, + {"memo", memo}, + {"currency", currency}, + {"schedule", (int)schedule}, + {"frequency", frequency}, + {"numpayments", numPayments}, + {"startdate", QString::number(startDate.toSecsSinceEpoch())}, + {"completed", completedPayments}, + {"history", historyJson} + }; + + return j; +} + +QString RecurringPaymentInfo::getScheduleDescription() { + return "Pay " % (currency == "USD" ? Settings::getUSDFormat(amt) : Settings::getZECDisplayFormat(amt)) + % " every " % schedule_desc(schedule) % ", starting " % startDate.toString("yyyy-MMM-dd") + % ", for " % QString::number(numPayments) % " payments"; +} + // Returns a new Recurring payment info, created from the Tx. // The caller needs to take ownership of the returned object. RecurringPaymentInfo* Recurring::getNewRecurringFromTx(QWidget* parent, MainWindow* main, Tx tx, RecurringPaymentInfo* rpi) { diff --git a/src/recurring.h b/src/recurring.h index d809404..4eceae2 100644 --- a/src/recurring.h +++ b/src/recurring.h @@ -37,76 +37,14 @@ struct RecurringPaymentInfo { QDateTime date; QString txid; }; + QList history; + + void updateHash(); + QString getScheduleDescription(); + QJsonObject toJson(); - static RecurringPaymentInfo fromJson(QJsonObject j) { - RecurringPaymentInfo r; - r.hashid = j["hash"].toString(); - r.desc = j["desc"].toString(); - r.fromAddr = j["from"].toString(); - r.toAddr = j["to"].toString(); - r.amt = j["amt"].toString().toDouble(); - r.memo = j["memo"].toString(); - r.currency = j["currency"].toString(); - r.schedule = (Schedule)j["schedule"].toInt(); - r.frequency = j["frequency"].toInt(); - r.numPayments = j["numpayments"].toInt(); - r.startDate = QDateTime::fromSecsSinceEpoch(j["startdate"].toString().toLongLong()); - r.completedPayments = j["completed"].toInt(); - - r.history = QList(); - for (auto h : j["history"].toArray()) { - HistoryItem item; - - item.paymentNumber = h.toObject()["paymentnumber"].toInt(); - item.date = QDateTime::fromSecsSinceEpoch(h.toObject()["date"].toString().toLongLong()); - item.txid = h.toObject()["txid"].toString(); - - r.history.append(item); - } - - return r; - } - - void updateHash() { - auto val = getScheduleDescription() + fromAddr + toAddr; - hashid = QString(QCryptographicHash::hash(val.toUtf8(), QCryptographicHash::Sha256).toHex()); - } - - QJsonObject toJson() { - QJsonArray historyJson; - for (auto h : history) { - historyJson.append(QJsonObject{ - {"paymentnumber", h.paymentNumber}, - {"date", QString::number(h.date.toSecsSinceEpoch())}, - {"txid", h.txid} - }); - } - - auto j = QJsonObject{ - {"hash", hashid}, - {"desc", desc}, - {"from", fromAddr}, - {"to", toAddr}, - {"amt", Settings::getDecimalString(amt)}, - {"memo", memo}, - {"currency", currency}, - {"schedule", (int)schedule}, - {"frequency", frequency}, - {"numpayments", numPayments}, - {"startdate", QString::number(startDate.toSecsSinceEpoch())}, - {"completed", completedPayments}, - {"history", historyJson} - }; - - return j; - } - - QString getScheduleDescription() { - return "Pay " % (currency == "USD" ? Settings::getUSDFormat(amt) : Settings::getZECDisplayFormat(amt)) - % " every " % schedule_desc(schedule) % ", starting " % startDate.toString("yyyy-MMM-dd") - % ", for " % QString::number(numPayments) % " payments"; - } + static RecurringPaymentInfo fromJson(QJsonObject j); }; class Recurring