#include "State.h"

// Author: Steve Talbot

State:: State(){

	_id = -1;

	_OP = NULL;

	_stateIds = new StateIds();

}

State:: ~State(){
}


int State:: getID(){

	return _id;

}

void State:: setID( int id_ ){

	_id = id_;

}

string State:: getDescription(){

	return _description;

}

void State:: setDescription( string desciption_ ){

	_description = desciption_;

}

OutputProcessor* State:: getOutputProcessor(){

	return _OP;

}

void State:: setOutputProcessor( OutputProcessor* OP_ ){

	_OP = OP_;

}

// NOTE: I commented out these "cout" statements, as they were primarily used for debugging.
//		 However, they could be used as output to the user that the operation is not allowed
//		 in the "_currentState" in which it is called ..

bool State:: correct_login( int& nextStateId_ ){ /*cout << "State:: correct_login() .." << endl << endl;*/ return false; }
bool State:: incorrect_login(){ /*cout << "State:: incorrect_login() .." << endl << endl;*/ return false; }
bool State:: logout( int& nextStateId_ ){ /*cout << "State:: logout() .." << endl << endl;*/ return false; }

bool State:: correct_pin( int& nextStateId_ ){ /*cout << "State:: correct_pin( int& nextStateId_ ) .." << endl << endl;*/ return false; }
bool State:: correct_pin( bool isAboveMinBalance_, int& nextStateId_ ){ /*cout << "State:: correct_pin( bool isAboveMinBalance_, int& nextStateId_ ) .." << endl << endl;*/ return false; }
bool State:: correct_pin( bool isAboveMinBalance_, bool isActive_, int& nextStateId_ ){ /*cout << "State:: correct_pin( bool isAboveMinBalance_, bool isActive_, int& nextStateId_ ) .." << endl << endl;*/ return false; }

bool State:: incorrect_pin(){ /*cout << "State:: incorrect_pin() .." << endl << endl;*/ return false; }
bool State:: incorrect_pin( bool attemptsRemain_, int& nextStateId_ ){ /*cout << "State:: incorrect_pin() .." << endl << endl;*/ return false; }

bool State:: attempts_remain(){ /*cout << "State:: attempts_remain() .." << endl << endl;*/ return false; }
bool State:: too_many_attempts(int& nextStateId_){ /*cout << "State:: too_many_attempts() .." << endl << endl;*/ return false; }

bool State:: active(bool isAboveMinBalance_, int& nextStateId_){ /*cout << "State:: active() .." << endl << endl;*/ return false; }
bool State:: inactive(int& nextStateId_){ /*cout << "State:: inactive() .." << endl << endl;*/ return false; }

bool State:: above_min_balance(int& nextStateId_){ /*cout << "State:: above_min_balance() .." << endl << endl;*/ return false; }
bool State:: below_min_balance(int& nextStateId_){ /*cout << "State:: below_min_balance() .." << endl << endl;*/ return false; }

bool State:: activate( bool isPinCorrect_, bool isAboveMinBalance_, int& nextStateId ){ /*cout << "State:: activate() .." << endl << endl;*/ return false; }
bool State:: deactivate( bool isPinCorrect_, int& nextStateId_ ){ /*cout << "State:: deactivate() .." << endl << endl;*/ return false; }

bool State:: balance(){ /*cout << "State:: balance() .." << endl << endl;*/ return false; }
bool State:: withdraw( bool isLessThanMinBalance_, int& nextStateId_ ){ /*cout << "State:: withdraw() .." << endl << endl;*/ return false; }
bool State:: deposit( bool isLessThanMinBalance_, int& nextStateId_ ){ /*cout << "State:: deposit() .." << endl << endl;*/ return false; }

bool State:: diff_more_or_equal_to_min_balance(){ /*cout << "State:: diff_more_or_equal_to_min_balance() .." << endl << endl;*/ return false; }
bool State:: diff_less_than_min_balance(int& nextStateId_){ /*cout << "State:: diff_less_than_min_balance() .." << endl << endl;*/ return false; }

bool State:: sum_more_or_equal_to_min_balance( int& nextStateId_ ){ /*cout << "State:: sum_more_or_equal_to_min_balance() .." << endl << endl;*/ return false; }
bool State:: sum_less_than_min_balance(){ /*cout << "State:: sum_less_than_min_balance() .." << endl << endl;*/ return false; }
