Added Account::getTimeline()
Returns a date sorted list of transactions and earnings.
This commit is contained in:
parent
ad8910253b
commit
5999a45e2b
@ -9,4 +9,5 @@ add_executable(${PROJECT_NAME} src/main.cpp src/main.h
|
||||
src/money/recept.cpp src/money/recept.h
|
||||
src/data/data.tpp src/data/data.h
|
||||
src/data/accountData.cpp src/data/accountData.h
|
||||
src/money/earning.cpp src/money/earning.h)
|
||||
src/money/earning.cpp src/money/earning.h
|
||||
src/data/dateMoney.cpp src/data/dateMoney.h)
|
@ -16,7 +16,7 @@ public:
|
||||
rapidjson::Document document;
|
||||
|
||||
|
||||
Data(std::string file);
|
||||
explicit Data(std::string file);
|
||||
|
||||
virtual T createObject() = 0;
|
||||
|
||||
|
25
src/data/dateMoney.cpp
Normal file
25
src/data/dateMoney.cpp
Normal file
@ -0,0 +1,25 @@
|
||||
//
|
||||
// Created by quentin on 8/12/22.
|
||||
//
|
||||
|
||||
#include "dateMoney.h"
|
||||
|
||||
|
||||
|
||||
bool DateMoney::operator<(const DateMoney &rhs) const {
|
||||
return mktime(date) < mktime(rhs.date);
|
||||
}
|
||||
|
||||
bool DateMoney::operator>(const DateMoney &rhs) const {
|
||||
return rhs < *this;
|
||||
}
|
||||
|
||||
bool DateMoney::operator<=(const DateMoney &rhs) const {
|
||||
return !(rhs < *this);
|
||||
}
|
||||
|
||||
bool DateMoney::operator>=(const DateMoney &rhs) const {
|
||||
return !(*this < rhs);
|
||||
}
|
||||
|
||||
DateMoney::DateMoney(const int *value, tm *date) : value(value), date(date) {}
|
29
src/data/dateMoney.h
Normal file
29
src/data/dateMoney.h
Normal file
@ -0,0 +1,29 @@
|
||||
//
|
||||
// Created by quentin on 8/12/22.
|
||||
//
|
||||
|
||||
#ifndef BUDGET_DATEMONEY_H
|
||||
#define BUDGET_DATEMONEY_H
|
||||
|
||||
|
||||
#include <ctime>
|
||||
|
||||
class DateMoney {
|
||||
public:
|
||||
bool operator<(const DateMoney &rhs) const;
|
||||
|
||||
bool operator>(const DateMoney &rhs) const;
|
||||
|
||||
bool operator<=(const DateMoney &rhs) const;
|
||||
|
||||
bool operator>=(const DateMoney &rhs) const;
|
||||
|
||||
DateMoney(const int *value, tm *date);
|
||||
|
||||
private:
|
||||
const int* value;
|
||||
tm *date;
|
||||
};
|
||||
|
||||
|
||||
#endif //BUDGET_DATEMONEY_H
|
@ -15,3 +15,28 @@ Account::Account() {
|
||||
withdrawable = true;
|
||||
name = "";
|
||||
}
|
||||
|
||||
int Account::getValue() {
|
||||
int total = 0;
|
||||
for (auto &transaction : transactions) {
|
||||
total -= transaction.value;
|
||||
}
|
||||
for (auto &earning : earnings) {
|
||||
total += earning.value;
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
std::vector<DateMoney> Account::getTimeline() {
|
||||
std::vector<DateMoney> timeline;
|
||||
for (auto &transaction : transactions) {
|
||||
timeline.emplace_back(&transaction.value, transaction.getDate());
|
||||
}
|
||||
for (auto &earning : earnings) {
|
||||
timeline.emplace_back(&earning.value, earning.getDate());
|
||||
}
|
||||
std::sort(timeline.begin(), timeline.end());
|
||||
|
||||
return timeline;
|
||||
}
|
||||
|
@ -8,8 +8,10 @@
|
||||
|
||||
#include "transaction.h"
|
||||
#include "earning.h"
|
||||
#include "../data/dateMoney.h"
|
||||
#include <list>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Account {
|
||||
public:
|
||||
@ -18,6 +20,10 @@ public:
|
||||
|
||||
Account();
|
||||
|
||||
int getValue();
|
||||
std::vector<DateMoney> getTimeline();
|
||||
|
||||
|
||||
private:
|
||||
std::list<Transaction> transactions;
|
||||
std::list<Earning> earnings;
|
||||
|
@ -5,3 +5,7 @@
|
||||
#include "earning.h"
|
||||
|
||||
Earning::Earning(const int value, std::tm date) : value(value), date(date) {}
|
||||
|
||||
tm *Earning::getDate() {
|
||||
return &date;
|
||||
}
|
||||
|
@ -8,11 +8,13 @@
|
||||
#include <ctime>
|
||||
|
||||
class Earning {
|
||||
public:
|
||||
explicit Earning(int value, std::tm date);
|
||||
|
||||
public:
|
||||
const int value;
|
||||
|
||||
explicit Earning(int value, std::tm date);
|
||||
tm *getDate();
|
||||
|
||||
private:
|
||||
std::tm date;
|
||||
};
|
||||
|
||||
|
@ -15,6 +15,6 @@ Receipt &Transaction::getReceipt() {
|
||||
return receipt;
|
||||
}
|
||||
|
||||
std::tm &Transaction::getDate() {
|
||||
return date;
|
||||
tm * Transaction::getDate() {
|
||||
return &date;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ public:
|
||||
|
||||
Receipt &getReceipt();
|
||||
|
||||
std::tm &getDate();
|
||||
tm * getDate();
|
||||
|
||||
|
||||
private:
|
||||
|
Loading…
x
Reference in New Issue
Block a user