// DLG_HZB_Export.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_HZB_Export.h"

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

/////////////////////////////////////////////////////////////////////////////
// DLG_HZB_Export dialog


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

	m_pList = NULL;
	m_pItem = NULL;
	m_lItemCount=0;
	m_lAddJH  = -1;
}


void DLG_HZB_Export::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_HZB_Export)
	DDX_Control(pDX, IDC_USER_EXPORT_LIST, m_L_List);
	DDX_Control(pDX, IDC_USER_EXPORT_FILENAME, m_E_FileName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_HZB_Export, CDialog)
	//{{AFX_MSG_MAP(DLG_HZB_Export)
	ON_BN_CLICKED(IDC_USER_EXPORT_SELALL, OnUserExportSelall)
	ON_BN_CLICKED(IDC_USER_EXPORT_CLEAR, OnUserExportClear)
	ON_BN_CLICKED(IDC_USER_EXPORT_FILENAME_SEL, OnUserExportFilenameSel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_HZB_Export message handlers

BOOL DLG_HZB_Export::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	InitList();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void DLG_HZB_Export::InitList()
{
	//m_wndList.SetHeadings(_T("���,50;  ��ҵ����,200;�ط���,60;������,80;�Ʒ���,80;�ܷ�����,80;�������,80;����,80;ת��,80;�ճ�����,80;�����ʲ�,80;����,80;���ֶ���,80;����ͨ,80;"));

	m_L_List.Init(true,-1,-1,-1);
	m_L_List.InsertColumn( 0 , _T("˳��")     , LVCFMT_LEFT , 40  , 0);
	m_L_List.InsertColumn( 1 , _T("  �ֶ���") , LVCFMT_LEFT , 120 , 1);
	m_L_List.SetTextColor( RGB(0,0,255) );

	TCHAR Buf[256]={0};
	for ( int i = 0 ; i<m_lItemCount ; i++ )
	{
		m_L_List.InsertItem( i , _itot(i+1,Buf,10) );
		m_L_List.SetItemText(i , 1 , m_pItem[i].szItem );
		m_L_List.SetItemData(i , i );  //���������Ϊ��˳�����ڴ���
	}
	m_L_List.CheckAll();
	m_L_List.NoverCheck();
	m_L_List.ReShowSort();

	if ( m_lAddJH==-2 )
	{
		m_L_List.SetCheck(0,false);
		m_L_List.SetCheck(1,false);
		m_L_List.SetCheck(2,false);
		m_L_List.SetCheck(3,false);
		m_L_List.SetCheck(4,false);
		m_L_List.SetCheck(7,false);
		m_L_List.SetCheck(9,false);
		m_L_List.SetCheck(10,false);
		m_L_List.SetCheck(11,false);
		m_L_List.SetCheck(13,false);
	}
}

void DLG_HZB_Export::OnUserExportSelall() 
{
	m_L_List.CheckAll();	
}

void DLG_HZB_Export::OnUserExportClear() 
{
	m_L_List.ClearAll();
}

void DLG_HZB_Export::OnOK() 
{
	long lItemCount = m_L_List.GetItemCount();
	long lExPortItem[50];memset(&lExPortItem,0,sizeof(lExPortItem));
	for ( int j=0 ; j < 50 ; j++ ) lExPortItem[j] = -1;
	long lCheckCount = 0;
	for ( int i=0 ; i<lItemCount ; i++ )
	{
		if ( m_L_List.GetCheck(i) )
		{
			lExPortItem[lCheckCount] = m_L_List.GetItemData(i) ;
			lCheckCount ++;
		}
	}

	if ( lCheckCount <=0 )
	{
		MessageBox( _T("��������ߵ��ֶ��б���ѡ��һ�����������ֶΡ�") , _T("ѡ�����") , MB_OK|MB_ICONWARNING );
		return ;
	}
	TCHAR szFileName[512];
	m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) );
	if ( _tcslen(AllTrim(szFileName)) <=0 )
	{
		MessageBox( _T("��������뵼�����ļ�����") , _T("����") , MB_OK|MB_ICONWARNING );
		m_E_FileName.SetFocus();
		return ;
	}

	CFile fTalk;
	if ( !fTalk.Open( szFileName , CFile::modeReadWrite|CFile::modeCreate ) )
	{
		TCHAR Buf[512];
		_stprintf( Buf , _T("�����ļ�:%s\n��������!") , szFileName );
		MessageBox( Buf , _T("����") , MB_ICONWARNING|MB_OK );
		return ;
	}
	
	long lAdrCount = m_pList->GetItemCount();
	TCHAR Buf[1024];
	TCHAR Buf2[256];
	long lRecnCount= 0;  //�ܼ�¼��
	long lFileSize = 0;  //�ļ����ֽ���
	long lBufLen   = 0;
	for ( i = 0; i<lAdrCount ; i++ )
	{
		memset(Buf , 0 , sizeof(Buf) );
		for( int j = 0 ; j< lCheckCount ; j++ )  //������ѡ�е��ֶΣ�ȡͨѶ¼���ݽ��б��档
		{
			memset(Buf2 , 0 , sizeof(Buf2) );
			////m_wndList.SetHeadings(_T("���,50;  ��ҵ����,200;�ط���,60;������,80;�Ʒ���,80;�ܷ�����,80;�������,80;����,80;ת��,80;�ճ�����,80;�����ʲ�,80;����,80;���ֶ���,80;����ͨ,80;"));
			switch( lExPortItem[j] )
			{
			case 0:  //��ҵ����
				m_pList->GetItemText( i , 1 , Buf2 , sizeof(Buf2) );
				break;
			case 1:  //�dz�
				if ( m_lAddJH == 1 )
				{
					Buf2[0]='#';
					m_pList->GetItemText( i , 2 , Buf2+1 , sizeof(Buf2) );
				}
				else
				{
					m_pList->GetItemText( i , 2 , Buf2 , sizeof(Buf2) );
				}
				break;
			case 2:  //����
				m_pList->GetItemText( i , 3 , Buf2 , sizeof(Buf2) );
				break;
			case 3:  //ְ��
				m_pList->GetItemText( i , 4 , Buf2 , sizeof(Buf2) );
				break;
			case 4:  //�绰
				m_pList->GetItemText( i , 5 , Buf2 , sizeof(Buf2) );
				break;
			case 5:  //�ֻ�
				m_pList->GetItemText( i , 6 , Buf2 , sizeof(Buf2) );
				break;
			case 6:  //Email
				m_pList->GetItemText( i , 7 , Buf2 , sizeof(Buf2) );
				break;
			case 7:  //Email
				m_pList->GetItemText( i , 8 , Buf2 , sizeof(Buf2) );
				break;
			case 8:  //Email
				m_pList->GetItemText( i , 9 , Buf2 , sizeof(Buf2) );
				break;
			case 9:  //Email
				m_pList->GetItemText( i , 10 , Buf2 , sizeof(Buf2) );
				break;
			case 10:  //Email
				m_pList->GetItemText( i , 11 , Buf2 , sizeof(Buf2) );
				break;
			case 11:  //Email
				m_pList->GetItemText( i , 12 , Buf2 , sizeof(Buf2) );
				break;
			case 12:  //Email
				m_pList->GetItemText( i , 13 , Buf2 , sizeof(Buf2) );
				break;
			case 13:  //Email
				m_pList->GetItemText( i , 14 , Buf2 , sizeof(Buf2) );
				break;
			case 14:  //Email
				m_pList->GetItemText( i , 15 , Buf2 , sizeof(Buf2) );
				break;
			}
			ExChar(Buf2,_T(","));
			ExChar(Buf2,_T("\r"));
			ExChar(Buf2,_T("\n"));
			ExChar(Buf2,_T("\t"));
			_tcscat(Buf , Buf2 );
			if ( j < lCheckCount-1 ) //���һ�����ü�_T(",")��
				_tcscat(Buf , _T(",") );
		}
		_tcscat(Buf , _T("\r\n") );  //����
		CStringA strA;
#ifdef _UNICODE
		strA = CW2A(Buf);
#else
		strA = Buf;
#endif
		lBufLen = strA.GetLength();
		fTalk.Write( strA.GetBuffer() , lBufLen );
		lRecnCount++;                        //ȡ���ܼ�¼��
		lFileSize  = lFileSize + lBufLen ;   //ȡ�����ֽ���
	}
	fTalk.Close();
	this->EndWaitCursor();
	_stprintf(Buf , _T("���������б��ɹ����������£�\n�����ļ�����:TXT\n������¼��:%d\n�����ֽ���:%d\n�����ļ���:%s") , lRecnCount , lFileSize , szFileName);
	MessageBox( Buf , _T("�����ɹ�"),MB_OK|MB_ICONINFORMATION );
	
	CDialog::OnOK();
}

