#ifndef REQUESTSTRINGS_H
#define REQUESTSTRINGS_H

#pragma warning (disable : 4786)

#include "CTEnum.h"
#include <map>

namespace CTService
{

#define key_text std::pair<unsigned,const char *>

// ----- REQUEST NAMES -----

static const unsigned _RequestCount = 46;

static const key_text _requestString[_RequestCount] =
{
      //  key_text(CTWEB_REQUEST_TEST,				"WEB_REQUEST_TEST"),
        key_text(CTWEB_REQUEST_GET_GAMES,			"WEB_REQUEST_GET_GAMES"),
        key_text(CTWEB_REQUEST_GET_SUBSCRIPTIONS,	"WEB_REQUEST_GET_SUBSCRIPTIONS"),
        key_text(CTWEB_REQUEST_GET_CHARACTERS,		"WEB_REQUEST_GET_CHARACTERS"),
        key_text(CTWEB_REQUEST_GET_SOURCE_SERVERS,	"WEB_REQUEST_GET_SOURCE_SERVERS"),
        key_text(CTWEB_REQUEST_GET_DEST_SERVERS,	"WEB_REQUEST_GET_DEST_SERVERS"),
        key_text(CTWEB_REQUEST_VALIDATE_TRANSACTION,"WEB_REQUEST_VALIDATE_TRANSACTION"),
        key_text(CTWEB_REQUEST_VALIDATE_ORDER,		"WEB_REQUEST_VALIDATE_ORDER"),
        key_text(CTWEB_REQUEST_SUBMIT_ORDER,		"WEB_REQUEST_SUBMIT_ORDER"),
        key_text(CTWEB_REQUEST_GET_ORDER_STATUS,	"WEB_REQUEST_GET_ORDER_STATUS"),
        key_text(CTWEB_REQUEST_GET_ORDERS_BY_STATION_ID,	"WEB_REQUEST_GET_ORDERS_BY_STATION_ID"),
        key_text(CTWEB_REQUEST_GET_TRANSACTIONS_BY_ORDER_ID,	"WEB_REQUEST_GET_TRANSACTIONS_BY_ORDER_ID"),
        key_text(CTWEB_REQUEST_CSR_MOVE,			"WEB_REQUEST_CSR_MOVE"),
        key_text(CTWEB_REQUEST_CSR_DELETE,			"WEB_REQUEST_CSR_DELETE"),
        key_text(CTWEB_REQUEST_CSR_RESTORE,			"WEB_REQUEST_CSR_RESTORE"),
        key_text(CTWEB_REQUEST_CSR_TRANSFER_ACCOUNT, "WEB_REQUEST_CSR_TRANSFER_ACCOUNT"),

    //    key_text(CTGAME_REQUEST_TEST,				"GAME_REQUEST_TEST"),
		key_text(CTGAME_REQUEST_CONNECT,			"GAME_REQUEST_CONNECT"),
		key_text(CTGAME_REPLY_TEST,					"GAME_REPLY_TEST"),
		key_text(CTGAME_SERVER_TEST,				"GAME_SERVER_TEST"),
		key_text(CTGAME_SERVER_MOVESTATUS,			"GAME_SERVER_MOVESTATUS"),
		key_text(CTGAME_REPLY_MOVESTATUS,			"GAME_REPLY_MOVESTATUS"),
		key_text(CTGAME_SERVER_VALIDATEMOVE,		"GAME_SERVER_VALIDATEMOVE"),
		key_text(CTGAME_REPLY_VALIDATEMOVE,			"GAME_REPLY_VALIDATEMOVE"),
		key_text(CTGAME_SERVER_MOVE,				"GAME_SERVER_MOVE"),
		key_text(CTGAME_REPLY_MOVE,					"GAME_REPLY_MOVE"),
		key_text(CTGAME_SERVER_DELETE,				"GAME_SERVER_DELETE"),
		key_text(CTGAME_REPLY_DELETE,				"GAME_REPLY_DELETE"),
		key_text(CTGAME_SERVER_RESTORE,				"GAME_SERVER_RESTORE"),
		key_text(CTGAME_REPLY_RESTORE,				"GAME_REPLY_RESTORE"),
		key_text(CTGAME_SERVER_TRANSFER_ACCOUNT,	"GAME_SERVER_TRANSFER_ACCOUNT"),
		key_text(CTGAME_REPLY_TRANSFER_ACCOUNT,		"GAME_REPLY_TRANSFER_ACCOUNT"),
		key_text(CTGAME_SERVER_CHARACTERLIST,		"GAME_SERVER_CHARACTERLIST"),
		key_text(CTGAME_REPLY_CHARACTERLIST,		"GAME_REPLY_CHARACTERLIST"),
		key_text(CTGAME_SERVER_SERVERLIST,			"GAME_SERVER_SERVERLIST"),
		key_text(CTGAME_REPLY_SERVERLIST,			"GAME_REPLY_SERVERLIST"),
		key_text(CTGAME_SERVER_DESTSERVERLIST,		"GAME_SERVER_DESTSERVERLIST"),
		key_text(CTGAME_REPLY_DESTSERVERLIST,		"GAME_REPLY_DESTSERVERLIST"),

		key_text(CTLOGIN_REQUEST_GET_ACCOUNT_STATUS,	"LOGIN_REQUEST_GET_ACCOUNT_STATUS"),
		key_text(CTLOGIN_REQUEST_GET_ACCOUNT_SUBSCRIPTIONS,	"LOGIN_REQUEST_GET_ACCOUNT_SUBSCRIPTIONS"),
		key_text(CTLOGIN_REQUEST_GET_MEMBER_INFO,		"LOGIN_REQUEST_GET_MEMBER_INFO"),

		key_text(CTECOMM_REQUEST_VALIDATE_CARD,					"ECOMM_REQUEST_VALIDATE_CARD"),
		key_text(CTECOMM_REQUEST_GET_PRODUCT,					"ECOMM_REQUEST_GET_PRODUCT"),
		key_text(CTECOMM_REQUEST_GET_PRODUCT_LIST,				"ECOMM_REQUEST_GET_PRODUCT_LIST"),
		key_text(CTECOMM_REQUEST_CALUCULATE_ORDER_AMOUNT,		"ECOMM_REQUEST_CALUCULATE_ORDER_AMOUNT"),
		key_text(CTECOMM_REQUEST_GET_PRODUCTS_BY_GAME_AND_TYPE,	"ECOMM_REQUEST_GET_PRODUCTS_BY_GAME_AND_TYPE"),
		key_text(CTECOMM_REQUEST_PREAUTH_ORDER,					"ECOMM_REQUEST_PREAUTH_ORDER"),
		key_text(CTECOMM_REQUEST_DEPOSIT_CREDIT_CARD,			"ECOMM_REQUEST_DEPOSIT_CREDIT_CARD"),
	
};
static std::map<unsigned,const char *> RequestString((const std::map<unsigned,const char *>::value_type *)&_requestString[0],(const std::map<unsigned,const char *>::value_type *)&_requestString[_RequestCount]);


// ----- RESULT CODE NAMES -----

static const unsigned _ResultCount = 33;
static const key_text _resultString[_ResultCount] =
{
        key_text(CT_RESULT_SUCCESS,									"SUCCESS"),
        key_text(CT_RESULT_TIMEOUT,									"TIMEOUT"),
		key_text(CT_RESULT_FAILURE,									"FAILURE"),
		key_text(CT_RESULT_NO_TRANS_IN_ORDER,						"NO TRANSACTIONS IN ORDER"),
		key_text(CT_RESULT_ORDER_FOR_DIFFERENT_GAMES,				"NOT ALL TRANSACTIONS IN ORDER HAVE SAME GAMECODE"),
		key_text(CT_RESULT_ORDER_FOR_DIFFERENT_USERS,				"NOT ALL TRANSACTIONS IN ORDER ARE FOR SAME SOURCE UID"),
		key_text(CT_RESULT_MULTI_TRANS_FOR_CHARACTER,				"MULTIPLE TRANSACTIONS EXIST FOR SAME CHARACTER IN A SINGLE ORDER"),
		key_text(CT_RESULT_1OR_MORE_TRANSACTIONS_FAILED,			"ONE OR MORE TRANSACTIONS IN ORDER FAILED"),
		key_text(CT_RESULT_DEST_STATIONNAME_PASSWORD_INVALID,		"INVALID DEST STATIONNAME/PASSWORD COMBO"),
		key_text(CT_RESULT_SOURCE_STATION_ACCOUNT_NOT_ACTIVE,		"SOURCE STATION ACCOUNT NOT ACTIVE"),
		key_text(CT_RESULT_DEST_STATION_ACCOUNT_NOT_ACTIVE,			"DEST STATION ACCOUNT NOT ACTIVE"),
		key_text(CT_RESULT_SOURCE_UID_INVALID,						"SOURCE UID INVALID"),
		key_text(CT_RESULT_INVALID_UID,								"INVALID UID (Source or Dest)"),
		key_text(CT_RESULT_NOT_SAME_FIRST_NAME_ON_STATION_ACCOUNTS,	"SAME FIRST NAME NOT ON BOTH STATION ACCOUNTS"),
		key_text(CT_RESULT_NOT_SAME_LAST_NAME_ON_STATION_ACCOUNTS,	"SAME LAST NAME NOT ON BOTH STATION ACCOUNTS"),
		key_text(CT_RESULT_NOT_SAME_EMAIL_ON_STATION_ACCOUNTS,		"SAME EMAIL NAME NOT ON BOTH STATION ACCOUNTS"),
		key_text(CT_RESULT_TRANSFER_TO_SAME_ACCOUNT,				"ATTEMPT TO TRANSFER TO SAME STATION ACCOUNT"),
		key_text(CT_RESULT_ALL_REQUIRED_TRANSACTION_INFO_NOT_PROVIDED,"REQUIRED TRANSACTION INFORMATION PASSED IN IS MISSING"),
		key_text(CT_RESULT_WEB_INFO_DOES_NOT_MATCH_STATION_INFO,	"INFORMATION PROVIDED DOES NOT MATCH STATION ACCOUNT INFO"),
		key_text(CT_RESULT_SOURCE_SUBSCRIPTION_STATUS_NOT_ALLOWED,	"CURRENT SOURCE SUBSCRIPTION STATUS IS INVALID FOR THIS TRANSACTION"),
		key_text(CT_RESULT_DEST_SUBSCRIPTION_STATUS_NOT_ALLOWED,	"CURRENT DEST SUBSCRIPTION STATUS IS INVALID FOR THIS TRANSACTION"),
		key_text(CT_RESULT_BAD_CC_INFO,								"ECOMM RETURNED FAIL ON CUSTOMER/CC INFO"),
		key_text(CT_RESULT_ZIP_FAILED_AVS,							"ECOMM RETURNED ZIP_FAILED_AVS"),
		key_text(CT_RESULT_HARD_DECLINE_ECOMM,						"ECOMM RETURNED HARD DECLINE"),
		key_text(CT_RESULT_HARD_DECLINE_GAME,						"GAME RETURNED HARD DECLINE"),
		key_text(CT_RESULT_SOFT_DECLINE_ECOMM,						"ECOMM RETURNED SOFT DECLINE"),
		key_text(CT_RESULT_SOFT_DECLINE_GAME,						"GAME RETURNED SOFT DECLINE"),
		key_text(CT_RESULT_OTHER_ECOMM_ERROR,						"ECOMM RETURNED OTHER ERROR"),
		key_text(CT_RESULT_INVALID_STOREFRONT,						"ECOMM RETURNED INVALID STOREFRONT"),
		key_text(CT_RESULT_ILLEGAL_TRANSACTION_REQUESTED_FOR_GAME,	"TRANSACTION REQUESTED ACTION NOT SUPPORTED BY GAME"),
		key_text(CT_RESULT_ILLEGAL_GAME_CODE,						"ILLEGAL GAME CODE"),
		key_text(CT_RESULT_UPDATE_ORDER_PRICE_FAILED_TWICE,			"FAILED TO UPDATE ORDER PRICE AND STATUS IN DB, ORDER NOT BEING PROCESS"),
		key_text(CT_RESULT_TRANSACTION_DOES_NOT_DO_ANYTHING,		"TRANSACTION DOES NOT DO ANYTHING"),
		
		
		
		// REMEMBER TO INCREMENT THE _ResultCount ABOVE
};

static std::map<unsigned,const char *> ResultString((const std::map<unsigned,const char *>::value_type *)&_resultString[0],(const std::map<unsigned,const char *>::value_type *)&_resultString[_ResultCount]);

static const unsigned _ResourceCount = 10;
static const key_text _ResourceString[_ResourceCount] =
{
        key_text(CTGAMEAPI_RESOURCE_TEST,			"GAME_RESOURCE_TEST"),
		key_text(CTGAMEAPI_RESOURCE_MOVESTATUS,		"GAME_RESOURCE_MOVESTATUS"),
		key_text(CTGAMEAPI_RESOURCE_VALIDATEMOVE,	"GAME_RESOURCE_VALIDATEMOVE"),
		key_text(CTGAMEAPI_RESOURCE_MOVE,			"GAME_RESOURCE_MOVE"),
		key_text(CTGAMEAPI_RESOURCE_CHARACTERLIST,	"GAME_RESOURCE_CHARACTERLIST"),
		key_text(CTGAMEAPI_RESOURCE_SERVERLIST,		"GAME_RESOURCE_SERVERLIST"),
		key_text(CTGAMEAPI_RESOURCE_DESTSERVERLIST,	"GAME_RESOURCE_DESTSERVERLIST"),
		key_text(CTGAMEAPI_RESOURCE_DELETE,			"GAME_RESOURCE_DELETE"),
		key_text(CTGAMEAPI_RESOURCE_RESTORE,		"GAME_RESOURCE_RESTORE"),
		key_text(CTGAMEAPI_RESOURCE_TRANSFER_ACCOUNT, "GAME_RESOURCE_TRANSFER_ACCOUNT"),
};
static std::map<unsigned,const char *> ResourceString((const std::map<unsigned,const char *>::value_type *)&_ResourceString[0],(const std::map<unsigned,const char *>::value_type *)&_ResourceString[_ResourceCount]);
//------------------------------------------------------------------------------------------------

}; // namespace

#endif 
