// Back.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "CTDSet.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTDSet dialog
// CTabDlg dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_TDSet_Add.h"

CTDSet::CTDSet(CWnd* pParent /*=NULL*/)
	: CDialog(CTDSet::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTDSet)
	m_lCorp = -1;
	m_strMobile = _T("");
	m_tBegin = COleDateTime::GetCurrentTime();
	m_tEnd = COleDateTime::GetCurrentTime();
	//}}AFX_DATA_INIT
	m_bInit = false;
	m_bRefresh = false;
	m_lQueryType = 0;
}


void CTDSet::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTDSet)
	DDX_Control(pDX, IDC_TDSET_CORPID, m_E_CorpID);
	DDX_Control(pDX, IDC_TDSET_S1, m_S_S1);
	DDX_Control(pDX, IDC_TDSET_CORP, m_L_Corp);
	DDX_Control(pDX, IDC_TDSET_LIST2, m_wndList);
	DDX_CBIndex(pDX, IDC_TDSET_CORP, m_lCorp);
	DDX_Text(pDX, IDC_TDSET_USERID, m_strMobile);
	DDV_MaxChars(pDX, m_strMobile, 15);
	DDX_DateTimeCtrl(pDX, IDC_TDSET_TBEGIN, m_tBegin);
	DDX_DateTimeCtrl(pDX, IDC_TDSET_TEND, m_tEnd);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTDSet, CDialog)
	//{{AFX_MSG_MAP(CTDSet)
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_TDSET_QUERY, OnBackQuery)
	ON_NOTIFY(NM_DBLCLK, IDC_TDSET_LIST2, OnDblclkBackList)
	ON_NOTIFY(LVN_KEYDOWN, IDC_TDSET_LIST2, OnKeydownBackList)
	ON_NOTIFY(NM_RCLICK, IDC_TDSET_LIST2, OnRclickBackList)
	ON_BN_CLICKED(IDC_TDSET_QUERY2, OnBackQuery2)
	ON_BN_CLICKED(IDC_TDSET_QUERY3, OnBackQuery3)
	//}}AFX_MSG_MAP
	ON_COMMAND( MENU_TDSET_ADD , On_TDSet_Add )
	ON_COMMAND( MENU_TDSET_DEL , On_TDSet_Del )
	ON_COMMAND( MENU_TDSET_MODIFY, On_TDSet_Modify)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTDSet message handlers

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

	//������������
	while (!m_TDData.IsEmpty())
	{
		ANS_TDSet_Data * pMsg = m_TDData.GetHead();
		m_TDData.RemoveHead();
		delete pMsg;
	}

}

BOOL CTDSet::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;

	//��ʼ��List
	m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_TDSET) );
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("���,50; ״̬,60; ��ҵID,100;  �ֻ�����,100;��Ӫ������,150; �ƶ�ͨ��,100; ��ͨͨ��,100; С��ͨͨ��,100; ����ͨ��,100;ͨ����ʶ,100;�Ƿ�ȫ��,100;��ʱ��,160;˵��,250;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);

	m_bInit = true;


#ifdef SMSMANAGER_KF
	//GetDlgItem(IDC_TDSET_S1)->ShowWindow(SW_HIDE);
	//GetDlgItem(IDC_TDSET_CORP)->ShowWindow(SW_HIDE);s
	//GetDlgItem(IDC_TDSET_CORPID)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_TDSET_QUERY3)->ShowWindow(SW_HIDE);


	if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
	{
		GetDlgItem(IDC_TDSET_S1)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TDSET_CORP)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TDSET_CORPID)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TDSET_QUERY2)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TDSET_S2)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TDSET_TBEGIN)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TDSET_TEND)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TDSET_S21)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_TDSET_S22)->ShowWindow(SW_HIDE);
	}

#endif

	SYSTEMTIME t; ::GetLocalTime(&t);
	m_tBegin.SetStatus( COleDateTime::null  );
	m_tEnd.SetStatus( COleDateTime::null  );


	UpdateData(false);	

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