void DLG_HZB_Export::OnUserExportFilenameSel() 
{
	TCHAR szFile[256] = { 0 };
	TCHAR szFileB[ 256] = { 0 };
	TCHAR szFilter[ 256 ] = { 0 };
	TCHAR szAllFile[ 50 ] = { 0 };
	*szFileB = NULL;
	if ( m_lAddJH == 1 )
		_stprintf( szFile , _T("HZB.csv") );
	if ( m_lAddJH == -2 )
		_stprintf( szFile , _T("List.csv") );
	if ( m_lAddJH == -3 )
		_stprintf( szFile , _T("Pay.csv") );
	_stprintf( szFilter , _T("Excel csv(*.csv)\0"));
	_tcsncpy( (szFilter +  _tcslen( szFilter ) + 1 ) , _T("*.csv") , 5);
	//memset( (szFilter +  _tcslen( szFilter ) + 1 +5 ) , 0 , 2 );
	//���������ļ�
	_stprintf( szAllFile , _T("�����ļ�(*.*)\0"));
	_stprintf( ( szAllFile +  _tcslen( szAllFile ) + 1 ) , _T("*.*") , 3);
	//memset( ( szAllFile +  _tcslen( szAllFile ) + 1 + 3 ) , 0 , 2 );
	memcpy( szFilter + _tcslen( szFilter ) + 1 + 5 + 1 ,
		szAllFile , (_tcslen( szAllFile) + 1 + 5 + 3)*sizeof(TCHAR));
	
	OPENFILENAME  sOpen;
	sOpen.lStructSize = sizeof( sOpen );
	sOpen.hwndOwner = this->m_hWnd ;
	sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
	sOpen.lpstrFilter = szFilter;
	sOpen.lpstrDefExt = _T("*.csv");
	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 ( ::GetSaveFileName( &sOpen ) )
	{
		m_E_FileName.SetWindowText(sOpen.lpstrFile);
	}		
}

void DLG_HZB_Export::SetParam(CListCtrl *pList)
{
	m_pList = pList;
}

void DLG_HZB_Export::SetListItem( SortItem * pItem , long lCount , long lAddJH)
{
	m_pItem = pItem;
	m_lItemCount  = lCount;
	m_lAddJH = lAddJH;
}