// ListDlg.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "ListDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CListDlg dialog

#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_SmsLogSee.h"
#include "DLG_HZB_Export.h"
#include "DLG_Corp_Oper_Open.h"
#include "DLG_BBS_Send.h"

CListDlg::CListDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CListDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CListDlg)
	m_lCorp = -1;
	m_tBegin = COleDateTime::GetCurrentTime();
	m_tEnd = COleDateTime::GetCurrentTime();
	m_lMobileType = -1;
	m_bOld = FALSE;
	m_lMsgType = -1;
	m_bJF = FALSE;
	m_lTop = -1;
	m_strMobile = _T("");
	//}}AFX_DATA_INIT
	m_bInit = false;
	m_bRefresh = false;
	//	m_bProcess = false;
	m_lQueryCorpID = 0;
	m_tBegin2 = COleDateTime::GetCurrentTime();
	m_tEnd2 = COleDateTime::GetCurrentTime();

	m_lQueryReSendID = 0;
}


void CListDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CListDlg)
	DDX_Control(pDX, IDC_LIST_MOBILE, m_E_Mobile);
	DDX_Control(pDX, IDC_LIST_CORPID, m_E_CorpID);
	DDX_Control(pDX, IDC_LIST_S1, m_S_S1);
	DDX_Control(pDX, IDC_LIST_CORP, m_L_Corp);
	DDX_Control(pDX, IDC_LIST_LIST, m_wndList);
	DDX_CBIndex(pDX, IDC_LIST_CORP, m_lCorp);
	DDX_DateTimeCtrl(pDX, IDC_LIST_TBEGIN, m_tBegin);
	DDX_DateTimeCtrl(pDX, IDC_LIST_TEND, m_tEnd);
	DDX_CBIndex(pDX, IDC_LIST_MOBILETYPE, m_lMobileType);
	DDX_Check(pDX, IDC_LIST_OLD, m_bOld);
	DDX_CBIndex(pDX, IDC_LIST_MSGYTYPE, m_lMsgType);
	DDX_Check(pDX, IDC_LIST_JF, m_bJF);
	DDX_CBIndex(pDX, IDC_LIST_TOP, m_lTop);
	DDX_Text(pDX, IDC_LIST_MOBILE, m_strMobile);
	DDV_MaxChars(pDX, m_strMobile, 15);
	//}}AFX_DATA_MAP
	DDX_DateTimeCtrl(pDX, IDC_LIST_TBEGIN2, m_tBegin2);
	DDX_DateTimeCtrl(pDX, IDC_LIST_TEND2, m_tEnd2);
}


BEGIN_MESSAGE_MAP(CListDlg, CDialog)
	//{{AFX_MSG_MAP(CListDlg)
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_LIST_QUERY, OnListQuery)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_LIST, OnDblclkListList)
	ON_BN_CLICKED(IDC_LIST_QUERY2, OnListQuery2)
	ON_NOTIFY(NM_RCLICK, IDC_LIST_LIST, OnRclickListList)
	//}}AFX_MSG_MAP
	ON_COMMAND(MENU_LIST_SEE      , On_User_See )
	ON_COMMAND(MENU_LIST_ADDBACK  , On_User_AddBack )
	ON_COMMAND(MENU_LIST_SENDBBS  , On_User_SendBBS )
	ON_COMMAND(MENU_LIST_CORPLIST , On_User_CorpList )
	ON_COMMAND(MENU_LIST_CORPOFF  , On_User_CorpOFF )
	ON_COMMAND(MENU_LIST_EXPORT   , On_User_Export )
	ON_COMMAND(MENU_LIST_COPY     , On_User_Copy )
	ON_COMMAND(MENU_LIST_RESORT   , On_User_Resort)
	ON_COMMAND(MENU_LIST_RESEND, On_User_ReSend)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CListDlg message handlers

BOOL CListDlg::ReShow(BOOL bRefresh)
{
#ifdef SMSMANAGER_KF
	if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
	{
		GetDlgItem(IDC_LIST_OLD)->ShowWindow(SW_HIDE);
		m_bOld = false;
	}


	if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
	{
		GetDlgItem(IDC_LIST_TOP)->EnableWindow(false);
		GetDlgItem(IDC_LIST_TBEGIN)->EnableWindow(false);
		GetDlgItem(IDC_LIST_TEND)->EnableWindow(false);
		GetDlgItem(IDC_LIST_TBEGIN2)->EnableWindow(false);
		GetDlgItem(IDC_LIST_TEND2)->EnableWindow(false);
	}

#endif

	ShowWindow( SW_SHOW );
	if ( bRefresh || !m_bRefresh )
	{
		RefreshInfo();
	}
	return true;
}

BOOL CListDlg::ReHide()
{
	ShowWindow( SW_HIDE );
	return true;
}

BOOL CListDlg::RefreshInfo()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
	{
		return false;
	}
	m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);
	return true;
}

