// DlgSetIni.cpp : ʵ���ļ�
//

#include "stdafx.h"
#include "DBServer.h"
#include "DlgSetIni.h"
#include "mysqldata.h"
#include "N8Process.h"
#include "des.h"

// CDlgSetIni �Ի���
COLORREF g_rgb = RGB(226, 220, 202);	// �׻�ɫ;
IMPLEMENT_DYNAMIC(CDlgSetIni, CDialog)

CDlgSetIni::CDlgSetIni(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgSetIni::IDD, pParent)
	, m_strShareAccount(_T(""))
	, m_strSharePasswd(_T(""))
	, m_strN8ViewSvrIP(_T(""))
	, m_strN8ViewUserDir(_T(""))
	, m_strN8ViewStsDir(_T(""))
	, m_strN8ViewProductDir(_T(""))
	, m_strN8ViewShareName(_T(""))
	, m_strN8ViewShareDir(_T(""))
{
}

CDlgSetIni::~CDlgSetIni()
{
}

void CDlgSetIni::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, ET_SHAREACCOUNT, m_strShareAccount);
	DDX_Text(pDX, ET_SHAREPASSWD, m_strSharePasswd);
	DDX_Text(pDX, ET_NEMOVIEWIP, m_strN8ViewSvrIP);
	DDX_Text(pDX, ET_N8USERDIR, m_strN8ViewUserDir);
	DDX_Text(pDX, ET_N8DATADIR, m_strN8ViewStsDir);
	DDX_Text(pDX, ET_N8RPODUCTDIR, m_strN8ViewProductDir);
	DDX_Text(pDX, ET_N8SHARENAME, m_strN8ViewShareName);
	DDX_Text(pDX, ET_N8SHAREDIR, m_strN8ViewShareDir);
}


BEGIN_MESSAGE_MAP(CDlgSetIni, CDialog)
	ON_BN_CLICKED(IDOK, &CDlgSetIni::OnBnClickedOk)
	ON_BN_CLICKED(IDCANCEL, &CDlgSetIni::OnBnClickedCancel)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(BT_GETPRODUCTDIR, &CDlgSetIni::OnBnClickedGetproductdir)
	ON_BN_CLICKED(BT_GETUSERDIR, &CDlgSetIni::OnBnClickedGetuserdir)
	ON_BN_CLICKED(BT_GETDATADIR, &CDlgSetIni::OnBnClickedGetdatadir)
	ON_BN_CLICKED(BT_IMPORTPRODUCT, &CDlgSetIni::OnBnClickedImportproduct)
	ON_BN_CLICKED(BT_IMPORTSTAFF, &CDlgSetIni::OnBnClickedImportstaff)
	ON_BN_CLICKED(BT_GETN8SHAREDIR, &CDlgSetIni::OnBnClickedGetn8sharedir)
	ON_BN_CLICKED(BT_DISPALYSHARE, &CDlgSetIni::OnBnClickedDispalyshare)
END_MESSAGE_MAP()

// CDlgSetIni ��Ϣ��������;

BOOL CDlgSetIni::OnInitDialog()
{
	CDialog::OnInitDialog();

	// TODO:  �ڴ����Ӷ���ij�ʼ��
	m_strShareAccount = g_szShareAccount;
	m_strSharePasswd = g_szSharePasswd;

	m_strN8ViewSvrIP = g_szN8ViewSvrIP;
	m_strN8ViewUserDir = g_szN8ViewUserDir;
	m_strN8ViewShareName = g_szN8ViewShareName;
	m_strN8ViewShareDir = g_szN8ViewShareDir;
	m_strN8ViewProductDir = g_szN8ViewProductDir;
	m_strN8ViewStsDir = g_szN8ViewStsDir;

	UpdateData(FALSE);

	SetDlgItemText(ET_CLOUNDDISKPSW, g_szCloundDiskPsw);
	SetDlgItemText(ET_CLOUNDDISKACCOUNT, g_szCloundDiskAccount);

	UpdateData();

	return TRUE;  // return TRUE unless you set the focus to a control
	// �쳣: OCX ����ҳӦ���� FALSE
}


