Browse Source

recurring item serialization

recurring
adityapk00 5 years ago
parent
commit
1cb12cfd96
  1. 88
      src/recurring.h

88
src/recurring.h

@ -17,27 +17,91 @@ enum Schedule {
QString schedule_desc(Schedule s); QString schedule_desc(Schedule s);
struct RecurringPaymentInfo { struct RecurringPaymentInfo {
QString hashid; QString hashid;
QString desc; QString desc;
QString fromAddr; QString fromAddr;
QString toAddr; QString toAddr;
double amt; double amt;
QString memo; QString memo;
QString currency; QString currency;
Schedule schedule; Schedule schedule;
int numPayments; int frequency;
int numPayments;
QDateTime startDate; QDateTime startDate;
int completedPayments; int completedPayments;
struct HistoryItem { struct HistoryItem {
int paymentNumber; int paymentNumber;
QDateTime dt; QDateTime date;
QString txid; QString txid;
}; };
QList<HistoryItem> history; QList<HistoryItem> history;
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<HistoryItem>();
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 = QCryptographicHash::hash(val.toUtf8(), QCryptographicHash::Sha256);
}
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() { QString getScheduleDescription() {
return "Pay " % (currency == "USD" ? Settings::getUSDFormat(amt) : Settings::getZECDisplayFormat(amt)) return "Pay " % (currency == "USD" ? Settings::getUSDFormat(amt) : Settings::getZECDisplayFormat(amt))
% " every " % schedule_desc(schedule) % ", starting " % startDate.toString("yyyy-MMM-dd") % " every " % schedule_desc(schedule) % ", starting " % startDate.toString("yyyy-MMM-dd")

Loading…
Cancel
Save