BOOL CListDlg::ProcessSocket(Socket_Head *pHead)
{
	CString strTemp;
	//ȡ������Ϣ
	if (pHead->lFuncType == SMSFUNC_CORP_NAME)
	{
		m_bRefresh = true;  //�Ѿ�ˢ�¹�
		ANS_Corp_Name     * pCorp = (ANS_Corp_Name *)pHead->pFrame;
		ANS_Corp_NameData * pData = (ANS_Corp_NameData *)(pHead->pFrame+sizeof(ANS_Corp_Name));
		m_L_Corp.ResetContent();  //ɾ��ԭ���е���ҵ
		m_L_Corp.AddString( _T("������ҵ") );
		this->Close_Corp();              //�ر�ԭ����
		for ( int i=0;i<pCorp->lCount;i++ )
		{
			ANS_Corp_NameData * pNewData = new ANS_Corp_NameData;
			*pNewData = *pData;
			POSITION pos = m_Corp.AddTail(pNewData);
			strTemp.Format( _T("%d-%s"),pData->lCorpID,pData->szCorpName);
			long lItem = m_L_Corp.AddString( strTemp );
			m_L_Corp.SetItemData( lItem , (DWORD)pos);
			pData ++;
		}
		m_L_Corp.SetCurSel(0);
		return true;
	}
	//ȡ�嵥
	if (pHead->lFuncType == SMSFUNC_LIST)
	{
	#ifdef SMSCENTER_NX
		GetDlgItem(IDC_LIST_QUERY)->EnableWindow(true);
	#endif

		ANS_List * pList = (ANS_List *)pHead->pFrame;
		ANS_ListData * pData = (ANS_ListData *)(pHead->pFrame+sizeof(ANS_List));
		CString str,strTemp;
		strTemp.Format( _T("��ѯ��ҵ (%d/%d)") , pList->lPageCount,pList->lPageAll );
		m_S_S1.SetWindowText( strTemp );
		//���ӵ�List
		long lCount = m_wndList.GetItemCount();
		long lIconIndex = 0;
		TCHAR szBuf[512]={0};
		for ( int i = 0 ; i< pList->lCount;i++)
		{
			ANS_ListData * pNewData = new ANS_ListData;
			*pNewData = *pData;
			POSITION pos = m_ListData.AddTail(pNewData);

			//m_wndList.SetHeadings(_T("���,40; �� ��,80;״̬,50;��ҵID,60;������,70; ���ͺ���,120; ������,70; ���պ���,120;  �ύʱ��,150;  ����ʱ��,150;  ����ʱ��,150;     ��������,1000;    ��ϢID,120;"));
			lIconIndex = 0;
			if (pData->lReSendCount > 0)
				lIconIndex = 1;
			m_wndList.InsertItem( lCount+i,_itot(lCount+i+1,szBuf,10), lIconIndex);
			_tcscpy( szBuf , _T("δ֪") );
			switch( pData->lSmsType )
			{
			case SMSTYPE_SEND:
				 _tcscpy(szBuf , _T("�� ��") );
				 break;
			case SMSTYPE_ZF:
				 _tcscpy(szBuf , _T("ת ��") );
				 break;
			case SMSTYPE_ALARM:
				 _tcscpy(szBuf , _T("�ճ�����") );
				 break;
			case SMSTYPE_EMAIL:
				 _tcscpy(szBuf , _T("�ʼ�֪ͨ") );
				 break;
			case SMSTYPE_RECV:
				 _tcscpy(szBuf , _T("�� ��") );
				 break;
			case SMSTYPE_SP:
				 _tcscpy(szBuf , _T("��ֵҵ��") );
				 break;
			case SMSTYPE_SWT:
				 _tcscpy(szBuf , _T("����ͨ") );
				 break;
			}
			m_wndList.SetItemText(lCount+i,1,szBuf);
#if defined(SMSMANAGER_KF) || defined(SMSCENTER_NX)
			_tcscpy( szBuf , _T("δ֪") );
			switch( pData->lStatus )
			{
			case 0:
				 _tcscpy(szBuf , _T("�"));
				 break;
			case 1:
				 _tcscpy(szBuf , _T("���"));
				 break;
			case 7:
				 _tcscpy(szBuf , _T("���ʧ��"));
				 break;
			case 10:
				_tcscpy(szBuf , _T("���ͳɹ�"));
				 break;
			case 12:
				 _tcscpy(szBuf , _T("���ճɹ�"));
				 break;
			case 11:
				 _tcscpy(szBuf , _T("����ʧ��"));
				 break;
			case 13:
				 _tcscpy(szBuf , _T("����ʧ��"));
				 break;
			}
			m_wndList.SetItemText(lCount+i,2,szBuf);
#else
			_stprintf(szBuf , _T("%4d") , pData->lStatus );
			m_wndList.SetItemText(lCount+i,2,szBuf);
#endif
			_stprintf(szBuf , _T("%d") , pData->lCorpID );
			m_wndList.SetItemText(lCount+i,3,szBuf);
			m_wndList.SetItemText(lCount+i,4,pData->szSender);
			_tcscpy(szBuf , pData->szSendNum );
#ifdef SMSMANAGER_KF
			//szBuf[4]='*';szBuf[5]='*';szBuf[6]='*';
#endif
			m_wndList.SetItemText(lCount+i,5,szBuf);
			m_wndList.SetItemText(lCount+i,6,pData->szRecver);
			_tcscpy(szBuf , pData->szRecvNum );
#ifdef SMSMANAGER_KF
			szBuf[4]='*';szBuf[5]='*';szBuf[6]='*';
#endif
			m_wndList.SetItemText(lCount+i,7,szBuf);

			switch (pData->lRecvNumType)
			{
			case 0:
				str = _T("�ƶ�");
				break;
			case 1:
				str = _T("��ͨ");
				break;
			case 2:
				str = _T("С��ͨ");
				break;
			case 3:
				str = _T("����");
				break;
			case 4:
				str = _T("����");
				break;
			default:
				str = _T("");
				break;
			}
			m_wndList.SetItemText(lCount + i, 8, str);

			_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tSubTime.wYear, pData->tSubTime.wMonth,pData->tSubTime.wDay,pData->tSubTime.wHour,pData->tSubTime.wMinute,pData->tSubTime.wSecond );
			m_wndList.SetItemText(lCount+i,9,szBuf);
			_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tSendTime.wYear, pData->tSendTime.wMonth,pData->tSendTime.wDay,pData->tSendTime.wHour,pData->tSendTime.wMinute,pData->tSendTime.wSecond );
			m_wndList.SetItemText(lCount+i,10,szBuf);
			_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tRecvTime.wYear,pData->tRecvTime.wMonth,pData->tRecvTime.wDay,pData->tRecvTime.wHour,pData->tRecvTime.wMinute,pData->tRecvTime.wSecond );
			m_wndList.SetItemText(lCount+i,11,szBuf);
			_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tTimerTime.wYear,pData->tTimerTime.wMonth,pData->tTimerTime.wDay,pData->tTimerTime.wHour,pData->tTimerTime.wMinute,pData->tTimerTime.wSecond );
			m_wndList.SetItemText(lCount+i,12,szBuf);
			m_wndList.SetItemText(lCount+i,13,pData->szMsg);
