values are now doubles

This commit is contained in:
quentin 2022-09-18 14:18:47 -05:00
parent 40089ad861
commit 089e9115f1
11 changed files with 26 additions and 24 deletions

View File

@ -23,7 +23,7 @@ Account AccountData::createObject() {
std::list<Payment> 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<Earning> 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;
}

View File

@ -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;
}

View File

@ -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;
};

View File

@ -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;
}

View File

@ -34,7 +34,7 @@ std::vector<DateMoney> 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;
}

View File

@ -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) {}

View File

@ -10,7 +10,7 @@
class Earning : public Transaction {
public:
explicit Earning(int value, std::tm date);
explicit Earning(double value, std::tm date);
};

View File

@ -6,7 +6,7 @@
#include <utility>
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;
}

View File

@ -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;
};

View File

@ -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;

View File

@ -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();