#ifndef OVERDRAWN_H_
#define OVERDRAWN_H_

// Author: Steve Talbot

#pragma once

#include "State.h"

using namespace std;

class Overdrawn : public State {

public:
	Overdrawn();
	virtual ~Overdrawn();

	virtual bool logout( int& nextStateId_ );
	virtual bool withdraw(  bool isLessThanMinBalance_, int& nextStateId_ );
	virtual bool deposit( bool isLessThanMinBalance_, int& nextStateId_ );
	virtual bool balance();
	virtual bool deactivate( bool isCorrectPin_, int& nextStateId_ );
	virtual bool correct_pin( int& nextStateId_ );
	virtual bool incorrect_pin();
	virtual bool sum_less_than_min_balance();
	virtual bool sum_more_or_equal_to_min_balance( int& nextStateId_ );

	// these methods have empty implementation,
	// since they are not used in the "Overdrawn" state ..
	// these are only necessary if the parent class defines these
	// methods as "abstract" (i.e.: pure virtual) methods ..
/*
	virtual bool correct_login( int& nextStateId_ );										// Idle();
	virtual bool incorrect_login();															// Idle();

	virtual bool correct_pin( bool isAboveMinBalance_, int& nextStateId_ );					// Inactive();
	virtual bool correct_pin( bool isAboveMinBalance_, bool isActive_, int& nextStateId_ );	// CheckPin();

	virtual bool incorrect_pin( bool attemptsRemain_, int& nextStateId_ );					// CheckPin();

	virtual bool attempts_remain();															// CheckPin();
	virtual bool too_many_attempts(int& nextStateId_);										// CheckPin();

	virtual bool active(bool isAboveMinBalance_, int& nextStateId_);						// CheckPin();
	virtual bool inactive(int& nextStateId_);												// CheckPin();

	virtual bool above_min_balance(int& nextStateId_ );										// CheckPin(); Inactive();
	virtual bool below_min_balance(int& nextStateId_ );										// CheckPin(); Inactive();

	virtual bool activate( bool isPinCorrect_, bool isAboveMinBalance_, int& nextStateId );	// Inactive();

	virtual bool diff_more_or_equal_to_min_balance();										// Ready();
	virtual bool diff_less_than_min_balance( int& nextStateId_ );							// Ready();
*/

};

#endif /*OVERDRAWN_H_*/
