From 089e9115f1e1da9eaca4ab7f6597cf4607220f98 Mon Sep 17 00:00:00 2001 From: quentin Date: Sun, 18 Sep 2022 14:18:47 -0500 Subject: [PATCH] values are now doubles --- src/data/accountData.cpp | 8 ++++---- src/data/dateMoney.cpp | 4 ++-- src/data/dateMoney.h | 6 +++--- src/main.cpp | 10 ++++++---- src/money/account.cpp | 2 +- src/money/earning.cpp | 2 +- src/money/earning.h | 2 +- src/money/payment.cpp | 4 ++-- src/money/payment.h | 6 +++--- src/money/transaction.cpp | 2 +- src/money/transaction.h | 4 ++-- 11 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/data/accountData.cpp b/src/data/accountData.cpp index 28659e3..890d2c3 100644 --- a/src/data/accountData.cpp +++ b/src/data/accountData.cpp @@ -23,7 +23,7 @@ Account AccountData::createObject() { std::list payments; for (auto &domPayment : document["payments"].GetArray()) { Receipt receipt(domPayment["receipt"]["file"].GetString()); - int value = domPayment["value"].GetInt(); + double value = domPayment["value"].GetDouble(); std::time_t date = domPayment["date"].GetInt64(); std::tm tmTime{}; std::memcpy(&tmTime, std::localtime(&date), sizeof(struct tm)); @@ -33,7 +33,7 @@ Account AccountData::createObject() { std::list earnings; for (auto &domEarning : document["earnings"].GetArray()) { - int value = domEarning["value"].GetInt(); + double value = domEarning["value"].GetDouble(); std::time_t date = domEarning["date"].GetInt64(); std::tm tmTime{}; std::memcpy(&tmTime, std::localtime(&date), sizeof(struct tm)); @@ -73,14 +73,14 @@ bool AccountData::isJsonCorrect() { if (!(domPayment.IsObject() && domPayment.HasMember("receipt") && domPayment["receipt"].IsObject() && domPayment["receipt"].HasMember("file") && domPayment["receipt"]["file"].IsString() && - domPayment.HasMember("value") && domPayment["value"].IsInt() && + domPayment.HasMember("value") && domPayment["value"].IsDouble() && domPayment.HasMember("date") && domPayment["date"].IsInt64())) { return false; } } for (auto &domEarning : document["earnings"].GetArray()) { if (!(domEarning.IsObject() && - domEarning.HasMember("value") && domEarning["value"].IsInt() && + domEarning.HasMember("value") && domEarning["value"].IsDouble() && domEarning.HasMember("date") && domEarning["date"].IsInt64())) { return false; } diff --git a/src/data/dateMoney.cpp b/src/data/dateMoney.cpp index 76dc855..479e06b 100644 --- a/src/data/dateMoney.cpp +++ b/src/data/dateMoney.cpp @@ -5,7 +5,7 @@ #include "dateMoney.h" -DateMoney::DateMoney(const int *value, tm *date) : value(value), date(date) {} +DateMoney::DateMoney(const double *value, tm *date) : value(value), date(date) {} bool DateMoney::operator<(const DateMoney &rhs) const { return mktime(date) < mktime(rhs.date); @@ -29,7 +29,7 @@ std::ostream &operator<<(std::ostream &os, const DateMoney &money) { return os; } -const int *DateMoney::getValue() const { +const double *DateMoney::getValue() const { return value; } diff --git a/src/data/dateMoney.h b/src/data/dateMoney.h index bf07bdf..1738127 100644 --- a/src/data/dateMoney.h +++ b/src/data/dateMoney.h @@ -11,9 +11,9 @@ class DateMoney { public: - DateMoney(const int *value, tm *date); + DateMoney(const double *value, tm *date); - [[nodiscard]] const int *getValue() const; + [[nodiscard]] const double *getValue() const; [[nodiscard]] tm *getDate() const; @@ -28,7 +28,7 @@ public: friend std::ostream &operator<<(std::ostream &os, const DateMoney &money); private: - const int *value; + const double *value; tm *date; }; diff --git a/src/main.cpp b/src/main.cpp index 2642a69..94ae7a7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -77,15 +77,17 @@ int main(int argc, char *argv[]) { printf("Account value: %d\n", value); printf("Last 10 transactions:\n"); for (int i = 0; i < timeline.size() && i < 10; i++) { - const int *amount = timeline[i].getValue(); + const double *amount = timeline[i].getValue(); const tm *date = timeline[i].getDate(); if (*amount <= 0) { - printf("Value: \033[31m%d\033[0m, ", *amount); + // Red + printf("Value: \033[31m%.2f\033[0m, ", *amount); } else { - printf("Value: \033[32m%d\033[0m, ", *amount); + // Green + printf("Value: \033[32m%.2f\033[0m, ", *amount); } - printf("Date: %d/%d/%d ", date->tm_mon+1, date->tm_mday, date->tm_year+1900); + printf("Date: %d/%d/%d\n", date->tm_mon+1, date->tm_mday, date->tm_year+1900); } std::cout << std::endl; } diff --git a/src/money/account.cpp b/src/money/account.cpp index 1b0e28f..eed8726 100644 --- a/src/money/account.cpp +++ b/src/money/account.cpp @@ -34,7 +34,7 @@ std::vector Account::getTimeline() { for (auto &earning : earnings) { timeline.emplace_back(&earning.value, earning.getDate()); } - std::sort(timeline.begin(), timeline.end()); + std::sort(timeline.begin(), timeline.end(), std::greater<>()); return timeline; } diff --git a/src/money/earning.cpp b/src/money/earning.cpp index df10dd8..16b56f8 100644 --- a/src/money/earning.cpp +++ b/src/money/earning.cpp @@ -4,4 +4,4 @@ #include "earning.h" -Earning::Earning(const int value, std::tm date) : Transaction(value, date) {} +Earning::Earning(const double value, std::tm date) : Transaction(value, date) {} diff --git a/src/money/earning.h b/src/money/earning.h index d8bfca2..6c8ed07 100644 --- a/src/money/earning.h +++ b/src/money/earning.h @@ -10,7 +10,7 @@ class Earning : public Transaction { public: - explicit Earning(int value, std::tm date); + explicit Earning(double value, std::tm date); }; diff --git a/src/money/payment.cpp b/src/money/payment.cpp index cf84ead..a012659 100644 --- a/src/money/payment.cpp +++ b/src/money/payment.cpp @@ -6,7 +6,7 @@ #include -Payment::Payment(const int value, Receipt receipt, std::tm date) : Transaction(value, date), receipt(std::move(receipt)) { +Payment::Payment(const double value, Receipt receipt, std::tm date) : Transaction(value, date), receipt(std::move(receipt)) { negativeValue = -value; } @@ -14,6 +14,6 @@ Receipt &Payment::getReceipt() { return receipt; } -const int *Payment::getValue() { +const double *Payment::getValue() { return &negativeValue; } diff --git a/src/money/payment.h b/src/money/payment.h index 677675d..f21080a 100644 --- a/src/money/payment.h +++ b/src/money/payment.h @@ -11,16 +11,16 @@ class Payment : public Transaction { public: - Payment(int value, Receipt receipt, std::tm date); + Payment(double value, Receipt receipt, std::tm date); Receipt &getReceipt(); - const int *getValue(); + const double *getValue(); private: Receipt receipt; - int negativeValue; + double negativeValue; }; diff --git a/src/money/transaction.cpp b/src/money/transaction.cpp index a8768be..de461bc 100644 --- a/src/money/transaction.cpp +++ b/src/money/transaction.cpp @@ -4,7 +4,7 @@ #include "transaction.h" -Transaction::Transaction(const int value, const tm &date) : value(value), date(date) {} +Transaction::Transaction(const double value, const tm &date) : value(value), date(date) {} tm *Transaction::getDate() { return &date; diff --git a/src/money/transaction.h b/src/money/transaction.h index 99a3fd2..9064adf 100644 --- a/src/money/transaction.h +++ b/src/money/transaction.h @@ -9,9 +9,9 @@ class Transaction { public: - Transaction(int value, const tm &date); + Transaction(double value, const tm &date); - const int value; + const double value; tm *getDate();