/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* Account.class.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: bchanot +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/09 15:55:31 by bchanot #+# #+# */ /* Updated: 2025/07/09 20:42:20 by bchanot ### ########.fr */ /* */ /* ************************************************************************** */ #include "Account.class.hpp" #include #include #include 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;