Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
641 lines
16 KiB
C++
641 lines
16 KiB
C++
// AuthDBManagerDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "AuthDBManager.h"
|
|
#include "AuthDBManagerDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CAboutDlg dialog used for App About
|
|
|
|
class CAboutDlg : public CDialog
|
|
{
|
|
public:
|
|
CAboutDlg();
|
|
|
|
// Dialog Data
|
|
//{{AFX_DATA(CAboutDlg)
|
|
enum { IDD = IDD_ABOUTBOX };
|
|
CListBox m_PlugList;
|
|
CString m_LastUpdate;
|
|
CString m_Creater;
|
|
//}}AFX_DATA
|
|
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CAboutDlg)
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
//}}AFX_VIRTUAL
|
|
|
|
// Implementation
|
|
protected:
|
|
//{{AFX_MSG(CAboutDlg)
|
|
virtual BOOL OnInitDialog();
|
|
afx_msg void OnSelchangePluginList();
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CAboutDlg)
|
|
m_LastUpdate = _T("");
|
|
m_Creater = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CAboutDlg)
|
|
DDX_Control(pDX, ID_PLUGIN_LIST, m_PlugList);
|
|
DDX_Text(pDX, ID_LASTUPDATE, m_LastUpdate);
|
|
DDX_Text(pDX, ID_CREATER, m_Creater);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BOOL CAboutDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
|
|
CString PlugInfoS;
|
|
|
|
if(pAppWnd->m_PlugInInfo.PlugInfo)
|
|
{
|
|
PlugInfoS.Format("%s %s", pAppWnd->m_PlugInInfo.PlugInName, pAppWnd->m_PlugInInfo.PlugInVer);
|
|
|
|
m_PlugList.AddString(PlugInfoS);
|
|
}
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CAboutDlg::OnSelchangePluginList()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
|
|
|
|
int Sel;
|
|
|
|
Sel = m_PlugList.GetCurSel();
|
|
if(Sel == 0)
|
|
{
|
|
m_Creater = pAppWnd->m_PlugInInfo.PlugInCreator.CreaterName;
|
|
m_LastUpdate = pAppWnd->m_PlugInInfo.PlugInLastUpdate;
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CAboutDlg)
|
|
ON_LBN_SELCHANGE(ID_PLUGIN_LIST, OnSelchangePluginList)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CAuthDBManagerDlg dialog
|
|
|
|
CAuthDBManagerDlg::CAuthDBManagerDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CAuthDBManagerDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CAuthDBManagerDlg)
|
|
m_ErrorLog = _T("");
|
|
m_SelectedCount = _T("");
|
|
m_SelectedRow = _T("");
|
|
m_SelectedUID = _T("");
|
|
m_SelectedID = _T("");
|
|
m_TotalRow = _T("");
|
|
m_Address = _T("");
|
|
m_Birth = _T("");
|
|
m_Email = _T("");
|
|
m_ID = _T("");
|
|
m_IDNumber = _T("");
|
|
m_Job = _T("");
|
|
m_Mobile = _T("");
|
|
m_Name = _T("");
|
|
m_Password = _T("");
|
|
m_Phone = _T("");
|
|
m_ZipCode = _T("");
|
|
//}}AFX_DATA_INIT
|
|
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
|
|
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
|
}
|
|
|
|
void CAuthDBManagerDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CAuthDBManagerDlg)
|
|
DDX_Control(pDX, ID_SEX, m_Sex);
|
|
DDX_Control(pDX, ID_CHAR_LIST, m_UserList);
|
|
DDX_Control(pDX, ID_QEURY_LED, m_QueryLed);
|
|
DDX_Control(pDX, ID_CONNECTION_LED, m_ConnectionLed);
|
|
DDX_Text(pDX, ID_ERROR_LOG, m_ErrorLog);
|
|
DDX_Text(pDX, ID_SELECTED_COUNT, m_SelectedCount);
|
|
DDX_Text(pDX, ID_SELECTED_ROW, m_SelectedRow);
|
|
DDX_Text(pDX, ID_SELECTED_UID, m_SelectedUID);
|
|
DDX_Text(pDX, ID_SELECTED_ID, m_SelectedID);
|
|
DDX_Text(pDX, ID_TOTAL_ROW, m_TotalRow);
|
|
DDX_Text(pDX, ID_ADDRESS, m_Address);
|
|
DDX_Text(pDX, ID_BIRTH, m_Birth);
|
|
DDX_Text(pDX, ID_EMAIL, m_Email);
|
|
DDX_Text(pDX, ID_ID, m_ID);
|
|
DDX_Text(pDX, ID_IDNUMBER, m_IDNumber);
|
|
DDX_Text(pDX, ID_JOB, m_Job);
|
|
DDX_Text(pDX, ID_MOBILE, m_Mobile);
|
|
DDX_Text(pDX, ID_NAME, m_Name);
|
|
DDX_Text(pDX, ID_PASSWORD, m_Password);
|
|
DDX_Text(pDX, ID_PHONE, m_Phone);
|
|
DDX_Text(pDX, ID_ZIPCODE, m_ZipCode);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CAuthDBManagerDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CAuthDBManagerDlg)
|
|
ON_WM_SYSCOMMAND()
|
|
ON_NOTIFY(LVN_ENDLABELEDIT, ID_USER_LIST, OnEndlabeleditUserList)
|
|
ON_WM_PAINT()
|
|
ON_WM_QUERYDRAGICON()
|
|
ON_COMMAND(ID_ABOUT, OnAbout)
|
|
ON_COMMAND(ID_CONNECT, OnConnect)
|
|
ON_COMMAND(ID_DISCONNECT, OnDisconnect)
|
|
ON_NOTIFY(NM_CLICK, ID_USER_LIST, OnClickUserList)
|
|
ON_COMMAND(ID_ADD_USER, OnAddUser)
|
|
ON_COMMAND(ID_DELETE_USER, OnDeleteUser)
|
|
ON_COMMAND(ID_INIT_LOGINTIME, OnInitLogintime)
|
|
ON_COMMAND(ID_REFESH, OnRefesh)
|
|
ON_COMMAND(ID_SEARCH, OnSearch)
|
|
ON_NOTIFY(LVN_KEYDOWN, ID_USER_LIST, OnKeydownUserList)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CAuthDBManagerDlg message handlers
|
|
|
|
BOOL CAuthDBManagerDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
char SelectName[256];
|
|
int Counter;
|
|
|
|
// Add "About..." menu item to system menu.
|
|
|
|
// IDM_ABOUTBOX must be in the system command range.
|
|
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
|
ASSERT(IDM_ABOUTBOX < 0xF000);
|
|
|
|
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
|
if (pSysMenu != NULL)
|
|
{
|
|
CString strAboutMenu;
|
|
strAboutMenu.LoadString(IDS_ABOUTBOX);
|
|
if (!strAboutMenu.IsEmpty())
|
|
{
|
|
pSysMenu->AppendMenu(MF_SEPARATOR);
|
|
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
|
}
|
|
}
|
|
|
|
// Set the icon for this dialog. The framework does this automatically
|
|
// when the application's main window is not a dialog
|
|
SetIcon(m_hIcon, TRUE); // Set big icon
|
|
SetIcon(m_hIcon, FALSE); // Set small icon
|
|
|
|
// TODO: Add extra initialization here
|
|
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
|
|
m_UserList.SetColumn();
|
|
|
|
for(Counter = 0; Counter < 2; Counter++)
|
|
{
|
|
LoadString(pAppWnd->m_Language, IDS_S1 + Counter, SelectName, 256);
|
|
m_Sex.InsertString(Counter, SelectName);
|
|
}
|
|
m_Sex.SetCurSel(0);
|
|
|
|
m_ConnectionLed.SetLed(CLed::LED_COLOR_GREEN, CLed::LED_OFF, CLed::LED_ROUND);
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
|
|
|
|
m_Align = 0;
|
|
m_AlignType = 0;
|
|
m_SearchType = 0;
|
|
ZeroMemory(m_Search, sizeof(char) * 256);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
|
{
|
|
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
|
|
{
|
|
CAboutDlg dlgAbout;
|
|
dlgAbout.DoModal();
|
|
}
|
|
else
|
|
{
|
|
CDialog::OnSysCommand(nID, lParam);
|
|
}
|
|
}
|
|
|
|
// If you add a minimize button to your dialog, you will need the code below
|
|
// to draw the icon. For MFC applications using the document/view model,
|
|
// this is automatically done for you by the framework.
|
|
|
|
void CAuthDBManagerDlg::OnPaint()
|
|
{
|
|
if (IsIconic())
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
|
|
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
|
|
|
|
// Center icon in client rectangle
|
|
int cxIcon = GetSystemMetrics(SM_CXICON);
|
|
int cyIcon = GetSystemMetrics(SM_CYICON);
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
int x = (rect.Width() - cxIcon + 1) / 2;
|
|
int y = (rect.Height() - cyIcon + 1) / 2;
|
|
|
|
// Draw the icon
|
|
dc.DrawIcon(x, y, m_hIcon);
|
|
}
|
|
else
|
|
{
|
|
CDialog::OnPaint();
|
|
}
|
|
}
|
|
|
|
// The system calls this to obtain the cursor to display while the user drags
|
|
// the minimized window.
|
|
HCURSOR CAuthDBManagerDlg::OnQueryDragIcon()
|
|
{
|
|
return (HCURSOR) m_hIcon;
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnAbout()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
CAboutDlg dlgAbout;
|
|
dlgAbout.DoModal();
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnConnect()
|
|
{
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_ON, CLed::LED_ROUND);
|
|
|
|
if(!CDBSingleObject::GetInstance().Connect(CDBSingleObject::Class_AuthDB))
|
|
{
|
|
m_ErrorLog.Format("[연결] 접속에 실패 했습니다. %s", CDBSingleObject::GetInstance().GetErrorString());
|
|
}
|
|
else
|
|
{
|
|
m_ErrorLog.Format("[연결] 접속에 성공 했습니다.");
|
|
}
|
|
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
|
|
m_ConnectionLed.SetLed(CLed::LED_COLOR_GREEN, CLed::LED_ON, CLed::LED_ROUND);
|
|
|
|
UpdateUserTable();
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnDisconnect()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_ON, CLed::LED_ROUND);
|
|
|
|
if(CDBSingleObject::GetInstance().DisconnectDataSource())
|
|
m_ConnectionLed.SetLed(CLed::LED_COLOR_GREEN, CLed::LED_OFF, CLed::LED_ROUND);
|
|
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
|
|
}
|
|
|
|
bool CAuthDBManagerDlg::ConnectDB(int Type, CString DataSource, CString Server, CString DataBase, CString User, CString Pass)
|
|
{
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_ON, CLed::LED_ROUND);
|
|
|
|
if(Type == 0)
|
|
{
|
|
if(!CDBSingleObject::GetInstance().ConnectSQLServer(DataSource.GetBuffer(0), NULL, NULL, NULL, CDBSingleObject::ConnType_ODBC))
|
|
{
|
|
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
else if(Type == 1)
|
|
{
|
|
if(!CDBSingleObject::GetInstance().ConnectSQLServer(Server.GetBuffer(0), DataBase.GetBuffer(0), User.GetBuffer(0), Pass.GetBuffer(0), CDBSingleObject::ConnType_MSSQL))
|
|
{
|
|
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
else if(Type == 2)
|
|
{
|
|
if(!CDBSingleObject::GetInstance().ConnectDataSourcePrompt(m_hWnd))
|
|
{
|
|
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
|
|
m_ConnectionLed.SetLed(CLed::LED_COLOR_GREEN, CLed::LED_ON, CLed::LED_ROUND);
|
|
|
|
return true;
|
|
}
|
|
|
|
const int MaxRow = 200;
|
|
|
|
bool CAuthDBManagerDlg::UpdateUserTable(void)
|
|
{
|
|
SELECT_AUTHUSER_TABLE LoginTable[MaxRow] = {0,};
|
|
|
|
int StartRow;
|
|
int RowCounter, Rows;
|
|
|
|
char Query[256] = "";
|
|
char Option[256] = "";
|
|
|
|
if(m_SearchType != 0)
|
|
{
|
|
if(m_SearchType == 1)
|
|
{
|
|
sprintf(Option, " where Account='%s'", m_Search);
|
|
}
|
|
else if(m_SearchType == 2)
|
|
{
|
|
sprintf(Option, " where Name='%s'", m_Search);
|
|
}
|
|
}
|
|
|
|
if(m_Align == 0)
|
|
{
|
|
strcat(Option, " order by UID");
|
|
}
|
|
else if(m_Align == 1)
|
|
{
|
|
strcat(Option, " order by Account");
|
|
}
|
|
else if(m_Align == 2)
|
|
{
|
|
strcat(Option, " order by Name");
|
|
}
|
|
|
|
if(m_AlignType == 0)
|
|
{
|
|
strcat(Option, " asc");
|
|
}
|
|
else if(m_AlignType == 1)
|
|
{
|
|
strcat(Option, " desc");
|
|
}
|
|
|
|
m_UserList.DeleteAllItems();
|
|
|
|
sprintf(Query, "select * from AuthUser %s", Option);
|
|
for(StartRow = 0;; StartRow += MaxRow)
|
|
{
|
|
if(CDBSingleObject::GetInstance().Select(Query, (void**)&LoginTable, sizeof(SELECT_AUTHUSER_TABLE), StartRow, MaxRow, &Rows))
|
|
{
|
|
for(RowCounter = 0; RowCounter < Rows; RowCounter++)
|
|
m_UserList.AddUserRow(&LoginTable[RowCounter]);
|
|
}
|
|
else
|
|
{
|
|
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return false;
|
|
}
|
|
|
|
if(Rows < MaxRow)
|
|
break;
|
|
}
|
|
|
|
m_TotalRow.Format("%d", StartRow + Rows);
|
|
UpdateData(FALSE);
|
|
|
|
return true;
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnClickUserList(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
POSITION Pos;
|
|
int Index;
|
|
|
|
unsigned long UserUID;
|
|
char strUserUID[256];
|
|
char strUserID[256];
|
|
|
|
Pos= m_UserList.GetFirstSelectedItemPosition();
|
|
if(Pos != NULL)
|
|
{
|
|
while(Pos)
|
|
{
|
|
Index = m_UserList.GetNextSelectedItem(Pos);
|
|
}
|
|
|
|
m_SelectedRow.Format("%d", Index);
|
|
m_SelectedCount.Format("%d", m_UserList.GetSelectedCount());
|
|
|
|
// 캐릭터 아이디 정보 업데이트
|
|
if(m_UserList.GetItemText(Index, 0, strUserUID, 256))
|
|
{
|
|
UserUID = atoi(strUserUID);
|
|
|
|
m_SelectedUID.Format("%d", UserUID);
|
|
|
|
m_UserList.GetItemText(Index, 1, strUserID, 256);
|
|
m_SelectedID = strUserID;
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnEndlabeleditUserList(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
|
|
|
|
char Query[256] = "";
|
|
|
|
// TODO: Add your control notification handler code here
|
|
UPDATE_AUTHUSER_TABLE ModifyLoginTable;
|
|
LV_ITEM *plvItem = &pDispInfo->item;
|
|
|
|
ZeroMemory(&ModifyLoginTable, sizeof(UPDATE_AUTHUSER_TABLE));
|
|
|
|
if(plvItem->pszText != NULL)
|
|
{
|
|
m_UserList.SetItemText(plvItem->iItem, plvItem->iSubItem, plvItem->pszText);
|
|
|
|
m_UserList.GetUserRow(plvItem->iItem, &ModifyLoginTable);
|
|
|
|
sprintf(Query, "UpdateUser '%d', '%s', '%s', '%s', '%d', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'",
|
|
ModifyLoginTable.UID, ModifyLoginTable.AuthID, ModifyLoginTable.AuthPW, ModifyLoginTable.Name, ModifyLoginTable.Sex, ModifyLoginTable.Birth,
|
|
ModifyLoginTable.ZipCode, ModifyLoginTable.Address, ModifyLoginTable.Mobile, ModifyLoginTable.Phone, ModifyLoginTable.Email, ModifyLoginTable.Job,
|
|
ModifyLoginTable.IDNumber);
|
|
|
|
CDBSingleObject::GetInstance().ExecuteQuery(Query);;
|
|
}
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnAddUser()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
INSERT_AUTHUSER_TABLE InsertLoginTable = {0,};
|
|
char Query[256] = "";
|
|
|
|
UpdateData(TRUE);
|
|
|
|
strncpy(InsertLoginTable.AuthID, m_ID.GetBuffer(16), 16);
|
|
strncpy(InsertLoginTable.AuthPW, m_Password.GetBuffer(16), 16);
|
|
strncpy(InsertLoginTable.Name, m_Name.GetBuffer(16), 16);
|
|
InsertLoginTable.Sex = m_Sex.GetCurSel();
|
|
strncpy(InsertLoginTable.Birth, m_Birth.GetBuffer(20), 20);
|
|
strncpy(InsertLoginTable.IDNumber, m_IDNumber.GetBuffer(14), 14);
|
|
strncpy(InsertLoginTable.ZipCode, m_ZipCode.GetBuffer(12), 12);
|
|
strncpy(InsertLoginTable.Address, m_Address.GetBuffer(80), 80);
|
|
strncpy(InsertLoginTable.Mobile, m_Mobile.GetBuffer(20), 20);
|
|
strncpy(InsertLoginTable.Phone, m_Phone.GetBuffer(20), 20);
|
|
strncpy(InsertLoginTable.Email, m_Email.GetBuffer(48), 48);
|
|
strncpy(InsertLoginTable.Job, m_Job.GetBuffer(20), 20);
|
|
|
|
sprintf(Query, "InsertUser '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'",
|
|
InsertLoginTable.AuthID, InsertLoginTable.AuthPW, InsertLoginTable.Name, InsertLoginTable.Sex, InsertLoginTable.Birth,InsertLoginTable.ZipCode,
|
|
InsertLoginTable.Address, InsertLoginTable.Mobile, InsertLoginTable.Phone, InsertLoginTable.Email, InsertLoginTable.Job, InsertLoginTable.IDNumber);
|
|
|
|
if(CDBSingleObject::GetInstance().ExecuteQuery(Query))
|
|
UpdateUserTable();
|
|
else
|
|
{
|
|
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnDeleteUser()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
POSITION Pos;
|
|
int Index;
|
|
|
|
char Query[256] = "";
|
|
char strUserUID[256] = "";
|
|
|
|
Pos= m_UserList.GetFirstSelectedItemPosition();
|
|
if(Pos != NULL)
|
|
{
|
|
while(Pos != NULL)
|
|
{
|
|
Index = m_UserList.GetNextSelectedItem(Pos);
|
|
|
|
if(m_UserList.GetItemText(Index, 0, strUserUID, 256))
|
|
{
|
|
sprintf(Query, "DeleteUserByUID %s", strUserUID);
|
|
if(!CDBSingleObject::GetInstance().ExecuteQuery(Query))
|
|
{
|
|
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
UpdateUserTable();
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnInitLogintime()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnRefesh()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
UpdateUserTable();
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnSearch()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
CSearchDlg dlgSearch;
|
|
dlgSearch.DoModal();
|
|
|
|
UpdateUserTable();
|
|
}
|
|
|
|
void CAuthDBManagerDlg::OnKeydownUserList(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NMLVKEYDOWN* pKeyDown = (NMLVKEYDOWN*)pNMHDR;
|
|
// TODO: Add your control notification handler code here
|
|
POSITION Pos;
|
|
int Index;
|
|
|
|
char Query[256] = "";
|
|
char strUserUID[256] = "";
|
|
|
|
if(pKeyDown->wVKey == VK_DELETE)
|
|
{
|
|
Pos= m_UserList.GetFirstSelectedItemPosition();
|
|
if(Pos != NULL)
|
|
{
|
|
while(Pos)
|
|
{
|
|
Index = m_UserList.GetNextSelectedItem(Pos);
|
|
|
|
if(m_UserList.GetItemText(Index, 0, strUserUID, 256))
|
|
{
|
|
sprintf(Query, "DeleteUserByUID %s", strUserUID);
|
|
if(!CDBSingleObject::GetInstance().ExecuteQuery(Query))
|
|
{
|
|
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
UpdateUserTable();
|
|
}
|
|
}
|
|
|
|
*pResult = 0;
|
|
}
|