BOOL CTDSet::ReShow(BOOL bRefresh)
{
	ShowWindow( SW_SHOW );
	if ( bRefresh || !m_bRefresh )
	{
		RefreshInfo();
	}
	return true;
}

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

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

	return true;
}

BOOL CTDSet::ProcessSocket(Socket_Head_Add *pHead, BYTE* pFrame)
{
	CString str;

	//ȡ�嵥
	if (pHead->lFuncType == SMSFUNC_TDSET_SEE)
	{
		ANS_TDSet_See * pList = (ANS_TDSet_See *)pFrame;
		ANS_TDSet_Data * pData = (ANS_TDSet_Data *)(pFrame + sizeof(ANS_TDSet_See));
		//���ӵ�List
		m_wndList.ShowWindow(SW_HIDE);
		m_wndList.DeleteAllItems();
		m_wndList.DeleteAllColumns();
		m_lQueryType = pList->lQueryType;

		if (pList->lQueryType == 1)
			m_wndList.SetHeadings(_T("���,50; ��ҵID,100; ����,100;"));
		else
			m_wndList.SetHeadings(_T("���,50; ״̬,60; ��ҵID,100;  �ֻ�����,150;��Ӫ������,150; �ƶ�ͨ��,100; ��ͨͨ��,100; С��ͨͨ��,100; ����ͨ��,100;ͨ����ʶ,100;�Ƿ�ȫ��,100;��ʱ��,160;˵��,250;"));

		long lCount = m_wndList.GetItemCount();
		TCHAR szBuf[64];
		for (int i = 0; i< pList->lCount; i++)
		{
			ANS_TDSet_Data * pNewData = new ANS_TDSet_Data;
			*pNewData = *pData;
			POSITION pos = m_TDData.AddTail(pNewData);


			m_wndList.InsertItem(i, _itot(i + 1, szBuf, 10), 0);
			m_wndList.SetItemData(i, (DWORD)pos);
			long lTemp = 1;

			if (pList->lQueryType == 1)
			{
				_stprintf(szBuf, _T("%d"), pData->lCorpID);
				m_wndList.SetItemText(i, lTemp++, szBuf);
				_stprintf(szBuf, _T("%d"), pData->lUserID);
				m_wndList.SetItemText(i, lTemp++, szBuf);
			}
			else
			{
				if (pData->lStatus == 1)
					m_wndList.SetItemText(i, lTemp++, _T("����"));
				else
					m_wndList.SetItemText(i, lTemp++, _T("����"));

				_stprintf(szBuf, _T("%d"), pData->lCorpID);
				m_wndList.SetItemText(i, lTemp++, szBuf);


				m_wndList.SetItemText(i, lTemp++, pData->szMobile);

				m_wndList.SetItemText(i, lTemp++, GetYYSName(pData->lYYSType));

				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[0], 0));  //�ƶ�
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[1], 1));  //��ͨ
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[2], 2));  //С��ͨ
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[3], 3));  //����

				m_wndList.SetItemText(i, lTemp++, pData->szTD);  //ͨ����ʶ

				switch (pData->szOutAll[0] - '0')
				{
				case 0:
				default:
					m_wndList.SetItemText(i, lTemp++, _T("Ĭ��"));
					break;
				case 1:
					m_wndList.SetItemText(i, lTemp++, _T("��ȫ��"));
					break;
				case 2:
					m_wndList.SetItemText(i, lTemp++, _T("ȫ��"));
					break;
				}
				CString strTime;
				if (COleDateTime(pData->tAddTime).GetStatus() == COleDateTime::valid)
				{
					strTime.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tAddTime.wYear, pData->tAddTime.wMonth, pData->tAddTime.wDay, pData->tAddTime.wHour, pData->tAddTime.wMinute);
				}
				m_wndList.SetItemText(i, lTemp++, strTime);
				m_wndList.SetItemText(i, lTemp++, pData->szBZ);

			}
			pData++;
		}
		m_wndList.ShowWindow(SW_SHOW);
		return true;
	}

	if (pHead->lFuncType == SMSFUNC_TDSET_INS)
	{
		ANS_TDSet_Ins * pSee = (ANS_TDSet_Ins *)pFrame;
		if (pSee->bOK)
		{
				//���µ��б���
				ANS_TDSet_Data * pData = new ANS_TDSet_Data;
				*pData = pSee->ins.data;
				POSITION pos = m_TDData.AddTail(pData);

				TCHAR Buf[32] = { 0 };
				long i = m_wndList.GetItemCount();
				_stprintf(Buf, _T("%d"), i + 1);
				m_wndList.InsertItem(i, Buf, 0);
				m_wndList.SetItemData(i, (DWORD)pos);    //��Pos

				long lTemp = 1;
				if (pData->lStatus == 1)
					m_wndList.SetItemText(i, lTemp++, _T("����"));
				else
					m_wndList.SetItemText(i, lTemp++, _T("����"));

				_stprintf(Buf, _T("%d"), pData->lCorpID);
				m_wndList.SetItemText(i, lTemp++, Buf);

				m_wndList.SetItemText(i, lTemp++, pData->szMobile);
				m_wndList.SetItemText(i, lTemp++, GetYYSName(pData->lYYSType));  //�ƶ�
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[0], 0));  //�ƶ�
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[1], 1));  //��ͨ
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[2], 2));  //С��ͨ
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[3], 3));  //����

				m_wndList.SetItemText(i, lTemp++, pData->szTD);  //ͨ����ʶ

				switch (pData->szOutAll[0] - '0')
				{
				case 0:
				default:
					m_wndList.SetItemText(i, lTemp++, _T("Ĭ��"));
					break;
				case 1:
					m_wndList.SetItemText(i, lTemp++, _T("��ȫ��"));
					break;
				case 2:
					m_wndList.SetItemText(i, lTemp++, _T("ȫ��"));
					break;
				}
				CString strTime;
				if (COleDateTime(pData->tAddTime).GetStatus() == COleDateTime::valid)
				{
					strTime.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tAddTime.wYear, pData->tAddTime.wMonth, pData->tAddTime.wDay, pData->tAddTime.wHour, pData->tAddTime.wMinute);
				}
				m_wndList.SetItemText(i, lTemp++, strTime);
				m_wndList.SetItemText(i, lTemp++, pData->szBZ);

		}
		else
		{
			MessageBox(_T("���Ӱ�ͨ��ʧ�ܣ����飡"), _T("����"), MB_ICONWARNING);
		}
		return true;
	}

	if (pHead->lFuncType == SMSFUNC_TDSET_MODIFY)
	{
		ANS_TDSet_Modify * pSee = (ANS_TDSet_Modify *)pFrame;
		if (pSee->bOK)
		{
				//���µ��б���
				ANS_TDSet_Data * pData = &pSee->modify.data;
				ANS_TDSet_Data * pData2 = NULL;
				POSITION pos = (POSITION)m_wndList.GetItemData(pData->lItemID);
				if (pos)
				{
					pData2 = m_TDData.GetNext(pos);
					if (pData2)
						*pData2 = *pData;
				}

				TCHAR Buf[32] = { 0 };
				long i = pData->lItemID;
				_stprintf(Buf, _T("%d"), i + 1);

				long lTemp = 1;
				if (pData->lStatus == 1)
					m_wndList.SetItemText(i, lTemp++, _T("����"));
				else
					m_wndList.SetItemText(i, lTemp++, _T("����"));

				_stprintf(Buf, _T("%d"), pData->lCorpID);
				m_wndList.SetItemText(i, lTemp++, Buf);

				m_wndList.SetItemText(i, lTemp++, pData->szMobile);
				m_wndList.SetItemText(i, lTemp++, GetYYSName(pData->lYYSType));
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[0], 0));  //�ƶ�
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[1], 1));  //��ͨ
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[2], 2));  //С��ͨ
				m_wndList.SetItemText(i, lTemp++, GetTDName(pData->szTD[3], 3));  //����

				m_wndList.SetItemText(i, lTemp++, pData->szTD);  //ͨ����ʶ

				switch (pData->szOutAll[0] - '0')
				{
				case 0:
				default:
					m_wndList.SetItemText(i, lTemp++, _T("Ĭ��"));
					break;
				case 1:
					m_wndList.SetItemText(i, lTemp++, _T("��ȫ��"));
					break;
				case 2:
					m_wndList.SetItemText(i, lTemp++, _T("ȫ��"));
					break;
				}
				CString strTime;
				if (COleDateTime(pData->tAddTime).GetStatus() == COleDateTime::valid)
				{
					strTime.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tAddTime.wYear, pData->tAddTime.wMonth, pData->tAddTime.wDay, pData->tAddTime.wHour, pData->tAddTime.wMinute);
				}
				m_wndList.SetItemText(i, lTemp++, strTime);
				m_wndList.SetItemText(i, lTemp++, pData->szBZ);
		}
		else
		{
			MessageBox(_T("�޸İ�ͨ��ʧ�ܣ����飡"), _T("����"), MB_ICONWARNING);
		}
		return true;
	}


	//ɾ���û�
	if (pHead->lFuncType == SMSFUNC_TDSET_DEL)
	{
		ANS_TDSet_Del * pDel = (ANS_TDSet_Del *)pFrame;
		ANS_TDSet_DelData * pDelData = (ANS_TDSet_DelData *)(pFrame + sizeof(ANS_TDSet_Del));

		for (int i = pDel->lCount - 1; i >= 0; i--)
		{
			if (pDelData[i].lItem >= 0)
			{

				POSITION pos = (POSITION)m_wndList.GetItemData(pDelData[i].lItem);
				POSITION pos2 = pos;
				ANS_TDSet_Data * pSetData = m_TDData.GetNext(pos);
				if (pSetData->lTDSetID == pDelData[i].lTDSetID )  //ID��ͬ�ſ�ɾ��
				{
					delete pSetData;       //��ɾ������
					m_TDData.RemoveAt(pos2);   //���б���ɾ��
					m_wndList.DeleteItem(pDelData[i].lItem); //��ListCtrl��ɾ��
				}
			}
		}
		m_wndList.ShowWindow(SW_SHOW);  //Ϊ�˼ӿ���ʾ�ٶ�
		return true;
	}


	return false;
}