#ifdef SMSCENTER_NX
			_stprintf(szBuf,_T("%s") , pData->szRecvStatus);
#else
			_stprintf(szBuf,_T("%-32s;%-4d;%s") , pData->szMsgID,pData->lSendRet,pData->szRecvStatus);
#endif
			m_wndList.SetItemText(lCount+i,14,szBuf);

			m_wndList.SetItemData(lCount+i,(DWORD)(pos) );
			pData++;
		}
//		if ( m_bProcess )  //�ǵ����û�����Ҫ��ʾ������,��������һ��
//		{
//			m_Process.SetProcess( pList->lPageAll , pList->lPageCount );
//		}
		return true;
	}
	if (pHead->lFuncType == SMSFUNC_BACK_ADD)
	{
		ANS_Back_Add * pBack = (ANS_Back_Add *)pHead->pFrame;

		CString str;
		if ( pBack->bOK )
		{
			str.Format( _T("���������ӳɹ���%d->%s!"),pBack->lCorpID , pBack->szMobile );
			MessageBox( str , _T("��ʾ") , MB_ICONINFORMATION );
		}
		else
		{
			str.Format( _T("����������ʧ�ܣ����飡"));
			MessageBox( str , _T("��ʾ") , MB_ICONINFORMATION );
		}

		return true;
	}


	return false;
}

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

	//ȡ�ù��ò���
	//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
	this->GetParent()->GetParentFrame();
	m_pMainFrame = (CMainFrame*)this->GetParent()->GetParentFrame();
	m_pSocket = &m_pMainFrame->m_Socket;


#ifdef SMSMANAGER_KF
	GetDlgItem(IDC_LIST_S1)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_LIST_CORP)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_LIST_QUERY2)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_LIST_CORPID)->ShowWindow(SW_HIDE);
	//GetDlgItem(IDC_LIST_OLD)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_LIST_JF)->ShowWindow(SW_HIDE);

	//GetDlgItem(IDC_LIST_S2)->ShowWindow(SW_HIDE);
	//GetDlgItem(IDC_LIST_MOBILETYPE)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_LIST_MSGYTYPE)->ShowWindow(SW_HIDE);


