/* ************************************************************************* */ /* */ /* ::: :::::::: */ /* Account.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/23 16:11:46 by rparodi #+# #+# */ /* Updated: 2024/11/04 15:38:22 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ #include "Account.hpp" #include #include #include int Account::_nbAccounts = 0; int Account::_totalAmount = 0; int Account::_totalNbDeposits = 0; int Account::_totalNbWithdrawals = 0; void Account::_displayTimestamp( void ) { time_t raw_time = time(0); tm *time = localtime(&raw_time); std::cout << "[" << time->tm_year + 1900 << "0" << time->tm_mon + 1 << time->tm_mday << "_"; std::cout << time->tm_hour << time->tm_min << time->tm_sec << "] "; } /// [19920104_091532] index:0;amount:42;created Account::Account( int initial_deposit ) { _accountIndex = _nbAccounts; _amount = initial_deposit; _totalAmount += _amount; _nbDeposits = 0; _nbWithdrawals = 0; _displayTimestamp(); std::cout << "index:" << _accountIndex << ";"; std::cout << "amount:" << _amount << ";"; std::cout << "created" << std::endl; _nbAccounts++; } // index:0;amount:47;closed Account::~Account() { _displayTimestamp(); std::cout << "index:" << _accountIndex << ";"; std::cout << "amount:" << _amount << ";"; std::cout << "closed" << std::endl; _nbAccounts--; } // [19920104_091532] index:1;p_amount:54;deposit:765;amount:819;nb_deposits:1 void Account::makeDeposit(int deposit) { _displayTimestamp(); std::cout << "index:" << _accountIndex << ";"; std::cout << "p_amount:" << _amount << ";"; std::cout << "deposit:" << deposit << ";"; _amount += deposit; _totalAmount += deposit; std::cout << "amount:" << _amount << ";"; _totalNbDeposits++; _nbDeposits++; std::cout << "nb_deposits:" << _nbDeposits << std::endl; } // [19920104_091532] index:1;p_amount:819;withdrawal:34;amount:785;nb_withdrawals:1 bool Account::makeWithdrawal(int withdrawal) { _displayTimestamp(); std::cout << "index:" << _accountIndex << ";"; std::cout << "p_amount:" << _amount << ";"; if (withdrawal > _amount) { std::cout << "withdrawal:refused" << std::endl; return false; } std::cout << "withdrawal:" << withdrawal << ";"; _totalAmount -= withdrawal; _amount -= withdrawal; std::cout << "amount:" << _amount << ";"; _totalNbWithdrawals++; _nbWithdrawals++; std::cout << "nb_withdrawals:" << _nbWithdrawals << std::endl; return true; } int Account::getNbAccounts() { return (_nbAccounts); } int Account::getTotalAmount() { return (Account::_totalAmount); } int Account::getNbDeposits() { return (Account::_totalNbDeposits); } int Account::getNbWithdrawals() { return (Account::_totalNbWithdrawals); } void Account::displayAccountsInfos() { _displayTimestamp(); std::cout << "accounts:" << _nbAccounts << ";total:" << _totalAmount << ";deposits:" << _totalNbDeposits << ";withdrawals:" << _totalNbWithdrawals << std::endl; } //[19920104_091532] index:0;amount:42;deposits:0;withdrawals:0 void Account::displayStatus() const { _displayTimestamp(); std::cout << "index:" << _accountIndex << ";"; std::cout << "amount:" << _amount << ";"; std::cout << "deposits:" << _nbDeposits << ";"; std::cout << "withdrawals:" << _nbWithdrawals << std::endl; }