#include "Application.h"


Application::Application(Console * console)
{
	_console = console;
	_chosenOption = 0;
	_numNumbersReqd = 5;
}

void Application::DisplayMenu()
{
	
	_console->PrintLine("Select an option");
	_console->PrintLine("1. Add numbers");
	_console->PrintLine("2. Change amount of numbers to be entered");
	_console->PrintLine("3. Quit");
}

void Application::ChooseOption()
{
	_chosenOption = ReadNumber("Please choose an option:");
}


int Application::ReadNumber(string prompt)
{
	_console->Print(prompt);
	return _console->ReadInteger();
}

bool Application::ProcessOption()
{
	bool quit = false;


	switch (_chosenOption)
	{
	case 1:
		int total;
		total = GetTotal();
		DisplayResult(total);
		break;
	case 2:
		_numNumbersReqd = ReadNumber("Please enter the number of numbers to be entered:");
		break;
	case 3:
		quit = IsQuitting();
		break;
	default:
		_console->PrintLine("Unknown option value entered... Press Enter to Try Again");
	    getch();
		break;
	}

	return quit;
}

int Application::GetTotal()
{
	int total = 0;
	int index;

	for (index = 0; index < _numNumbersReqd; index++)
	{
		total = total + ReadNumber("Please Enter Number:");
	}

	return total;
}

void Application::DisplayResult(int result)
{
	system("cls"); //CLEAR SCREEN	system("cls"); //CLEAR SCREENs
	_console->PrintLine("###############################################################################");
	_console->PrintLine("###############################################################################");
	_console->PrintLine("##################          " + to_string(result) + "        ##################");
	_console->PrintLine("###############################################################################");
	_console->PrintLine("###############################################################################");
}

bool Application::IsQuitting()
{
	string response;
	bool quit = false;

	_console->Print("Do you really wish to quit (Yes/No)?");

	response = _console->ReadString();

	if (response == "YES" || response == "Y")
	{
		_console->PrintLine("Quitting");
		quit = true;
	}

	return quit;
}