void CDlgSetIni::OnBnClickedOk()
{
	// TODO: �ڴ����ӿؼ�֪ͨ�����������
	UpdateData();

	TCHAR szFile[MAX_PATH] = {0};
	_stprintf_s(szFile, _T("%s\\ServiceInfo.ini"), g_ModulePath);
	_stprintf_s(g_szShareAccount, _T("%s"), m_strShareAccount);
	_stprintf_s(g_szSharePasswd, _T("%s"), m_strSharePasswd);
	WritePrivateProfileString(_T("NetWorkInfo"), _T("ShareAccount"), m_strShareAccount, szFile);
	WritePrivateProfileString(_T("NetWorkInfo"), _T("SharePasswd"), m_strSharePasswd, szFile);
	
	// NemoInfo;
	_stprintf_s(g_szN8ViewSvrIP, _T("%s"), m_strN8ViewSvrIP);
	_stprintf_s(g_szN8ViewUserDir, _T("%s"), m_strN8ViewUserDir);
	_stprintf_s(g_szN8ViewStsDir, _T("%s"), m_strN8ViewStsDir);
	_stprintf_s(g_szN8ViewProductDir, _T("%s"), m_strN8ViewProductDir);
	_stprintf_s(g_szN8ViewShareName, _T("%s"), m_strN8ViewShareName);
	_stprintf_s(g_szN8ViewShareDir, _T("%s"), m_strN8ViewShareDir);

	WritePrivateProfileString("NemoInfo", "N8ViewSvr", g_szN8ViewSvrIP, szFile);
	WritePrivateProfileString("NemoInfo", "N8ViewUserDir", g_szN8ViewUserDir, szFile);
	WritePrivateProfileString("NemoInfo", "N8ViewStsDir", g_szN8ViewStsDir, szFile);
	WritePrivateProfileString("NemoInfo", "N8ViewProductDir", g_szN8ViewProductDir, szFile);
	WritePrivateProfileString("NemoInfo", "N8ViewShareDir", g_szN8ViewShareDir, szFile);
	WritePrivateProfileString("NemoInfo", "N8ViewShareName", g_szN8ViewShareName, szFile);

	CString strCloundDiskPsw;
	CString strCloundDiskAccount;
	GetDlgItemText(ET_CLOUNDDISKPSW, strCloundDiskPsw);
	GetDlgItemText(ET_CLOUNDDISKACCOUNT, strCloundDiskAccount);

	WritePrivateProfileString("SystemInfo", "CloundDiskAccount", strCloundDiskAccount, szFile);
	// ItCivilian des������������,��ֹй©[7/15/2016];
	des_crypt(strCloundDiskPsw, strCloundDiskPsw,DES_ENCRYPT);
	WritePrivateProfileString("SystemInfo", "CloundDiskPsw", strCloundDiskPsw, szFile);

	OnOK();
}

void CDlgSetIni::OnBnClickedCancel()
{
	// TODO: �ڴ����ӿؼ�֪ͨ�����������
	OnCancel();
}

HBRUSH CDlgSetIni::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

	// TODO:  �ڴ˸��� DC ���κ�����
	if (nCtlColor == CTLCOLOR_SCROLLBAR)  //
	{
		//pDC->SetBkMode(TRANSPARENT);
		pDC->SetTextColor(RGB(0, 0, 0));
		pDC->SetBkColor(RGB(233, 233, 220));
		HBRUSH b = CreateSolidBrush(RGB(233, 233, 220));
		return b;
	}
	else if (nCtlColor == CTLCOLOR_EDIT)   //���ı༭��
	{
		//pDC->SetBkMode(TRANSPARENT);
		pDC->SetTextColor(RGB(0, 0, 0));
		pDC->SetBkColor(RGB(234, 234, 234));
		HBRUSH b = CreateSolidBrush(RGB(234, 234, 234));
		return b;
	}
	else if (nCtlColor == CTLCOLOR_STATIC)  //���ľ�̬�ı�
	{
		pDC->SetTextColor(RGB(0, 0, 0));
		pDC->SetBkColor(g_rgb);
		HBRUSH b = CreateSolidBrush(g_rgb);
		return b;
	}
	else if (nCtlColor == CTLCOLOR_DLG)   //���ĶԻ��򱳾�ɫ
	{
		pDC->SetTextColor(RGB(0, 0, 0));
		pDC->SetBkColor(g_rgb);
		HBRUSH b = CreateSolidBrush(g_rgb);
		return b;
	}
	// TODO:  ���Ĭ�ϵIJ������軭�ʣ��򷵻���һ������
	return hbr;
}