#endif

	//��ʼ��List
	m_Image.Create(16, 16, ILC_COLOR16 | ILC_MASK, 5, 5);
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_NULL));
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LIST));
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("���,50; �� ��,80;״̬,70;��ҵID,60;������,70; ���ͺ���,130; ������,70; ���պ���,130;��Ӫ��,70;  �ύʱ��,150;  ����ʱ��,150;  ����ʱ��,150;  ��ʱʱ��,150;     ��������,1000;    ��ע,400;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);

	m_bInit = true;

	/*
	//Ĭ��ȡ���µ�����
	SYSTEMTIME t; ::GetLocalTime(&t);
	t.wDay = 1;//��1����
	t.wMonth = t.wMonth-1;
	if ( t.wMonth <=0 )
	{
		t.wMonth = 12;
		t.wYear  = t.wYear-1;
	}
	m_tBegin.SetDate( t.wYear,t.wMonth,t.wDay );  //��ʼ
	if ( t.wMonth == 1 ||
		 t.wMonth == 3 ||
		 t.wMonth == 5 ||
		 t.wMonth == 7 ||
		 t.wMonth == 8 ||
		 t.wMonth == 10 ||
		 t.wMonth == 12 )
	{
		 t.wDay = 31;
	}
	else
		if (t.wMonth == 2 )
			t.wDay = 28;
		else
			t.wDay = 30;
	m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//����
	*/

	SYSTEMTIME t; ::GetLocalTime(&t);
	m_tBegin.SetDate(t.wYear, t.wMonth, t.wDay);  //��ʼ
	m_tEnd.SetDate(t.wYear, t.wMonth, t.wDay);//����
	if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
	{
		COleDateTime tP = COleDateTime::GetCurrentTime() - COleDateTimeSpan(2, 0, 0, 0);
		m_tBegin.SetDate(tP.GetYear(), tP.GetMonth(), tP.GetDay());  //��ʼ
	}

	t.wHour=0;
	t.wMinute=0;
	t.wSecond=0;
	m_tBegin2.SetTime(t.wHour,t.wMinute,t.wSecond);
	t.wHour=23;
	t.wMinute=59;
	t.wSecond=59;
	m_tEnd2.SetTime(t.wHour,t.wMinute,t.wSecond);

	m_lMobileType = 0; //Ĭ�ϲ�ѯ���к���
	m_lMsgType=0;      //Ĭ�ϲ�ѯ�������͵Ķ���
	m_lTop = 1;        //Ĭ����ʾǰ200������

	UpdateData(false);

	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CListDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	if ( m_bInit )
	{
		CRect rect;
		m_S_S1.GetWindowRect(&rect);
		m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5);
	}	
}

void CListDlg::Close()
{
	Close_Corp();
	Close_ListData();
}

void CListDlg::OnListQuery() 
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
	{
		return ;
	}
	UpdateData(true);

	m_tBegin.SetDateTime(m_tBegin.GetYear(),m_tBegin.GetMonth(),m_tBegin.GetDay(),m_tBegin2.GetHour(),m_tBegin2.GetMinute(),m_tBegin2.GetSecond());
	m_tEnd.SetDateTime(m_tEnd.GetYear(),m_tEnd.GetMonth(),m_tEnd.GetDay(),m_tEnd2.GetHour(),m_tEnd2.GetMinute(),m_tEnd2.GetSecond());

	if ( m_tEnd < m_tBegin )
	{
		MessageBox( _T("��ѯ����ʱ�䲻��С����ʼʱ�䣬�����!") , _T("����") , MB_ICONWARNING );
		return ;
	}
	REQ_List * pList = new REQ_List;memset(pList,0,sizeof(REQ_List));

	if (m_lQueryReSendID>0 && m_strQueryReSendMobile.GetLength() > 0)
	{
		pList->lReSendListSendID = m_lQueryReSendID;
		_tcscpy(pList->szMobile, m_strQueryReSendMobile);

		m_lQueryReSendID = 0;
		m_strQueryReSendMobile = _T("");
	}
	else
	{
		if (m_strMobile.GetLength() > 8)
			_tcscpy(pList->szMobile, m_strMobile);
	}
//	m_E_Mobile.SetWindowText( _T("") );

#ifdef SMSMANAGER_KF
	if ( m_lQueryCorpID )
	{
		pList->lCorpID = m_lQueryCorpID;
		pList->lMsgType = -1;        //��ѯ���еļ�¼
		m_lQueryCorpID = 0;
		_tcscpy(pList->szMobile, _T("") );
	}
	else
	{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB,false) )
	{
		if ( m_strMobile.GetLength()<8 )
		{
			MessageBox( _T("���������ֻ������ѯ�嵥!") , _T("����") , MB_ICONWARNING );
			GetDlgItem(IDC_LIST_MOBILE)->SetFocus();
			return ;
		}
		
	}
		pList->lCorpID = -1;
		pList->lMsgType = 4;        //��ѯ���յļ�¼
	}
	m_tBegin.GetAsSystemTime( pList->tBegin );
	m_tEnd.GetAsSystemTime( pList->tEnd );
	pList->lMobileType = m_lMobileType-1;  //�ֻ�����
	pList->bOld = m_bOld;            //�Ƿ��ѯ������
	pList->bJF  = false;             //�Ƿ����ѯ�Ʒѵ�

	if ( _tcslen(pList->szMobile)>8 )
	{
		pList->lCorpID = -1;
		pList->lMsgType = -1;        //��ѯ���еļ�¼
		pList->lMobileType = -1;  //�ֻ�����
	}
