// DLG_User_Inport_LT.cpp : implementation file
//

#include "stdafx.h"
#include "corpsms.h"
#include "DLG_User_Inport_LT.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// DLG_User_Inport_LT dialog

#include "DLG_Send.h"

DLG_User_Inport_LT::DLG_User_Inport_LT(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_User_Inport_LT::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_User_Inport_LT)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT

	m_pDlgSend   = (DLG_Send *)pParent;
}


void DLG_User_Inport_LT::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_User_Inport_LT)
	DDX_Control(pDX, IDC_USER_INPORT_LT_USERNAME, m_E_UserName);
	DDX_Control(pDX, IDC_USER_INPORT_LT_JGNAME, m_E_JGName);
	DDX_Control(pDX, IDC_USER_INPORT_LT_JD, m_B_JD);
	DDX_Control(pDX, IDC_USER_INPORT_LT_ININAME, m_E_IniName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_User_Inport_LT, CDialog)
	//{{AFX_MSG_MAP(DLG_User_Inport_LT)
	ON_BN_CLICKED(IDC_USER_INPORT_LT_JGNAME_SEL, OnUserInportLtJgnameSel)
	ON_BN_CLICKED(IDC_USER_INPORT_LT_ININAME_SEL, OnUserInportLtIninameSel)
	ON_BN_CLICKED(IDC_USER_INPORT_LT_USERNAME_SEL, OnUserInportLtUsernameSel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_User_Inport_LT message handlers

void DLG_User_Inport_LT::OnUserInportLtJgnameSel() 
{
#define FILE_FILTER_TEXT \
	TEXT("Excel �ļ� (*.xls,*.xlsx)\0*.xls\0*.xlsx\0")\
    TEXT("�����ļ� (*.*)\0*.*;\0\0")

		TCHAR szFile[ 256 ];
		TCHAR szFileB[ 256 ];
		*szFileB = NULL;
		_stprintf( szFile , _T("*.xls") );

		OPENFILENAME  sOpen;
		sOpen.lStructSize = sizeof( sOpen );
		sOpen.hwndOwner = this->m_hWnd ;
		sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
		sOpen.lpstrFilter = FILE_FILTER_TEXT;
		sOpen.lpstrDefExt = _T("�۸�.xls");
		sOpen.lpstrCustomFilter = NULL;
		sOpen.nMaxCustFilter    = 0;
		sOpen.lpstrFile = szFile;
		sOpen.nMaxFile  = sizeof( szFile );
		sOpen.lpstrFileTitle = szFileB;
		sOpen.nMaxFileTitle = sizeof( szFileB );
		sOpen.lpstrInitialDir = NULL;
		sOpen.lpstrTitle = _T("�򿪼۸��ļ�");
		if ( ::GetOpenFileName( &sOpen ) )
		{
			m_E_JGName.SetWindowText(sOpen.lpstrFile);
			return ;
		}
}

void DLG_User_Inport_LT::OnUserInportLtIninameSel() 
{
#define FILE_FILTER_TEXT2 \
	TEXT("Ini �ļ� (*.ini)\0*.ini\0")\
    TEXT("�����ļ� (*.*)\0*.*;\0\0")

		TCHAR szFile[ 256 ];
		TCHAR szFileB[ 256 ];
		*szFileB = NULL;
		_stprintf( szFile , _T("*.ini") );

		OPENFILENAME  sOpen;
		sOpen.lStructSize = sizeof( sOpen );
		sOpen.hwndOwner = this->m_hWnd ;
		sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
		sOpen.lpstrFilter = FILE_FILTER_TEXT2;
		sOpen.lpstrDefExt = _T("���۶�λ.ini");
		sOpen.lpstrCustomFilter = NULL;
		sOpen.nMaxCustFilter    = 0;
		sOpen.lpstrFile = szFile;
		sOpen.nMaxFile  = sizeof( szFile );
		sOpen.lpstrFileTitle = szFileB;
		sOpen.nMaxFileTitle = sizeof( szFileB );
		sOpen.lpstrInitialDir = NULL;
		sOpen.lpstrTitle = _T("�������ļ�");
		if ( ::GetOpenFileName( &sOpen ) )
		{
			m_E_IniName.SetWindowText(sOpen.lpstrFile);
			return ;
		}	
}

void DLG_User_Inport_LT::OnUserInportLtUsernameSel() 
{
#define FILE_FILTER_TEXT3 \
	TEXT("TXT �ļ� (*.txt)\0*.txt\0")\
    TEXT("�����ļ� (*.*)\0*.*;\0\0")

		TCHAR szFile[ 256 ];
		TCHAR szFileB[ 256 ];
		*szFileB = NULL;
		_stprintf( szFile , _T("*.txt") );

		OPENFILENAME  sOpen;
		sOpen.lStructSize = sizeof( sOpen );
		sOpen.hwndOwner = this->m_hWnd ;
		sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
		sOpen.lpstrFilter = FILE_FILTER_TEXT3;
		sOpen.lpstrDefExt = _T("*.txt");
		sOpen.lpstrCustomFilter = NULL;
		sOpen.nMaxCustFilter    = 0;
		sOpen.lpstrFile = szFile;
		sOpen.nMaxFile  = sizeof( szFile );
		sOpen.lpstrFileTitle = szFileB;
		sOpen.nMaxFileTitle = sizeof( szFileB );
		sOpen.lpstrInitialDir = NULL;
		sOpen.lpstrTitle = _T("���û��ļ�");
		if ( ::GetOpenFileName( &sOpen ) )
		{
			m_E_UserName.SetWindowText(sOpen.lpstrFile);
			return ;
		}		
}

void DLG_User_Inport_LT::OnOK() 
{

	CString strJGName;
	CString strIniName;
	CString strUserName;

	m_E_JGName.GetWindowText(strJGName);
	m_E_IniName.GetWindowText(strIniName);
	m_E_UserName.GetWindowText(strUserName);

	if ( strJGName.GetLength() <=0 )
	{
		MessageBox( _T("��ѡ��۸���������޷��������룡") , _T("����") , MB_ICONWARNING );
		GetDlgItem(IDC_USER_INPORT_LT_JGNAME)->SetFocus();
		return ;
	}
	if ( strIniName.GetLength() <=0 )
	{
		MessageBox( _T("��ѡ�������ļ��������޷��������룡") , _T("����") , MB_ICONWARNING );
		GetDlgItem(IDC_USER_INPORT_LT_ININAME)->SetFocus();
		return ;
	}
	if ( strUserName.GetLength() <=0 )
	{
		MessageBox( _T("��ѡ���û��ļ��������޷��������룡") , _T("����") , MB_ICONWARNING );
		GetDlgItem(IDC_USER_INPORT_LT_USERNAME)->SetFocus();
		return ;
	}
	//�򿪼۸��
	//��һ�������ӵ�Excel���ݿ�
	CAdoConnection adoConnectX;
	CAdoRecordSet  adoRSX,adoRSX2,adoRSX3;
	if ( adoConnectX.ConnectExcel(strJGName) )
	{
		adoRSX.SetAdoConnection(&adoConnectX);
		adoRSX2.SetAdoConnection(&adoConnectX);
		adoRSX3.SetAdoConnection(&adoConnectX);

		adoRSX.Open(_T("select * from [Sheet1$A1:IV65536]") );
		adoRSX2.Open(_T("select * from [Sheet2$A1:IV65536]") );
		adoRSX3.Open(_T("select * from [Sheet3$A1:IV65536]") );

	}
	else
	{
		MessageBox( _T("�򿪼۸�����������Ƿ���ȷ�����Ѽ����롣") , _T("����") , MB_ICONWARNING );
		GetDlgItem(IDC_USER_INPORT_LT_JGNAME)->SetFocus();
		return ;
	}
	//���û���
	CFile fTalk;
	if ( !fTalk.Open( strUserName , CFile::modeRead ) )
	{
		MessageBox( _T("���û������������Ƿ���ȷ��") , _T("����") , MB_ICONWARNING );
		GetDlgItem(IDC_USER_INPORT_LT_USERNAME)->SetFocus();
		return ;
	}
	//�����ñ�
	CFile fTalk2;
	if ( !fTalk2.Open( strIniName , CFile::modeRead ) )
	{
		MessageBox( _T("�������ļ����������Ƿ���ȷ��") , _T("����") , MB_ICONWARNING );
		GetDlgItem(IDC_USER_INPORT_LT_ININAME)->SetFocus();
		return ;
	}
	if ( fTalk2.GetLength()<1000 )
	{
		fTalk2.Close();
		MessageBox( _T("�����ļ����ݹ��٣������Ƿ���ȷ��") , _T("����") , MB_ICONWARNING );
		GetDlgItem(IDC_USER_INPORT_LT_ININAME)->SetFocus();
		return ;
	}
	fTalk2.Close();



		TCHAR szPNBuf[1024];
		TCHAR szName[1024];
		TCHAR szName2[1024];
		long lLineCount=0;
		long lNameCount=0;
		long lJGCount=0;
		CString str;
		DWORD dwBeginTime = ::GetTickCount();
		
#ifdef UNICODE
		TCHAR szTemp[1024]={0};
		char  szTempA[1024]={0};
		char  szPNBuf2[1024]={0};
#endif
		Send_User Luser;
		while (true)
		{
			memset( szPNBuf , 0 , sizeof( szPNBuf ) );
#ifdef UNICODE
			if ( ReadLine( &fTalk , "\n", szPNBuf2 , sizeof( szPNBuf2 )-5 ) )
			{
				_tcscpy(szPNBuf,CAdoRecordSet::Ado_A2W(szPNBuf2,szTemp));
				
#else
				if ( ReadLine( &fTalk , "\n" , szPNBuf , sizeof( szPNBuf )-5 ) )  //����һ��
				{
#endif
					lLineCount ++;
					ExChar( szPNBuf , _T("\r") );
					ExChar( szPNBuf , _T("\n") );
					_tcscat(szPNBuf,_T("                     "));
					memset(&Luser,0,sizeof(Luser));
					for ( int i=0 ; i<3 ; i++ ) //��ʼ�ָ�����
					{
						memset(szName , 0 , sizeof(szName) );
						if ( GetReqMess( szPNBuf , szName , i , ' ' ) )
						{
							AllTrim(szName);
							ExChar(szName,_T("\r"));
							ExChar(szName,_T("\n"));
							ExChar(szName,_T("\t"));
							switch(i)
							{
							case 0:
								_tcscpy(Luser.szName , szName );
								break;
							case 1:
								_tcscpy(Luser.szMobile , szName );
								 break;
							case 2:
								{
									CString strMsg;
									TCHAR * p = NULL;
									for ( int j=0 ; j<10 ; j++ )
									{
										if ( j==0 )
											p = _tcstok(szName , _T("��") );
										else
											p = _tcstok(NULL , _T("��") );

										if ( p )
										{
											long lBM=0;
											long lH=0;
											long lL=0;
											long lSH=0;
											long lSL=0;
											GetPrivateProfileString(p, _T("����"), _T("0"), szName2, sizeof(szName2), strIniName);
											lBM = _ttol(szName2);
											GetPrivateProfileString(p, _T("������"), _T("0"), szName2, sizeof(szName2), strIniName);
											lH = _ttol(szName2);
											GetPrivateProfileString(p, _T("������"), _T("0"), szName2, sizeof(szName2), strIniName);
											lL = _ttol(szName2);
											GetPrivateProfileString(p, _T("������"), _T("0"), szName2, sizeof(szName2), strIniName);
											lSH = _ttol(szName2);
											GetPrivateProfileString(p, _T("������"), _T("0"), szName2, sizeof(szName2), strIniName);
											lSL = _ttol(szName2);

											if ( lBM>0 && lH>0 && lL>0 && lSH>0 && lSL>0 ) //������ȷ
											{
												lJGCount ++;
												try
												{
													//��ȡ����
													CAdoRecordSet  * pAdo=&adoRSX;
													CString strBJ;
													CString strJD;
													if ( lBM==2 ) //��2
														pAdo=&adoRSX2;
													if ( lBM==3 ) //��3
														pAdo=&adoRSX3;
													//ȡ����
													pAdo->Move(lH-2);
													pAdo->GetCollect(lL-1,strBJ);strBJ.TrimLeft(),strBJ.TrimRight();
													strMsg += CString(p);
													strMsg += strBJ;
													
													if ( this->m_B_JD.GetCheck() )
													{
														//ȡ�ǵ�
														pAdo->Move(lSH-2);
														pAdo->GetCollect(lSL-1,strJD);strJD.TrimLeft(),strJD.TrimRight();
														
														if ( strJD.GetLength()<=0 )
															strJD = _T("+0");
														strMsg += strJD;
													}
												}
												catch(...)
												{

												}

											}

										}
										else
										{
											break;
										}
									}
									if ( strMsg.GetLength()>0 )
										_tcscpy(Luser.szBZ , strMsg );
								}
								break;
							}
						}
						else
						{
							break;
						}
					}

					if ( _tcslen(Luser.szMobile)>0 )
					{
						//�����û�
						m_pDlgSend->AddUser(Luser , -1);
						lNameCount++;
					}
				}
				else
				{
					break;
				}
			}

		str.Format( _T("���뱨�۳ɹ�������ʱ%d��!\r\n�����¼����%d\r\n���뱨������%d\r\n����ɹ������Զ�����Ϊ�����ŷ�ʽ���͡�\r\n����ɹ������Զ�����Ϊ���ͱ�ע��ʽ���벻Ҫ���ģ�") , (GetTickCount()-dwBeginTime)/1000 ,lNameCount,lJGCount);
		MessageBox( str , _T("��ʾ") , MB_ICONINFORMATION );

	
	CDialog::OnOK();
}

long DLG_User_Inport_LT::ReadLine(CFile *file, char *pSplit, char *szBuf, long lLen)
{
	int i,j;
	int lLineCount = 0;
	int lSplitLen = strlen(pSplit);
	char c;
	i = 0;
	while ( true )
	{
		j = file->Read( &c , 1 );
		if ( j < 1 )
		{
			szBuf[i]=0;
			return i;
		}
		if ( i >= lLen-1 )
		{
			szBuf[i] = 0;
			return i;
		}
		szBuf[i] = c;
		i++;
		if ( !memcmp( szBuf+i-lSplitLen , pSplit , lSplitLen ) ) //���б�־
		{
			szBuf[i] = 0;
			return i;
		}
	}
	return 0;
}