void CDlgSetIni::OnBnClickedGetproductdir() // ����N8ѡ��IJ�ƷĿ¼;
{
	TCHAR szN8ViewProductDir[MAX_PATH] = {0};
	if ( GetFilePath(szN8ViewProductDir, GetActiveWindow()->GetSafeHwnd(), _T("��ѡ��Դ��Ƭ���ļ��У�"), BIF_USENEWUI | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS) )
	{
		m_strN8ViewProductDir = szN8ViewProductDir;
	}
	UpdateData(FALSE);
}

void CDlgSetIni::OnBnClickedGetuserdir()
{
	TCHAR szN8ViewUserDir[MAX_PATH] = {0};
	if ( GetFilePath(szN8ViewUserDir, GetActiveWindow()->GetSafeHwnd(), _T("��ѡ��Դ��Ƭ���ļ��У�"), BIF_USENEWUI | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS) )
	{
		m_strN8ViewUserDir = szN8ViewUserDir;
	}
	UpdateData(FALSE);
}

void CDlgSetIni::OnBnClickedGetdatadir()
{
	TCHAR szN8ViewStsDir[MAX_PATH] = {0};
	if ( GetFilePath(szN8ViewStsDir, GetActiveWindow()->GetSafeHwnd(), _T("��ѡ��Դ��Ƭ���ļ��У�"), BIF_USENEWUI | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS) )
	{
		m_strN8ViewStsDir = szN8ViewStsDir;
	}
	UpdateData(FALSE);
}

void CDlgSetIni::OnBnClickedImportproduct() // productlist;
{
	// 1.�����ݿ��л�ȡshangpin;
	CDatabase *pMaindb = NULL;
	ODBCConnGuard ConnGuard(pMaindb , -1, 3000);
	if ( pMaindb == NULL )
		return;
	CRecordset myset(pMaindb);
	CString	strSQL = _T("select count(*) as cot from shangpin where [hide] = '�ϼ�'");
	myset.Open(CRecordset::forwardOnly, strSQL);
	myset.GetFieldValue(_T("cot"), strSQL);
	myset.Close();
	int nCount = atol(strSQL);

	CArray<CStringArray, CStringArray> AryShangpin;
	AryShangpin.SetSize(nCount, 1);
	CRstShangPin rsSt;	
	rsSt.m_pDatabase = pMaindb; 
	rsSt.m_strFilter = _T("[hide] = '�ϼ�'");
	rsSt.Open();
	
	DWORD dwIndex = 0;
	while (!rsSt.IsEOF())
	{
		AryShangpin.ElementAt(dwIndex).RemoveAll();
		AryShangpin.ElementAt(dwIndex).Add(rsSt.spid);				// ��Ʒ���;
		AryShangpin.ElementAt(dwIndex).Add(rsSt.spname);			// ��Ʒ����;
		dwIndex++;
		rsSt.MoveNext();
		if (AryShangpin.GetSize() <= dwIndex)
			break;
	}
	rsSt.Close();
	AryShangpin.SetSize(dwIndex, 1);

	// 2.��������;
	TCHAR szProductListPath[MAX_PATH] = {0};
	_stprintf_s(szProductListPath, MAX_PATH, _T("%s\\productlist.xml"), g_szN8ViewProductDir);

	N8Process::CProductList pl;
	if ( !pl.LoadXML(szProductListPath) )
	{
		AfxMessageBox(_T("����N8��Ʒ����ʧ��,�������������ļ�"));
		pl.CreateXML(szProductListPath);
		pl.SetXMLPath(szProductListPath);
		//return;
	}

	for ( int i = 0; i < AryShangpin.GetCount(); i++ )
	{
		//pl.InsertItem(GetGuidString(), AryShangpin.ElementAt(i).ElementAt(1), NULL, NULL);
		pl.InsertItem(AryShangpin.ElementAt(i).ElementAt(0), AryShangpin.ElementAt(i).ElementAt(1), NULL, NULL);
	}

	AfxMessageBox(_T("�����Ʒ��N8�ɹ�"));
}

