#pragma once

#include "FileLocation.h"

#define USE_SQL_EXPRESS

#ifdef USE_SQL_EXPRESS
	#define CONNECTION_STRING "Provider=MSOLEDBSQL;Trusted_Connection=yes;Data Source="
	#define MACHINE_DB      "(LocalDb)\\mitechLocalDB;Database=MachineData"
	#define JAM_DB          "(LocalDb)\\mitechLocalDB;Database=JamData"
	#define LOTINFO_DB      "(LocalDb)\\mitechLocalDB;Database=LotData"
	#define SECSGEM_DB      "(LocalDb)\\mitechLocalDB;Database=SecsGemData"
#else
	#define CONNECTION_STRING "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source="
	#define MACHINE_DB      CFileLocation::instance().GetLocation(CFileLocation::MACHINE_DB_FILE)
	#define JAM_DB          CFileLocation::instance().GetLocation(CFileLocation::JAM_DB_FILE)
	#define LOTINFO_DB      CFileLocation::instance().GetLocation(CFileLocation::LOTINFO_DB_FILE)
	#define SECSGEM_DB      CFileLocation::instance().GetLocation(CFileLocation::SECSGEM_DB_FILE)
#endif
// ini files path
#define RUNTIME_INI     CFileLocation::instance().GetLocation(CFileLocation::RUNTIME_INI_FILE)
#define CONFIG_INI      CFileLocation::instance().GetLocation(CFileLocation::CONFIG_INI_FILE)
#define HARDWARE_INI    CFileLocation::instance().GetLocation(CFileLocation::HARDWARE_INI_FILE)
#define GUIDLL_INI      CFileLocation::instance().GetLocation(CFileLocation::GUILDLL_INI_FILE)
#define MACHINE_INI     CFileLocation::instance().GetLocation(CFileLocation::MACHINE_INI_FILE)

// Data log files path
#define LOT_REPORT_PATH "D:\\Machine\\Report\\Lot_"
#define PKG_REPORT_PATH "D:\\Machine\\Report\\Pkg_"
#define MSG_REPORT_PATH "D:\\Machine\\Report\\Msg_"
#define REPORT_PATH     "D:\\Machine\\Report"

#define WAFER_MAP_PATH      "D:\\Machine\\Mapdata"
#define USER_WAFER_MAP_PATH "D:\\Machine\\Mapdata\\UserMap"

#define SECSGEM_WAFER_MAPFILE_PATH  "D:\\MapData\\"

////////////////////////
// interprocess path
////////////////////////
#define IPC_PATH                  "D:\\machine\\interprocess\\"

// root path to store input fbm maps.
#define IPC_FBM_INPUT_PATH        "D:\\machine\\interprocess\\fbm_inmap\\"           
// store location of currently processing map path
#define IPC_FBM_INPUT_IN_PROCESS  "D:\\machine\\interprocess\\fbm_inmap\\inprocess.txt"  
// store location of map for upload
#define IPC_FBM_INPUT_PROCESSED   "D:\\machine\\interprocess\\fbm_inmap\\processed.txt"  
// store location of map converted by ui for new processing
#define IPC_FBM_INPUT_CONVERTED   "D:\\machine\\interprocess\\fbm_inmap\\converted.txt"  

// root path to store output fbm maps. 
#define IPC_FBM_OUTPUT_PATH       "D:\\machine\\interprocess\\fbm_outmap\\"          
// store location of currently processing map path
#define IPC_FBM_OUTPUT_IN_PROCESS "D:\\machine\\interprocess\\fbm_outmap\\inprocess.txt"  
// store location of map for upload
#define IPC_FBM_OUTPUT_PROCESSED  "D:\\machine\\interprocess\\fbm_outmap\\processed.txt"  
// store location of map converted by ui for new processing
#define IPC_FBM_OUTPUT_CONVERTED  "D:\\machine\\interprocess\\fbm_outmap\\converted.txt"  

// cater root path for control to publish configuration
#define IPC_CFG_PATH        "D:\\machine\\interprocess\\cfg\\"
// cater for control to publish run id define in program. detail TBA
#define IPC_CFG_RUNS        "D:\\machine\\interprocess\\cfg\\runs.fbc"       

// for runtime data. eg: running package & recipe info. detail TBA
#define IPC_RT_PATH         "D:\\machine\\interprocess\\rt\\"                  
// for runtime running recipe info
#define IPC_RECIPE          "D:\\machine\\interprocess\\rt\\recipe.fbi"      
// for runtime running package info
#define IPC_PACKAGE         "D:\\machine\\interprocess\\rt\\package.fbi"     

// for runtime publish of machine state light config from db to text json
constexpr char* IPC_MCSTATE_LIGHT = R"(d:\machine\interprocess\rt\McStateLight.json)";

// cater for ui to store misc info if needed
#define IPC_UI_PATH         "D:\\machine\\interprocess\\ui\\"                  
///

#define LOT_INFO_TABLE          "Lot Info"
#define LOT_MESSAGE_TABLE       "Lot Message"
#define LOT_TIME_INFO_TABLE     "Lot Time Info"
#define RECIPE_MANAGEMENT_TABLE "RecipeManagement"

#define END_LOT_TIME_FIELD      "End Lot Time"

#define START_LOT_TIME_FIELD    "Start Lot Time"
#define LOT_START_DATE_TIME     "Lot Start Date Time"

#define RECIPE_NAME_KEYNAME     "Recipe Name"
#define PACKAGE_NAME_KEYNAME    "Package Name"

#define SEMIE10_SECTION_NAME    "SEMIE10"
#define UNIT_CNT_KEYNAME        "Unit Count"

#define SECGEM_RECIPE_EVENT_SECTION_NAME        "SecGem Recipe Event"
#define SECGEM_CREATE_RECIPE_EVENT_KEYNAME      "Create Recipe Name"
#define SECGEM_DEL_RECIPE_EVENT_KEYNAME         "Delete Recipe Name"
#define SECGEM_DEL_RECIPE_EVENT_PKG_KEYNAME     "Delete Recipe Package Name"
#define SECGEM_MODIFIED_RECIPE_EVENT_KEYNAME    "Modified Recipe Name"

#define SECSGEM_SECTION_NAME    "SECSGEM"