#else
	if ( m_lQueryCorpID )
	{
		pList->lCorpID = m_lQueryCorpID;
		pList->lMsgType = -1;        //��ѯ���еļ�¼
		m_lQueryCorpID = 0;
		_tcscpy(pList->szMobile, _T(""));
	}
	else
	{
		if ( m_lCorp <= 0 )  //ѡ��������ҵ
		{
			pList->lCorpID = -1;
		}
		else
		{
			POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
			POSITION pos2 = pos;
			ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
			if (pData)
			{
				pList->lCorpID = pData->lCorpID;
			}
			else
			{
				return;
			}
		}
		pList->lMobileType = m_lMobileType-1;  //�ֻ�����
		pList->lMsgType    = m_lMsgType-1;     //��������
		pList->bOld = m_bOld;            //�Ƿ��ѯ������
		pList->bJF  = m_bJF;             //�Ƿ����ѯ�Ʒѵ�
	}
	m_tBegin.GetAsSystemTime( pList->tBegin );
	m_tEnd.GetAsSystemTime( pList->tEnd );
#endif
	switch ( m_lTop )
	{
	case 1:
		pList->lTop = 200;
		break;
	case 2:
		pList->lTop = 500;
		break;
	case 3:
		pList->lTop = 1000;
		break;
	case 4:
		pList->lTop = 2000;
		break;
	case 5:
		pList->lTop = 5000;
		break;
	case 0:
	default:
		pList->lTop = -1;
		break;
	}
	this->Close_ListData();              //�ر�ԭ����
	m_wndList.ShowWindow( SW_HIDE ); //Ϊ�˼ӿ���ʾ�ٶ�
	m_wndList.DeleteAllItems();  //��ɾ�����м�¼
	m_pMainFrame->SendFrame(SMSFUNC_LIST,(BYTE*)pList,sizeof(REQ_List));
//	m_bProcess = true;
//	m_Process.DoModal();
//	m_bProcess = false;
	m_wndList.ShowWindow( SW_SHOW ); //Ϊ�˼ӿ���ʾ�ٶ�
	m_S_S1.SetWindowText( _T("��ѯ��ҵ") );

#ifdef SMSCENTER_NX
	GetDlgItem(IDC_LIST_QUERY)->EnableWindow(false);
#endif
	return ;	
}

void CListDlg::OnDblclkListList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	On_User_See();
}

void CListDlg::OnListQuery2() 
{
	CString strTemp;
	CString strFind;
	m_E_CorpID.GetWindowText(strFind);
	if ( strFind.GetLength()<=0 )
		return ;
	long lSel   = m_L_Corp.GetCurSel();
	long lCount = m_L_Corp.GetCount();
	for ( int i=lSel+1 ; i<lCount ; i++ )
	{
		m_L_Corp.GetLBText(i,strTemp);
		if ( strTemp.Find(strFind)>=0 )
		{
			m_L_Corp.SetCurSel(i);
			return ;
		}
	}
	for ( i=0 ; i<lSel ; i++ )
	{
		m_L_Corp.GetLBText(i,strTemp);
		if ( strTemp.Find(strFind)>=0 )
		{
			m_L_Corp.SetCurSel(i);
			return ;
		}
	}

}

void CListDlg::OnRclickListList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu();
}

void CListDlg::ShowRMenu()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
	{
		return ;
	}

#if defined(SMSCENTER_NX) && !defined(SMSCENTER_GDDX)
	//ũ�Ű汾�����ݲ�ͬȨ�޻��ֿͷ�����������汾
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_RESETPASSWD,false) ) //��СȨ��
	{
		return ;
	}