BOOL CTDSet::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();              //�ر�ԭ����
		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;
	}
	return false;
}

void CTDSet::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 CTDSet::OnBackQuery() 
{
	if ( !UpdateData(true) )
		return ;

	if ( m_tBegin.GetStatus()==0 &&
		 m_tEnd.GetStatus()==0 &&
		 m_tEnd < m_tBegin )
	{
		MessageBox( _T("��ѯ�������ڲ���С����ʼ���ڣ������!") , _T("����") , MB_ICONWARNING );
		return ;
	}

	REQ_TDSet_See * pSee = new REQ_TDSet_See;memset(pSee,0,sizeof(REQ_TDSet_See));


	pSee->lCorpID = -1;
	if (m_lCorp >= 0)
	{
		if (m_lCorp == 0)  //ѡ��������ҵ
		{
			pSee->lCorpID = -1;
		}
		else
		{
			POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
			if (pos>0 && pos != (POSITION)0xffffffff)
			{
				POSITION pos2 = pos;
				ANS_Corp_NameData * pData = m_Corp.GetNext(pos);
				if (pData)
				{
					pSee->lCorpID = pData->lCorpID;
				}
				else
				{
					delete pSee;
					return;
				}
			}
		}
	}

#ifdef SMSMANAGER_KF
	if (pSee->lCorpID <=0 && m_strMobile.GetLength()<10 )
	{
		MessageBox( _T("�ֻ������������������룡"), _T("����"), MB_ICONWARNING );
		GetDlgItem(IDC_TDSET_USERID)->SetFocus();
		delete pSee;
		return ;
	}
#endif

	_tcscpy(pSee->szMobile , m_strMobile );
	m_tBegin.GetAsSystemTime(pSee->tBegin );
	m_tEnd.GetAsSystemTime(pSee->tEnd );
	pSee->lQueryType = 0;  //��ѯ��ϸ
	m_pMainFrame->SendFrame(SMSFUNC_TDSET_SEE,(BYTE*)pSee,sizeof(REQ_TDSet_See));
	return ;	
}