void CDlgSetIni::OnBnClickedImportstaff() // vgstaff.xml;
{
	// 1.ʹ��user������renyuan��;
	CDatabase *pMaindb = NULL;
	ODBCConnGuard ConnGuard(pMaindb , -1, 3000);
	if ( pMaindb == NULL )
		return;
	CRecordset myset(pMaindb);
	CString	strSQL = _T("select count(*) as cot from [accountview]");
	myset.Open(CRecordset::forwardOnly, strSQL);
	myset.GetFieldValue(_T("cot"), strSQL);
	myset.Close();
	int nCount = atol(strSQL);

	CArray<CStringArray, CStringArray> AryUser;
	AryUser.SetSize(nCount, 1);
	CRstUser rsSt;
	rsSt.m_pDatabase = pMaindb; 
	rsSt.Open();

	DWORD dwIndex = 0;
	while (!rsSt.IsEOF())
	{
		AryUser.ElementAt(dwIndex).RemoveAll();
		AryUser.ElementAt(dwIndex).Add(rsSt.account);				// �˺�;
		AryUser.ElementAt(dwIndex).Add(rsSt.name);					// Ա����;
		dwIndex++;
		rsSt.MoveNext();
		if (AryUser.GetSize() <= dwIndex)
			break;
	}
	rsSt.Close();
	AryUser.SetSize(dwIndex, 1);

	// 2.��������;
	TCHAR szStaffXMLPath[MAX_PATH] = {0};
	_stprintf_s(szStaffXMLPath, MAX_PATH, _T("%s\\VgStaff.xml"), g_szN8ViewProductDir);

	N8Process::CStaff stf;
	if ( !stf.LoadXML(szStaffXMLPath) )
	{
		AfxMessageBox(_T("����N8Ա������ʧ��,�����������ļ�"));
		stf.CreateXML(szStaffXMLPath);
		stf.SetXMLPath(szStaffXMLPath);
		//return;
	}

	for ( int i = 0; i < AryUser.GetCount(); i++ )
	{
		stf.InsertItem(AryUser.ElementAt(i).ElementAt(0), AryUser.ElementAt(i).ElementAt(1));
	}

	AfxMessageBox(_T("����Ա����N8�ɹ�,Ҫʹ������Ч������N8ѡ���������"));
}

void CDlgSetIni::OnBnClickedGetn8sharedir()
{
	TCHAR szN8ViewShareDir[MAX_PATH] = {0};
	if ( GetFilePath(szN8ViewShareDir, GetActiveWindow()->GetSafeHwnd(), _T("��ѡ��Դ��Ƭ���ļ��У�"), BIF_USENEWUI | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS) )
	{
		m_strN8ViewShareDir = szN8ViewShareDir;
	}
	UpdateData(FALSE);
}