#endif

	CMenu menu;
	menu.CreatePopupMenu();
	BOOL bLock = false;
	long lItem = this->GetCurrentSelected();
	//����
	if ( lItem>=0 )
	{
		POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
		POSITION pos2 = pos;
		ANS_ListData* pData = m_ListData.GetNext(pos);
		if (!pData)
			return;


		menu.AppendMenu(MF_STRING     , MENU_LIST_SEE    , _T(" �� �� ") );
		if (m_pMainFrame->GetUserPurview(PURVIEW_LIST, false))
		{
			menu.AppendMenu(MF_STRING, MENU_LIST_CORPLIST, _T(" ��ѯ����ҵ�嵥 "));
			if (pData->lReSendCount > 0)
			{
				menu.AppendMenu(MF_STRING, MENU_LIST_RESEND, _T(" ��ѯ�˶����ط���¼ "));
			}
		}

		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING     , MENU_LIST_CORPOFF , _T(" ���ô���ҵ ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING     , MENU_LIST_ADDBACK, _T(" ���ӵ������� ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING     , MENU_LIST_SENDBBS, _T(" ���ͺ���������֪ͨ ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_SEE    , _T(" �� �� ") );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_CORPLIST, _T(" ��ѯ����ҵ�嵥 ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_CORPOFF , _T(" ���ô���ҵ ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_ADDBACK, _T(" ���ӵ������� ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_SENDBBS, _T(" ���ͺ���������֪ͨ ") );
	}
	menu.AppendMenu(MF_SEPARATOR );
	menu.AppendMenu(MF_STRING     , MENU_LIST_COPY    , _T(" �� �� ") );
	menu.AppendMenu(MF_STRING     , MENU_LIST_RESORT, _T(" ������� "));
#ifndef SMSMANAGER_KF
	menu.AppendMenu(MF_SEPARATOR );
	menu.AppendMenu(MF_STRING     , MENU_LIST_EXPORT    , _T(" �� �� ") );
#endif
	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

long CListDlg::GetCurrentSelected()
{
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	if ( pos )
	{
		return m_wndList.GetNextSelectedItem(pos);
	}
	return -1;
}

void CListDlg::On_User_See()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
	{
		return ;
	}

	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_ListData * pData = m_ListData.GetNext( pos );
	if (!pData)
		return ;

	SMS_See sms={0};


	_stprintf(sms.szCorpID, _T("%d"), pData->lCorpID);

	CString strType = _T("δ֪");
	switch( pData->lSmsType )
	{
	case SMSTYPE_SEND:
		strType= _T("�����");
		break;
	case SMSTYPE_ZF:
		strType = _T("ת ��");
		break;
	case SMSTYPE_ALARM:
		strType = _T("�ճ�����");
		break;
	case SMSTYPE_EMAIL:
		strType = _T("�ʼ�֪ͨ");
		break;
	case SMSTYPE_RECV:
		strType = _T("�ظ�����");
		break;
	case SMSTYPE_SP:
		strType = _T("��ֵҵ��");
		break;
	case SMSTYPE_SWT:
		strType = _T("����ͨ");
		break;
	}
	
	CString strStatus = _T("δ֪");
	switch (pData->lStatus)
	{
	case SMSTYPE_SEND:
		strStatus = _T("�ύ�ɹ�");
		break;
	case SEND_STATUS_SUB_FILT:
		strStatus = _T("�����");
		break;
	case SEND_STATUS_SUB_ERROR:
	case SEND_STATUS_SUB_USERNOSMS:
	case SEND_STATUS_SUB_CORPNOSMS:
	case SEND_STATUS_SUB_CORPOVRDATE:
	case SEND_STATUS_SUB_NUMNOSUP:
	case SEND_STATUS_OVERCOUNT:
	case SEND_STATUS_NOSY:
		strStatus = _T("�ύʧ��");
		break;
	case SEND_STATUS_FILT_ERROR:
		strStatus = _T("���ʧ��");
		break;
	case SEND_STATUS_SEND_OK:
		strStatus = _T("���ͳɹ�");
		break;
	case SEND_STATUS_SEND_ERROR:
		strStatus = _T("����ʧ��");
		break;
	case SEND_STATUS_RECV_OK:
		strStatus = _T("���ճɹ�");
		break;
	case SEND_STATUS_RECV_ERROR:
		strStatus = _T("����ʧ��");
		break;
	}

	_stprintf(sms.szStatus, _T("%d - %s - %s"), pData->lStatus, strStatus, strType);

	if ( _tcslen(pData->szSender))
		_stprintf( sms.szSender , _T("%s-%s") , pData->szSender,pData->szSendNum);
	else
		_stprintf( sms.szSender , _T("%s") , pData->szSendNum );

	TCHAR szBuf[32] = { 0 };
	_tcscpy(szBuf, pData->szRecvNum);


#ifdef SMSMANAGER_KF
	if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB,false))
	{
		szBuf[4] = '*'; szBuf[5] = '*'; szBuf[6] = '*';
	}
#endif

	if ( _tcslen(pData->szRecver))
		_stprintf( sms.szRecver , _T("%s-%s") , pData->szRecver, szBuf);
	else
		_stprintf( sms.szRecver , _T("%s") , szBuf);

	_stprintf( sms.szSendTime , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tSendTime.wYear, pData->tSendTime.wMonth,pData->tSendTime.wDay,pData->tSendTime.wHour,pData->tSendTime.wMinute,pData->tSendTime.wSecond );
	_stprintf( sms.szRecvTime , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tRecvTime.wYear,pData->tRecvTime.wMonth,pData->tRecvTime.wDay,pData->tRecvTime.wHour,pData->tRecvTime.wMinute,pData->tRecvTime.wSecond );
	_tcscpy( sms.szMsg , pData->szMsg );

	CString str;
	str.Format(_T("%s;  %-32s;%-4d") , pData->szRecvStatus,pData->szMsgID,pData->lSendRet);
	str.TrimLeft();
	str.TrimRight();
	_tcscpy(sms.szAdd,str);

	DLG_SmsLogSee dlg(this);
	dlg.SetParam(sms);
	dlg.DoModal();
}
void CListDlg::On_User_AddBack()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
	{
		return ;
	}
	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_ListData * pData = m_ListData.GetNext( pos );
	if (!pData)
		return ;


	CString strTemp;
	CString strMobile;
	CString strMobile2;
	CString strMsg;
	CString str;
	if ( pData->lSmsType == 4 )
	{
		strMobile = pData->szSendNum;
	}
	else
	{
		strMobile = pData->szRecvNum;
	}
	strMobile2 = strMobile;