void CTDSet::OnDblclkBackList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;

	if (m_lQueryType == 1)
		return;

	On_TDSet_Modify();


}

void CTDSet::OnKeydownBackList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

void CTDSet::OnRclickBackList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu();
}

void CTDSet::ShowRMenu()
{
/*
	if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB,false))  //û�в鿴Ȩ��
		return ;
*/
	if (m_lQueryType == 1)
		return;

	CMenu menu;
	menu.CreatePopupMenu();
	BOOL bLock = false;
	long lItem = this->GetCurrentSelected();
	if ( lItem >= 0 )
		bLock = isLockItem( lItem , false );   //ȡ���Ƿ���������

	//����
	menu.AppendMenu(MF_STRING     , MENU_TDSET_ADD, _T(" �� �� ") );
	menu.AppendMenu(MF_SEPARATOR);
	//ɾ��
	if (lItem >= 0 && !bLock)
	{
		menu.AppendMenu(MF_STRING, MENU_TDSET_MODIFY, _T(" �� �� "));
	}
	else
	{
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_TDSET_MODIFY, _T(" �� �� "));
	}
	//ɾ��
	if (  lItem >=0 && !bLock )
	{
		menu.AppendMenu(MF_STRING     , MENU_TDSET_DEL, _T(" ɾ �� ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_TDSET_DEL , _T(" ɾ �� ") );
	}
	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

void CTDSet::SetLockItem(long lItem, BOOL bLock)
{
	if ( bLock )
		m_wndList.SetIconIndex( lItem , 1 );
	else
		m_wndList.SetIconIndex( lItem , 0 );
}

BOOL CTDSet::isLockItem(long lItem, BOOL bShowWarning)
{
	BOOL b = (m_wndList.GetIconIndex(lItem) == 1);
	if ( b && bShowWarning )
	{
		MessageBox( _T("��¼����������ȴ����������غ��ٲ���!") , _T("������") , MB_ICONINFORMATION );
	}
	return b;
}

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

void CTDSet::On_TDSet_Add()
{
	if (m_lQueryType == 1)
		return;

	ANS_TDSet_Data data = { 0 };
	data.lStatus = 1;  //Ĭ������
	data.lCorpID = -1;
	data.lYYSType = 0;  //Ĭ�����Զ�
	_tcscpy(data.szOutAll, _T("0000"));
	_tcscpy(data.szTD, _T("0000"));

	DLG_TDSet_Add dlg(this);
	dlg.SetParam(data,0, 1);
	if ( dlg.DoModal() == IDOK )
	{
		data = dlg.GetParam();

		//��������鿴
		REQ_TDSet_Ins * pModify = new REQ_TDSet_Ins;
		memset(pModify, 0, sizeof(REQ_TDSet_Ins));

		GetLocalTime(&data.tAddTime);
		pModify->data = data;
		pModify->lCount = 1;

		m_pMainFrame->SendFrame(SMSFUNC_TDSET_INS, (BYTE*)pModify, sizeof(REQ_TDSet_Ins));
	}
}

void CTDSet::On_TDSet_Del()
{
	if (m_lQueryType == 1)
		return;

	long lRet = MessageBox( _T("�˲�������ɾ���󶨺��룬�Ƿ������") , _T("����") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return;

	long lCount = m_wndList.GetSelectedCount();
	long lSize = sizeof(REQ_TDSet_Del) + sizeof(ANS_TDSet_DelData)*lCount;
	BYTE * pDelSend = new BYTE[lSize]; memset(pDelSend, 0, lSize);
	REQ_TDSet_Del     * pDel = (REQ_TDSet_Del *)pDelSend;   //ͷ
	ANS_TDSet_DelData * pDelData = (ANS_TDSet_DelData *)(pDelSend + sizeof(REQ_TDSet_Del));
	pDel->lCount = lCount;
	pDel->lCorpID = -1;

	POSITION pos2 = m_wndList.GetFirstSelectedItemPosition();
	while (pos2)
	{
		long lItem = m_wndList.GetNextSelectedItem(pos2);
		POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
		ANS_TDSet_Data * pSeeData = NULL;
		if (pos>0)
		{
			pSeeData = m_TDData.GetNext(pos);
		}

		pDelData->lItem = lItem;
		if (pSeeData)
			pDelData->lTDSetID = pSeeData->lTDSetID;

		pDelData++;
	}


	m_pMainFrame->SendFrame(SMSFUNC_TDSET_DEL, (BYTE*)pDelSend, lSize);

}



void CTDSet::On_TDSet_Modify()
{
	if (m_lQueryType == 1)
		return;

	long lItem = this->GetCurrentSelected();
	if (lItem < 0)
		return;
	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);

	ANS_TDSet_Data * pSeeData = NULL;
	if (pos>0)
	{
		pSeeData = m_TDData.GetNext(pos);
	}
	if (!pSeeData)
		return;

	long lModifyCount = m_wndList.GetSelectedCount();

	DLG_TDSet_Add dlg(this);

	dlg.SetParam(*pSeeData,0, lModifyCount);
	if (dlg.DoModal() == IDOK)
	{
		ANS_TDSet_Data data = dlg.GetParam();

		//��������鿴
		long lSize = sizeof(REQ_TDSet_Modify) + sizeof(ANS_TDSet_ModifyData)*lModifyCount;
		BYTE * pData = new BYTE[lSize];
		memset(pData, 0, lSize);
		REQ_TDSet_Modify * pModify = (REQ_TDSet_Modify *)pData;
		ANS_TDSet_ModifyData * pModifyData = (ANS_TDSet_ModifyData *)(pData + sizeof(REQ_TDSet_Modify));

		//data.lCorpID = pSeeData->lCorpID;
		data.lItemID = lItem;
		pModify->data = data;
		pModify->lCount = lModifyCount;

		POSITION pos2 = m_wndList.GetFirstSelectedItemPosition();
		while (pos2)
		{
			long lItem = m_wndList.GetNextSelectedItem(pos2);
			POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
			ANS_TDSet_Data * pSeeData = NULL;
			if (pos>0)
			{
				pSeeData = m_TDData.GetNext(pos);
			}

			pModifyData->lItem = lItem;
			if (pSeeData)
				pModifyData->lTDSetID = pSeeData->lTDSetID;

			pModifyData++;
		}

		m_pMainFrame->SendFrame(SMSFUNC_TDSET_MODIFY, (BYTE*)pData, lSize);
	}

}


void CTDSet::OnBackQuery2() 
{
	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 CTDSet::OnBackQuery3() 
{
	if ( !UpdateData(true) )
		return ;

	if ( m_tBegin.GetStatus()==0 &&
		 m_tEnd.GetStatus()==0 &&
		 m_tEnd < m_tBegin )
	{
		MessageBox( _T("��ѯ�������ڲ���С����ʼ���ڣ������!") , _T("����") , MB_ICONWARNING );
		return ;
	}
	REQ_TDSet_See * pSee = new REQ_TDSet_See; memset(pSee, 0, sizeof(REQ_TDSet_See));

#ifdef SMSMANAGER_KF
	pSee->lCorpID = -1;
	if ( m_strMobile.GetLength()<10 )
	{
		MessageBox( _T("�ֻ������������������룡"), _T("����"), MB_ICONWARNING );
		GetDlgItem(IDC_TDSET_USERID)->SetFocus();
		return ;
	}
#else

	pSee->lCorpID = -1;
	if ( m_lCorp >= 0 )
	{
		if ( m_lCorp == 0 )  //ѡ��������ҵ
		{
			pSee->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)
			{
				pSee->lCorpID = pData->lCorpID;
			}
			else
			{
				return;
			}
		}
	}
#endif
	_tcscpy(pSee->szMobile , m_strMobile );
	m_tBegin.GetAsSystemTime(pSee->tBegin );
	m_tEnd.GetAsSystemTime(pSee->tEnd );
	pSee->lQueryType = 1;  //��ѯ����
	m_pMainFrame->SendFrame(SMSFUNC_TDSET_SEE, (BYTE*)pSee, sizeof(REQ_TDSet_See));
	return ;	
}



CString CTDSet::GetYYSName(long lType)
{

	CString str = _T("�Զ�ѡ��");
	switch (lType)
	{
	case 1:
		str = _T("�й��ƶ�");
		break;
	case 2:
		str = _T("�й���ͨ");
		break;
	case 3:
		str = _T("С��ͨ");
		break;
	case 4:
		str = _T("�����");
		break;
	case 5:
		str = _T("���ʶ���");
		break;
	}

	return str;
}


CString CTDSet::GetTDName(TCHAR cTD, long lType)
{

	CString str = _T("δ֪ͨ��");

	switch (cTD - '0')
	{
	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;
	case 5:
		str = _T("����ͨ��");
		break;
	case 6:
		str = _T("����ͨ��");
		break;
	case 7:
		str = _T("����ͨ��");
		break;
	case 8:
		str = _T("�ڰ�ͨ��");
		break;
	case 9:
		str = _T("�ھ�ͨ��");
		break;
	case 10:
		str = _T("���ͨ��");
		break;
	case 11:
		str = _T("��10ͨ��");
		break;
	case 12:
		str = _T("��11ͨ��");
		break;
	case 13:
		str = _T("��12ͨ��");
		break;
	case 14:
		str = _T("��13ͨ��");
		break;
	case 15:
		str = _T("��14ͨ��");
		break;
	case 16:
		str = _T("��15ͨ��");
		break;
	case 17:
		str = _T("��16ͨ��");
		break;
	case 18:
		str = _T("��17ͨ��");
		break;
	case 19:
		str = _T("��18ͨ��");
		break;
	case 20:
		str = _T("��19ͨ��");
		break;
	case 21:
		str = _T("��20ͨ��");
		break;
	case 22:
		str = _T("��21ͨ��");
		break;
	case 23:
		str = _T("��22ͨ��");
		break;
	case 24:
		str = _T("��23ͨ��");
		break;
	case 25:
		str = _T("��24ͨ��");
		break;
	case 26:
		str = _T("��25ͨ��");
		break;
	case 27:
		str = _T("��26ͨ��");
		break;
	case 28:
		str = _T("��27ͨ��");
		break;
	case 29:
		str = _T("��28ͨ��");
		break;
	case 30:
		str = _T("��29ͨ��");
		break;
	case 31:
		str = _T("��30ͨ��");
		break;
	case 32:
		str = _T("��31ͨ��");
		break;
	case 33:
		str = _T("��32ͨ��");
		break;
	case 34:
		str = _T("��33ͨ��");
		break;
	case 35:
		str = _T("��34ͨ��");
		break;
	case 36:
		str = _T("��35ͨ��");
		break;
	case 37:
		str = _T("��36ͨ��");
		break;
	case 38:
		str = _T("��37ͨ��");
		break;
	case 39:
		str = _T("��38ͨ��");
		break;
	case 40:
		str = _T("��39ͨ��");
		break;
	}

	return str;

}