Transactions and Earning now store tm dates.

This commit is contained in:
quentin 2022-08-12 16:54:11 -05:00
parent 04765e1992
commit c9865dba8c
6 changed files with 33 additions and 12 deletions

View File

@ -19,13 +19,21 @@ Account AccountData::createObject() {
for (auto &domTransaction : document["transactions"].GetArray()) {
Receipt receipt(domTransaction["receipt"]["file"].GetString());
int value = domTransaction["value"].GetInt();
std::time_t date = domTransaction["date"].GetInt64();
std::tm tmTime{};
std::memcpy(&tmTime, std::localtime(&date), sizeof(struct tm));
transactions.emplace_back(value, receipt);
transactions.emplace_back(value, receipt, tmTime);
}
std::list<Earning> earnings;
for (auto &domEarning : document["earnings"].GetArray()) {
earnings.emplace_back(domEarning["value"].GetInt());
int value = domEarning["value"].GetInt();
std::time_t date = domEarning["date"].GetInt64();
std::tm tmTime{};
std::memcpy(&tmTime, std::localtime(&date), sizeof(struct tm));
earnings.emplace_back(value, tmTime);
}
return Account(transactions, earnings, withdrawable, name);
@ -61,13 +69,15 @@ bool AccountData::isJsonCorrect() {
if (!(domTransaction.IsObject() &&
domTransaction.HasMember("receipt") && domTransaction["receipt"].IsObject() &&
domTransaction["receipt"].HasMember("file") && domTransaction["receipt"]["file"].IsString() &&
domTransaction.HasMember("value") && domTransaction["value"].IsInt())) {
domTransaction.HasMember("value") && domTransaction["value"].IsInt() &&
domTransaction.HasMember("date") && domTransaction["date"].IsInt64())) {
return false;
}
}
for (auto &domEarning : document["earnings"].GetArray()) {
if (!(domEarning.IsObject() &&
domEarning.HasMember("value") && domEarning["value"].IsInt())) {
domEarning.HasMember("value") && domEarning["value"].IsInt() &&
domEarning.HasMember("date") && domEarning["date"].IsInt64())) {
return false;
}
}

View File

@ -18,6 +18,7 @@ void createRequiredFolders() {
std::filesystem::create_directory(homeDirectory + "/.config/budget/");
std::filesystem::create_directories(homeDirectory + "/.local/share/budget");
std::filesystem::create_directories(homeDirectory + "/.local/share/budget/accounts");
std::filesystem::create_directories(homeDirectory + "/.local/share/budget/receipts");
}
int main() {

View File

@ -4,4 +4,4 @@
#include "earning.h"
Earning::Earning(const int value) : value(value) {}
Earning::Earning(const int value, std::tm date) : value(value),date(date) {}

View File

@ -5,13 +5,15 @@
#ifndef BUDGET_EARNING_H
#define BUDGET_EARNING_H
#include <ctime>
class Earning {
public:
explicit Earning(int value);
explicit Earning(int value, std::tm date);
public:
const int value;
std::tm date;
};

View File

@ -6,8 +6,14 @@
#include <utility>
Transaction::Transaction(const int value, Receipt receipt, std::tm date) : value(value), receipt(std::move(receipt)), date(date) {
}
Receipt &Transaction::getReceipt() {
return receipt;
}
Transaction::Transaction(const int value, Receipt receipt) : value(value), receipt(std::move(receipt)) {}
std::tm &Transaction::getDate() {
return date;
}

View File

@ -6,19 +6,21 @@
#define BUDGET_TRANSACTION_H
#include <ctime>
#include "recept.h"
class Transaction {
public:
Transaction(int value, Receipt receipt);
Receipt &getReceipt();
public:
const int value;
Transaction(int value, Receipt receipt, std::tm date);
Receipt &getReceipt();
std::tm &getDate();
private:
Receipt receipt;
std::tm date;
};