#ifndef CONFIGURATIONFACTORY2_H_
#define CONFIGURATIONFACTORY2_H_

// Author: Steve Talbot

#pragma once

#include "ConfigurationFactory.h"

#include "login_a.h"
#include "pin_a.h"
#include "deposit_a.h"
#include "withdraw_a.h"
#include "balance_a.h"
#include "prompt_for_pin_a.h"
#include "incorrect_id_msg_a.h"
#include "incorrect_pin_msg_a.h"
#include "too_many_attempts_msg_a.h"
#include "display_menu_a.h"
#include "deactivate_msg_a.h"
#include "make_withdraw_a.h"
#include "penalty_a.h"
#include "make_deposit_a.h"
#include "display_balance_a.h"
#include "below_min_balance_msg_a.h"
#include "activate_msg_a.h"
#include "inactive_account_msg_a.h"

#include "login_2.h"
#include "pin_2.h"
#include "deposit_2.h"
#include "withdraw_2.h"
#include "balance_2.h"
#include "prompt_for_pin_2.h"
#include "incorrect_id_msg_2.h"
#include "incorrect_pin_msg_2.h"
#include "too_many_attempts_msg_2.h"
#include "display_menu_2.h"
#include "deactivate_msg_2.h"
#include "make_withdraw_2.h"
#include "penalty_2.h"
#include "make_deposit_2.h"
#include "display_balance_2.h"
#include "below_min_balance_msg_2.h"
#include "activate_msg_2.h"
#include "inactive_account_msg_2.h"

using namespace std;

class ConfigurationFactory2 : public ConfigurationFactory {

public:
	ConfigurationFactory2();
	virtual ~ConfigurationFactory2();

	virtual login_a* makeLogin();

	virtual pin_a* makePin();

	virtual deposit_a* makeDeposit();

	virtual withdraw_a* makeWithdraw();

	virtual balance_a* makeBalance();

	virtual prompt_for_pin_a* makePromptForPin();

	virtual incorrect_id_msg_a* makeIncorrectIdMsg();

	virtual incorrect_pin_msg_a* makeIncorrectPinMsg();

	virtual too_many_attempts_msg_a* makeTooManyAttemptsMsg();

	virtual display_menu_a* makeDisplayMenu();

	virtual deactivate_msg_a* makeDeactivateMsg();

	virtual make_withdraw_a* makeMakeWithdraw();

	virtual penalty_a* makePenalty();

	virtual make_deposit_a* makeMakeDeposit();

	virtual display_balance_a* makeDisplayBalance();

	virtual below_min_balance_msg_a* makeBelowMinBalance();

	virtual activate_msg_a* makeActivateMsg();

	virtual inactive_account_msg_a* makeInactiveAccountMsg();

};

#endif /*CONFIGURATIONFACTORY2_H_*/
