|
|
@@ -0,0 +1,119 @@
|
|
|
+/* ************************************************************************** */
|
|
|
+/* */
|
|
|
+/* ::: :::::::: */
|
|
|
+/* Account.class.cpp :+: :+: :+: */
|
|
|
+/* +:+ +:+ +:+ */
|
|
|
+/* By: bchanot <bchanot@gmail.fr> +#+ +:+ +#+ */
|
|
|
+/* +#+#+#+#+#+ +#+ */
|
|
|
+/* Created: 2025/07/09 15:55:31 by bchanot #+# #+# */
|
|
|
+/* Updated: 2025/07/09 20:42:20 by bchanot ### ########.fr */
|
|
|
+/* */
|
|
|
+/* ************************************************************************** */
|
|
|
+
|
|
|
+#include "Account.class.hpp"
|
|
|
+#include <iostream>
|
|
|
+#include <iomanip>
|
|
|
+#include <ctime>
|
|
|
+
|
|
|
+Account::Account(int initial_deposit) : _amount(initial_deposit) {
|
|
|
+ Account::_totalAmount += initial_deposit;
|
|
|
+ Account::_displayTimestamp();
|
|
|
+ this->_accountIndex = Account::_nbAccounts;
|
|
|
+ Account::_nbAccounts += 1;
|
|
|
+ std::cout << "index:" << this->_accountIndex << ";";
|
|
|
+ std::cout << "amount:" << this->_amount << ";";
|
|
|
+ std::cout << "created" << std::endl;
|
|
|
+ return ;
|
|
|
+}
|
|
|
+
|
|
|
+Account::~Account(void) {
|
|
|
+ Account::_displayTimestamp();
|
|
|
+ std::cout << "index:" << this->_accountIndex << ";";
|
|
|
+ std::cout << "amount:" << this->_amount << ";";
|
|
|
+ std::cout << "closed" << std::endl;
|
|
|
+ return ;
|
|
|
+}
|
|
|
+
|
|
|
+int Account::getNbAccounts( void ) {
|
|
|
+ return Account::_nbAccounts;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int Account::getTotalAmount( void ) {
|
|
|
+ return Account::_totalAmount;
|
|
|
+}
|
|
|
+
|
|
|
+int Account::getNbDeposits( void ) {
|
|
|
+ return Account::_totalNbDeposits;
|
|
|
+}
|
|
|
+
|
|
|
+int Account::getNbWithdrawals( void ) {
|
|
|
+ return Account::_totalNbWithdrawals;
|
|
|
+}
|
|
|
+
|
|
|
+void Account::displayAccountsInfos( void ) {
|
|
|
+ Account::_displayTimestamp();
|
|
|
+ std::cout << "accounts:" << Account::_nbAccounts << ";";
|
|
|
+ std::cout << "total:" << Account::_totalAmount << ";";
|
|
|
+ std::cout << "deposits:" << Account::_totalNbDeposits << ";";
|
|
|
+ std::cout << "withdrawals:" << Account::_totalNbWithdrawals << ";";
|
|
|
+ std::cout << std::endl;
|
|
|
+}
|
|
|
+
|
|
|
+void Account::makeDeposit( int deposit ) {
|
|
|
+ Account::_displayTimestamp();
|
|
|
+ std::cout << "index:" << this->_accountIndex << ";";
|
|
|
+ std::cout << "p_amount:" << this->_amount << ";";
|
|
|
+ this->_amount += deposit;
|
|
|
+ Account::_totalAmount += deposit;
|
|
|
+ this->_nbDeposits = Account::_totalNbDeposits += 1;
|
|
|
+ std::cout << "deposit:" << deposit << ";";
|
|
|
+ std::cout << "amount:" << this->_amount << ";";
|
|
|
+ std::cout << "nb_deposits:" << this->_nbDeposits << ";";
|
|
|
+ std::cout << std::endl;
|
|
|
+ return ;
|
|
|
+}
|
|
|
+
|
|
|
+bool Account::makeWithdrawal( int withdrawal ) {
|
|
|
+ Account::_displayTimestamp();
|
|
|
+ std::cout << "index:" << this->_accountIndex << ";";
|
|
|
+ std::cout << "p_amount:" << this->_amount << ";";
|
|
|
+ if (this->_amount < withdrawal) {
|
|
|
+ std::cout << "withdrawal:refused" << std::endl;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ this->_amount -= withdrawal;
|
|
|
+ Account::_totalAmount -= withdrawal;
|
|
|
+ this->_nbWithdrawals = Account::_totalNbWithdrawals += 1;
|
|
|
+ std::cout << "withdrawal:" << withdrawal << ";";
|
|
|
+ std::cout << "amount:" << this->_amount << ";";
|
|
|
+ std::cout << "nb_withdrawals:" << this->_nbWithdrawals << ";";
|
|
|
+ std::cout << std::endl;
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+int Account::checkAmount( void ) const {
|
|
|
+ return this->_amount;
|
|
|
+}
|
|
|
+
|
|
|
+void Account::displayStatus( void ) const {
|
|
|
+ Account::_displayTimestamp();
|
|
|
+ std::cout << "index:" << this->_accountIndex << ";";
|
|
|
+ std::cout << "amount:" << this->_amount << ";";
|
|
|
+ std::cout << "deposits:" << this->_nbDeposits << ";";
|
|
|
+ std::cout << "withdrawals:" << this->_nbWithdrawals << ";";
|
|
|
+ std::cout << std::endl;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void Account::_displayTimestamp( void ) {
|
|
|
+ std::time_t now = std::time(nullptr);
|
|
|
+ std::tm* tm_now = std::localtime(&now);
|
|
|
+
|
|
|
+ std::cout << "[" << std::put_time(tm_now, "%Y%m%d_%H%M%S") << "] ";
|
|
|
+}
|
|
|
+
|
|
|
+int Account::_nbAccounts = 0;
|
|
|
+int Account::_totalAmount = 0;
|
|
|
+int Account::_totalNbDeposits = 0;
|
|
|
+int Account::_totalNbWithdrawals = 0;
|