#ifdef SMSMANAGER_KF
	if ( strMobile2.GetLength()>7 )
	{
		strMobile2.SetAt(4,'*');
		strMobile2.SetAt(5,'*');
		strMobile2.SetAt(6,'*');
	}
	pData->szSendNum[4]='*';pData->szSendNum[5]='*';pData->szSendNum[6]='*';
#endif
	strMsg = pData->szMsg;

	str.Format( _T("���Ҫ�����������ݵ�������:\r\n����:%s\r\n����:%s\r\n"),strMobile2,strMsg );

	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO );
	if ( iRet !=IDYES )
		return ;

	REQ_Back_Add * pAdd = new REQ_Back_Add;
	memset(pAdd , 0 ,sizeof(REQ_Back_Add));
	pAdd->lCorpID = pData->lCorpID;
	pAdd->lUserID = -1;
	_tcscpy(pAdd->szMobile , strMobile );
	_stprintf( pAdd->szBZ , _T("��̨����:%s") , strMsg );
	
	m_pMainFrame->SendFrame(SMSFUNC_BACK_ADD,(BYTE*)pAdd,sizeof(REQ_Back_Add));

}
void CListDlg::On_User_SendBBS()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
	{
		return ;
	}
	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_ListData * pData = m_ListData.GetNext( pos );
	if (!pData)
		return ;

	//���û�������Ϣ
	ANS_BBS_SeeData See={0};
	See.lBBSID = 0;
	See.lSCorpID = 0;  //����Ա����
	See.lSUserID = m_pMainFrame->m_lUserID;  //����ԱID
	_tcscpy(See.szSCorpName,_T("����Ա"));
	_tcscpy(See.szSLoginName , m_pMainFrame->m_Setup.szUser );
	See.lRCorpID = pData->lCorpID;
	See.lRUserID = pData->lUserID;
	DLG_BBS_Send dlg(this);
	dlg.SetParam( See , 3 );
	if ( dlg.DoModal() == IDOK )
	{
		long lSize = sizeof(REQ_BBS_Send)+sizeof(ANS_BBS_SeeData);
		BYTE * pModifyData = new BYTE[lSize];memset(pModifyData,0,lSize);
		REQ_BBS_Send * pModify = (REQ_BBS_Send *)pModifyData;   //ͷ
		ANS_BBS_SeeData * pSPData = (ANS_BBS_SeeData *)(pModifyData+sizeof(REQ_BBS_Send));
		*pSPData = dlg.GetParam();
		pModify->lItem  = lItem;
		pModify->lCount = 1;
		m_pMainFrame->SendFrame( SMSFUNC_BBS_SEND , pModifyData , lSize );
	}
	return ;
}