void CDlgSetIni::OnBnClickedDispalyshare() //Ӧ�ù���;
{
	UpdateData();
	if ( m_strN8ViewShareDir.IsEmpty() )
	{
		AfxMessageBox(_T("��ѡ��Ҫ���ù�����N8Ŀ¼"));

		TCHAR szN8ViewShareDir[MAX_PATH] = {0};
		if ( GetFilePath(szN8ViewShareDir, GetActiveWindow()->GetSafeHwnd(), _T("��ѡ��Դ��Ƭ���ļ��У�"), BIF_USENEWUI | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS) )
		{
			m_strN8ViewShareDir = szN8ViewShareDir;
			_stprintf_s(g_szN8ViewShareDir, MAX_PATH, _T("%s"), m_strN8ViewShareDir.GetString());
			UpdateData(FALSE);
		}
		else
			return;
	}

	if ( m_strN8ViewShareName.IsEmpty() && m_strN8ViewShareDir.Find(_T("\\\\")) == -1 )
	{
		AfxMessageBox(_T("�����ù���Ŀ¼��"));
		return;
	}

	if ( LanShareDll::LoadLANShareLibrary() )
	{
		TCHAR szN8ViewShareName[MAX_PATH] = {0};
		if ( API_IsTheDirectoryShared(m_strN8ViewShareDir, szN8ViewShareName, MAX_PATH) )
		{
			AfxMessageBox(_T("��Ŀ¼�ѹ���,����ѡ������Ŀ¼"));
			_stprintf_s(g_szN8ViewShareName, MAX_PATH, _T("%s"), szN8ViewShareName);
			m_strN8ViewShareName = szN8ViewShareName;

			if ( m_strN8ViewShareName.IsEmpty() )
			{// ˵��m_strN8ViewShareDir���Ǿ���������Ŀ¼;
				_stprintf_s(g_szN8ViewShareName, MAX_PATH, _T("%s"), m_strN8ViewShareDir);
				m_strN8ViewShareName = m_strN8ViewShareDir;
			}

			UpdateData(FALSE);
			
			TCHAR szFile[MAX_PATH] = {0};
			_stprintf_s(szFile, _T("%s\\ServiceInfo.ini"), g_ModulePath);
			
			WritePrivateProfileString("NemoInfo", "N8ViewShareName", g_szN8ViewShareName, szFile);

			LanShareDll::FreeLANShareLibrary();
			return;
		}

		if ( LanShareDll::API_AddShareDirectory(m_strN8ViewShareDir, m_strN8ViewShareName) )
		{
			if ( LanShareDll::API_SetNetShareSecurity(m_strN8ViewShareName, _T("Everyone")) )
			{
				if ( LanShareDll::API_AddAccessRights(m_strN8ViewShareDir, _T("Everyone")) )
				{
					AfxMessageBox(_T("���ù����ɹ�"));
					OnBnClickedOk();
				}
				else
				{
					AfxMessageBox(_T("���ð�ȫȨ��ʧ��"));
				}
			}
			else 
			{
				AfxMessageBox(_T("���ù���Ȩ��ʧ��"));
			}
		}
		else
		{
			AfxMessageBox(_T("���ӹ���Ŀ¼ʧ��"));
		}

		LanShareDll::FreeLANShareLibrary();
	}
}

BOOL CDlgSetIni::PreTranslateMessage(MSG* pMsg)
{
	// TODO: �ڴ�����ר�ô����/����û���
	if ( pMsg->message == WM_KEYDOWN )
	{
		if ( pMsg->wParam == VK_CONTROL )
		{
			CWnd *pChildWnd = GetFocus();
			if ( pChildWnd->GetDlgCtrlID() == ET_CLOUNDDISKPSW )
			{
				// ��ʾ���ܺ������;
				CEdit *pCloundPsw = (CEdit*)GetDlgItem(ET_CLOUNDDISKPSW);
				pCloundPsw->SetPasswordChar(0);

				pCloundPsw->Invalidate();
			}
		}
	}
	else if ( pMsg->message == WM_KEYUP )
	{
		if ( pMsg->wParam == VK_CONTROL )
		{
			// ��ʾ���ܺ������;
			CEdit *pCloundPsw = (CEdit*)GetDlgItem(ET_CLOUNDDISKPSW);
			pCloundPsw->SetPasswordChar('*');

			pCloundPsw->Invalidate();
		}
	}
	
	return CDialog::PreTranslateMessage(pMsg);
}