void CListDlg::On_User_Export()
{
	//m_wndList.SetHeadings(_T("���,40; �� ��,80;״̬,50;��ҵID,60;������,70; ���ͺ���,120; ������,70; ���պ���,120;  �ύʱ��,150;  ����ʱ��,150;  ����ʱ��,150;  ��ʱʱ��,150;     ��������,1000;    ��ϢID,150;"));
	SortItem item[32]={0};
	_tcscpy(item[0].szItem,_T("�� ��"));
	_tcscpy(item[1].szItem,_T("״̬"));
	_tcscpy(item[2].szItem,_T("��ҵID"));
	_tcscpy(item[3].szItem,_T("������"));
	_tcscpy(item[4].szItem,_T("���ͺ���"));
	_tcscpy(item[5].szItem,_T("������"));
	_tcscpy(item[6].szItem,_T("���պ���"));
	_tcscpy(item[7].szItem, _T("��Ӫ��"));
	_tcscpy(item[8].szItem,_T("�ύʱ��"));
	_tcscpy(item[9].szItem,_T("����ʱ��"));
	_tcscpy(item[10].szItem,_T("����ʱ��"));
	_tcscpy(item[11].szItem,_T("��ʱʱ��"));
	_tcscpy(item[12].szItem,_T("��������"));
	_tcscpy(item[13].szItem,_T("״̬����"));
	DLG_HZB_Export dlg(this);
	dlg.SetParam( &m_wndList );
	dlg.SetListItem(item,14,-2);
	dlg.DoModal();
}
void CListDlg::On_User_Copy()
{
	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	HGLOBAL hglbCopy;
	LPTSTR  lptstrCopy; 
    if (!OpenClipboard()) 
        return ;
    EmptyClipboard();

	CString str,strTemp;

	long lCol   = m_wndList.GetColumnCount();
	long lCount = m_wndList.GetSelectedItemCount();

	for ( int i=0 ; i<lCol ; i++ )
	{
		LVCOLUMN  lmn={0};
		TCHAR szBuf[256]={0};
		lmn.mask = LVCF_TEXT;
		lmn.pszText = szBuf;
		lmn.cchTextMax = sizeof(szBuf);
		m_wndList.GetColumn(i , &lmn);

		str += CString(lmn.pszText );
		str += CString(_T("\t"));

	}
	str += _T("\r\n");


	lItem = -1;
	for ( i=0 ; i<lCount ; i++ )
	{
		lItem = m_wndList.GetFirstSelectedItem(lItem);
		if ( lItem >=0 )
		{
			CString str1;
			for ( int j=0 ; j<lCol; j++ )
			{
				str1=m_wndList.GetItemText(lItem,j);
#ifdef SMSMANAGER_KF
				if ( j == 12 )
					str1 = _T("");
				
#endif
				str1.TrimLeft();str1.TrimRight();str1.Replace( _T("\t") , _T("") );str1.Replace( _T("\r") , _T("") );str1.Replace( _T("\n") , _T("") );
				strTemp.Format(_T("%s\t"),str1);
				str += strTemp;
			}
			str += _T("\r\n");

		}
	}

	hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (str.GetLength()+1)*sizeof(TCHAR));
	if (hglbCopy == NULL) 
	{ 
		CloseClipboard(); 
		return ; 
	} 
	lptstrCopy = (LPTSTR)GlobalLock(hglbCopy); 
	_tcscpy(lptstrCopy,str);
	GlobalUnlock(hglbCopy); 
#ifdef _UNICODE
	::SetClipboardData(CF_UNICODETEXT, hglbCopy);
#else
	::SetClipboardData(CF_TEXT, hglbCopy);
#endif

	CloseClipboard(); 

	return ;

}

void CListDlg::Close_Corp()
{
	//������������
	while (!m_Corp.IsEmpty())
	{
		ANS_Corp_NameData * pData = m_Corp.GetHead();
		m_Corp.RemoveHead();
		delete pData;
	}

}

void CListDlg::Close_ListData()
{
	//������������
	while (!m_ListData.IsEmpty())
	{
		ANS_ListData * pData = m_ListData.GetHead();
		m_ListData.RemoveHead();
		delete pData;
	}

}

void CListDlg::On_User_CorpList()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
	{
		return ;
	}

	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_ListData * pData = m_ListData.GetNext( pos );
	if (!pData)
		return ;

	m_lQueryCorpID = pData->lCorpID;
	OnListQuery();
}

void CListDlg::On_User_ReSend()
{
	if (!m_pMainFrame->GetUserPurview(PURVIEW_LIST))
	{
		return;
	}

	long lItem = m_wndList.GetFirstSelectedItem();
	if (lItem < 0)
		return;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_ListData* pData = m_ListData.GetNext(pos);
	if (!pData)
		return;

	m_lQueryReSendID = pData->lSendID;
	m_strQueryReSendMobile = pData->szRecvNum;

	OnListQuery();
}

void CListDlg::On_User_CorpOFF()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
	{
		return ;
	}

	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_ListData * pData = m_ListData.GetNext( pos );
	if (!pData)
		return ;

//	CString str;
//	str.Format( _T("�Ƿ�Ҫ���ô���ҵID:%d��\r\n���ú����ҵ�����ܵ�¼!"),pData->lCorpID );
//	if ( MessageBox(str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2) != IDYES )
//		return ;

	ANS_Corp_SeeData data={0};
	data.lCorpID = pData->lCorpID;
	
	DLG_Corp_Oper_Open dlg(this);
	dlg.SetParam(&data,false,this->m_pMainFrame->m_Setup.szUser);
	
	if ( dlg.DoModal() == IDOK )
	{
		REQ_CorpOFF * pCorp = new REQ_CorpOFF;memset(pCorp,0,sizeof(REQ_CorpOFF));
		pCorp->lCorpID = pData->lCorpID;
		pCorp->lStatus = 0;  //0Ϊ���ã�1Ϊ����
		_tcscpy(pCorp->szBZ , dlg.m_strBZ );
		_tcscpy(pCorp->szOper , dlg.m_strOperName );

		m_pMainFrame->SendFrame(SMSFUNC_CORPOFF,(BYTE*)pCorp,sizeof(REQ_CorpOFF));
	}
}

void CListDlg::On_User_Resort()
{
	m_wndList.ShowWindow(SW_HIDE);
	long lCount = m_wndList.GetItemCount();
	CString strNo;
	for (int i = 0; i < lCount; i++)
	{
		strNo.Format(_T("%d"), i + 1);
		m_wndList.SetItemText(i,0,strNo);
		
	}
	m_wndList.ShowWindow(SW_SHOW);
}