// CheckupMmsDlg.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "CheckupMmsDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCheckupMmsDlg dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_CheckupSee.h"
#include "SmsManagerDoc.h"
#include "UserView.h"
#include "DLG_Corp_Oper_Open.h"
#include "DLG_CheckUp_Mms_See.h"


CCheckupMmsDlg::CCheckupMmsDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCheckupMmsDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCheckupMmsDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_bInit = false;
	m_bRefresh = false;

	m_bProcess = false;

	m_pMmsBuf = NULL;
	m_lMmsSize= 0;
	m_lMmsShowType = 0;
}


void CCheckupMmsDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCheckupMmsDlg)
	DDX_Control(pDX, IDC_CHECKUP_LIST, m_wndList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCheckupMmsDlg, CDialog)
	//{{AFX_MSG_MAP(CCheckupMmsDlg)
	ON_WM_SIZE()
	ON_NOTIFY(NM_DBLCLK, IDC_CHECKUP_LIST, OnDblclkCheckupList)
	ON_NOTIFY(NM_RCLICK, IDC_CHECKUP_LIST, OnRclickCheckupList)
	//}}AFX_MSG_MAP
	ON_COMMAND( MENU_CHECKUP_SEE , On_User_See )
	ON_COMMAND( MENU_CHECKUP_PASS , On_User_Pass )
	ON_COMMAND( MENU_CHECKUP_NOPASS , On_User_NoPass )
	ON_COMMAND( MENU_CHECKUP_CORPPASS , On_User_CorpPass )
	ON_COMMAND( MENU_CHECKUP_CORPNOPASS , On_User_CorpNoPass )
	ON_COMMAND( MENU_CHECKUP_CORPLIST , On_User_CorpList )
	ON_COMMAND( MENU_CHECKUP_CORPOFF , On_User_CorpOFF )
	ON_COMMAND( MENU_CHECKUP_REFRESH , On_User_Refresh )
	ON_COMMAND(MENU_CHECKUP_SPDX_REFRESH, On_User_SPDX_Refresh)
	ON_COMMAND(MENU_CHECKUP_SPDX_PASS, On_User_SPDX_Pass)
	ON_COMMAND(MENU_CHECKUP_SPDX_NOPASS, On_User_SPDX_NoPass)
	ON_COMMAND(MENU_CHECKUP_SPDX_RESEND, On_User_SPDX_Resend)
	
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCheckupMmsDlg message handlers

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

BOOL CCheckupMmsDlg::RefreshInfo()
{
	return RefreshInfo2(0);  //ˢ�²���
}

BOOL CCheckupMmsDlg::RefreshInfo2(long lMmsType)
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return false;
	}
	this->Close();              //�ر�ԭ����
	m_wndList.ShowWindow( SW_HIDE ); //Ϊ�˼ӿ���ʾ�ٶ�
	m_wndList.DeleteAllItems();  //��ɾ�����м�¼
	REQ_CheckupMms_See2 * pSee = new REQ_CheckupMms_See2;  //Ȩ�޲�����ʲôҲ������
	memset(pSee , 0 , sizeof(REQ_CheckupMms_See2));
	pSee->lMmsType = lMmsType;
	pSee->lCorpID = -1;
	pSee->lStatus = -1;
	pSee->lTopSel = -1;
	m_pMainFrame->SendFrame(SMSFUNC_CHECKUPMMS_SEE2,(BYTE*)pSee,sizeof(REQ_CheckupMms_See2));
	m_bProcess = true;
	m_Process.SetProcessTitle(_T("����ȡ�����嵥..."));
	m_Process.DoModal();
	m_bProcess = false;
	m_wndList.ShowWindow( SW_SHOW ); //Ϊ�˼ӿ���ʾ�ٶ�

	m_lMmsShowType = lMmsType;  //��¼��ǰˢ������
	return true;
}

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

BOOL CCheckupMmsDlg::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
	//ȡҪ��˵Ķ���
	if (pHead->lFuncType == SMSFUNC_CHECKUPMMS_SEE2)
	{
		m_bRefresh = true;  //�Ѿ�ˢ�¹�
		ANS_CheckupMms_See2     * pSee = (ANS_CheckupMms_See2 *)pFrame;
		ANS_CheckupMms_SeeData2 * pData = (ANS_CheckupMms_SeeData2 *)(pFrame + sizeof(ANS_CheckupMms_See2));
		m_lMmsShowType = pSee->lMmsType;  //��¼��ǰˢ������
		m_wndList.DeleteAllColumns();
		if (pSee->lMmsType == 0 ) //��ѯ����
			m_wndList.SetHeadings(_T("���,50;  ��ҵID,80;  �ύʱ��,160;���Ŵ�С,100;        ���ű���,250;"));
		else
			m_wndList.SetHeadings(_T("���,50;  ��ҵID,80;  �ύʱ��,160;���Ŵ�С,100;        ���ű���,250; ״̬,100; ��ƵID,200;�ύ���ʱ��,160;  ������,160;�ƶ�״̬,100;�ƶ����ʱ��,160;�ƶ�������,160;��ͨ״̬,100;��ͨ���ʱ��,160;��ͨ������,160;����״̬,100;�������ʱ��,160;����������,160;"));

		TCHAR Buf[512];
		long lCount = m_wndList.GetItemCount();
		for (int i = 0; i < pSee->lCount; i++)
		{
			ANS_CheckupMms_SeeData2 * pNewData = new ANS_CheckupMms_SeeData2;
			*pNewData = *pData;
			POSITION pos = m_Checkup.AddTail(pNewData);
			//m_wndList.SetHeadings(_T("���,50;  ��ҵID,80;  �ύʱ��,150;���Ŵ�С,60;        ���ű���,200;"));
			_stprintf(Buf, _T("%d"), lCount + i + 1);
			m_wndList.InsertItem(lCount + i, Buf, 0);
			m_wndList.SetItemData(lCount + i, (DWORD)pos);    //��Pos
			int iTemp = 1;
			m_wndList.SetItemText(lCount + i, iTemp++, _itot(pData->lCorpID, Buf, 10));
			_stprintf(Buf, _T("%04d.%02d.%02d %02d:%02d"), pData->tSubTime.wYear, pData->tSubTime.wMonth, pData->tSubTime.wDay, pData->tSubTime.wHour, pData->tSubTime.wMinute);
			m_wndList.SetItemText(lCount + i, iTemp++, Buf);
			_stprintf(Buf, _T("%.2fk"), (float)pData->lmmSize / 1024.0f);
			m_wndList.SetItemText(lCount + i, iTemp++, Buf);
			m_wndList.SetItemText(lCount + i, iTemp++, pData->szTitle);
			if (pSee->lMmsType == 1) //��ѯ������Ƶ����
			{
				m_wndList.SetItemText(lCount + i, iTemp++, GetStatus(pData->Audit_Status));
				m_wndList.SetItemText(lCount + i, iTemp++, pData->Audit_SubmitID);
				_stprintf(Buf, _T("%04d.%02d.%02d %02d:%02d"), pData->Audit_SubTime.wYear, pData->Audit_SubTime.wMonth, pData->Audit_SubTime.wDay, pData->Audit_SubTime.wHour, pData->Audit_SubTime.wMinute);
				m_wndList.SetItemText(lCount + i, iTemp++, Buf);
				m_wndList.SetItemText(lCount + i, iTemp++, pData->Audit_Opinion);

				m_wndList.SetItemText(lCount + i, iTemp++, GetStatus(pData->Audit_Cmcc_Status));
				_stprintf(Buf, _T("%04d.%02d.%02d %02d:%02d"), pData->Audit_Cmcc_Time.wYear, pData->Audit_Cmcc_Time.wMonth, pData->Audit_Cmcc_Time.wDay, pData->Audit_Cmcc_Time.wHour, pData->Audit_Cmcc_Time.wMinute);
				m_wndList.SetItemText(lCount + i, iTemp++, Buf);
				m_wndList.SetItemText(lCount + i, iTemp++, pData->Audit_Cmcc_Opinion);

				m_wndList.SetItemText(lCount + i, iTemp++, GetStatus(pData->Audit_Unicom_Status));
				_stprintf(Buf, _T("%04d.%02d.%02d %02d:%02d"), pData->Audit_Unicom_Time.wYear, pData->Audit_Unicom_Time.wMonth, pData->Audit_Unicom_Time.wDay, pData->Audit_Unicom_Time.wHour, pData->Audit_Unicom_Time.wMinute);
				m_wndList.SetItemText(lCount + i, iTemp++, Buf);
				m_wndList.SetItemText(lCount + i, iTemp++, pData->Audit_Unicom_Opinion);

				m_wndList.SetItemText(lCount + i, iTemp++, GetStatus(pData->Audit_Telcom_Status));
				_stprintf(Buf, _T("%04d.%02d.%02d %02d:%02d"), pData->Audit_Telcom_Time.wYear, pData->Audit_Telcom_Time.wMonth, pData->Audit_Telcom_Time.wDay, pData->Audit_Telcom_Time.wHour, pData->Audit_Telcom_Time.wMinute);
				m_wndList.SetItemText(lCount + i, iTemp++, Buf);
				m_wndList.SetItemText(lCount + i, iTemp++, pData->Audit_Telcom_Opinion);
			}

			pData++;
		}
		if (m_bProcess)  //�ǵ����û�����Ҫ��ʾ������,��������һ��
		{
			m_Process.SetProcess(pSee->lPageAll, pSee->lPageCount);
		}
		return true;
	}
	//��˶��ţ��൱��ɾ��
	if (pHead->lFuncType == SMSFUNC_CHECKUPMMS)
	{
		ANS_CheckupMms     * pDel     = (ANS_CheckupMms     *)pFrame;
		ANS_CheckupMmsData * pDelData = (ANS_CheckupMmsData *)(pFrame+sizeof(ANS_CheckupMms));
		POSITION pos,pos2;
		ANS_CheckupMms_SeeData2  * pCheckupData;
		if (pDel->Audit_Operation <= 0 && pDel->Audit_Type <= 0)
		{
			//������˲���
			if (pDel->bAll)
			{
				RefreshInfo();  //��һ����ͨ�����У���Ҫ����ˢ��
			}
			else
			{
				m_wndList.ShowWindow(SW_HIDE);  //�ӿ��ٶ�
				for (int i = pDel->lCount - 1; i >= 0; i--)
				{
					if (pDelData[i].lFileID)  //��˳ɹ�
					{
						pos = (POSITION)m_wndList.GetItemData(pDelData[i].lItem);
						pos2 = pos;
						pCheckupData = m_Checkup.GetNext(pos);
						if (pCheckupData->lFileID == pDelData[i].lFileID)  //ID��ͬ�IJſ�ɾ��
						{
							delete pCheckupData;       //��ɾ������
							m_Checkup.RemoveAt(pos2);   //���б���ɾ��
							m_wndList.DeleteItem(pDelData[i].lItem); //��ListCtrl��ɾ��
						}
					}
				}
				m_wndList.ShowWindow(SW_SHOW);  //�ӿ��ٶ�
			}
		}
		else
		{
			//��Ƶ������˲���
			RefreshInfo2(m_lMmsShowType);  //��Ҫ����ˢ��
		}
		return true;
	}

	//ȡ����
	if (pHead->lFuncType == SMSFUNC_MMS_GETFILE2)
	{
		ANS_REQ_Mms_GetFile2     * pGet = (ANS_REQ_Mms_GetFile2 *)pFrame;
		BYTE                    * pData = (BYTE *)(pFrame+sizeof(ANS_REQ_Mms_GetFile2));
		if ( pGet->lStatus <=0 )
		{
			CString str;
			str.Format(_T("ȡ���Ÿ������󣬴������:%d") , pGet->lStatus );
			MessageBox(str , _T("����") , MB_ICONWARNING );
			if ( m_bProcess )  //�ǵ����û�����Ҫ��ʾ������,��������һ��
			{
				m_Process.SetProcess( 1 , 1 );
			}
			if (m_pMmsBuf )
			{
				delete m_pMmsBuf;
				m_pMmsBuf = NULL;
				m_lMmsSize= 0;
			}
		}
		else
		{
			if ( pGet->lDownSize == pGet->lSize ) //��һ����
			{
				if (m_pMmsBuf )
				{
					delete m_pMmsBuf;
					m_pMmsBuf = NULL;
					m_lMmsSize= 0;
				}
				m_lMmsSize = pGet->lAllSize;
				m_pMmsBuf = new BYTE[m_lMmsSize];
				memset(m_pMmsBuf , 0 , m_lMmsSize );
			}
			memcpy(m_pMmsBuf+(pGet->lDownSize-pGet->lSize) ,pData, pGet->lSize );
			if ( m_bProcess )  //�ǵ����û�����Ҫ��ʾ������,��������һ��
			{
				m_Process.SetProcess( pGet->lAllSize , pGet->lDownSize );
			}
			if ( pGet->lAllSize == pGet->lDownSize &&
				m_pMmsBuf && m_lMmsSize>0 )
			{
				DLG_CheckUp_Mms_See dlg(this);
				dlg.SetParam(*pGet , m_pMmsBuf , m_lMmsSize,this->m_pMainFrame );
				dlg.DoModal();
			}

		}
		return true;
	}
	return false;
}

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

	long l= sizeof(Socket_Head);
	long l2 = sizeof(REQ_Login);
	
	//ȡ�ù��ò���
	//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_CHECKUP) );
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("���,50;  ��ҵID,80;  �ύʱ��,150;���Ŵ�С,80;        ���ű���,200;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);	
	m_bInit = true;

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

void CCheckupMmsDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	if ( m_bInit )
	{
		m_wndList.MoveWindow( 0 , 0 , cx,cy);
	}	
}

void CCheckupMmsDlg::Close()
{
	//������������
	while (!m_Checkup.IsEmpty())
	{
		ANS_CheckupMms_SeeData2 * pData = m_Checkup.GetHead();
		m_Checkup.RemoveHead();
		delete pData;
	}
	
	if (m_pMmsBuf )
	{
		delete m_pMmsBuf;
		m_pMmsBuf = NULL;
		m_lMmsSize= 0;
	}
}

void CCheckupMmsDlg::OnDblclkCheckupList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;
	On_User_See();
}

void CCheckupMmsDlg::OnRclickCheckupList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;
	ShowRMenu();
}

void CCheckupMmsDlg::ShowRMenu()
{
	if (!m_pMainFrame->GetUserPurview(PURVIEW_FILT,false))  //û�в鿴Ȩ��
		return ;

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

	if (lItem >= 0)
	{
		POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
		POSITION pos2 = pos;
		pData = m_Checkup.GetNext(pos);
	}

	if (m_lMmsShowType == 0)  //��ͨ����
	{
		//�޸�
		if (lItem >= 0 && !bLock)
		{
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_SEE, _T(" �� �� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_PASS, _T(" ѡ�е����ͨ�� "));
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_NOPASS, _T(" ѡ�е����ʧ�� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPPASS, _T(" ����ҵ���е����ͨ�� "));
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPNOPASS, _T(" ����ҵ���е����ʧ�� "));

			if (m_pMainFrame->GetUserPurview(PURVIEW_LIST, false) && !m_pMainFrame->m_bSOS) //�в�ѯ�嵥�IJ��д�Ȩ��
			{
				menu.AppendMenu(MF_SEPARATOR);
				menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPLIST, _T(" ��ѯ����ҵ�����嵥 "));
			}
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPOFF, _T(" ���ô���ҵ "));
		}
		else
		{
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_SEE, _T(" �� �� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_PASS, _T(" ѡ�е����ͨ�� "));
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_NOPASS, _T(" ѡ�е����ʧ�� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_CORPPASS, _T(" ����ҵ���е����ͨ�� "));
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_CORPNOPASS, _T(" ����ҵ���е����ʧ�� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_CORPLIST, _T(" ��ѯ����ҵ�����嵥 "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_CORPOFF, _T(" ���ô���ҵ "));
		}
		menu.AppendMenu(MF_SEPARATOR);
		//ˢ��
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_REFRESH, _T(" ˢ��_���� "));
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_SPDX_REFRESH, _T(" ˢ��_��Ƶ���� "));
	}

	if (m_lMmsShowType == 1)  //��Ƶ����
	{
		//�޸�
		if (lItem >= 0 && !bLock)
		{
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_SEE, _T(" �� �� "));
			menu.AppendMenu(MF_SEPARATOR);
			if (pData && pData->Audit_Status!=12 )
				menu.AppendMenu(MF_STRING, MENU_CHECKUP_SPDX_PASS, _T(" ǿ�����ͨ������Ƶ���� "));
			if (pData && pData->Audit_Status != 13)
				menu.AppendMenu(MF_STRING, MENU_CHECKUP_SPDX_NOPASS, _T(" ǿ�����ʧ�ܴ���Ƶ���� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_SPDX_RESEND, _T(" ǿ�������ύ����Ƶ���� "));
			if (m_pMainFrame->GetUserPurview(PURVIEW_LIST, false) && !m_pMainFrame->m_bSOS) //�в�ѯ�嵥�IJ��д�Ȩ��
			{
				menu.AppendMenu(MF_SEPARATOR);
				menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPLIST, _T(" ��ѯ����ҵ�����嵥 "));
			}
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPOFF, _T(" ���ô���ҵ "));
		}
		else
		{
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_SEE, _T(" �� �� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_SPDX_PASS, _T(" ǿ�����ͨ������Ƶ���� "));
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_SPDX_NOPASS, _T(" ǿ�����ʧ�ܴ���Ƶ���� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_SPDX_RESEND, _T(" ǿ�������ύ����Ƶ���� "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_CORPLIST, _T(" ��ѯ����ҵ�����嵥 "));
			menu.AppendMenu(MF_SEPARATOR);
			menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_CHECKUP_CORPOFF, _T(" ���ô���ҵ "));
		}
		menu.AppendMenu(MF_SEPARATOR);
		//ˢ��
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_REFRESH, _T(" ˢ��_���� "));
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_SPDX_REFRESH, _T(" ˢ��_��Ƶ���� "));

	}
	
	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}
void CCheckupMmsDlg::On_User_See()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lItem = GetCurrentSelected();
	if ( lItem < 0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_CheckupMms_SeeData2 * pData = m_Checkup.GetNext( pos );
	if (pData)
	{
		if (m_pMmsBuf )
		{
			delete m_pMmsBuf;
			m_pMmsBuf = NULL;
			m_lMmsSize= 0;
		}

		REQ_Mms_GetFile * pGet = new REQ_Mms_GetFile;
		memset(pGet , 0 , sizeof(REQ_Mms_GetFile));
		pGet->lCorpID = pData->lCorpID;
		pGet->lUserID = pData->lUserID;
		pGet->lFileID = pData->lFileID;
		m_pMainFrame->SendFrame(SMSFUNC_MMS_GETFILE2 , (BYTE*)pGet , sizeof(REQ_Mms_GetFile) );
		
		m_bProcess = true;
		m_Process.SetProcessTitle(_T("����ȡ��������..."));
		m_Process.DoModal();
		m_bProcess = false;

		if ( m_pMmsBuf && m_lMmsSize>0 )
		{
			int i=0;
		}
	}
}
void CCheckupMmsDlg::On_User_Pass()
{
	SmsCheckup( true ,false);
}
void CCheckupMmsDlg::On_User_NoPass()
{
	SmsCheckup( false,false );
}
void CCheckupMmsDlg::On_User_CorpPass()
{
	SmsCheckup( true,true );
}
void CCheckupMmsDlg::On_User_CorpNoPass()
{
	SmsCheckup( false,true );
}
void CCheckupMmsDlg::On_User_CorpList()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lItem = GetCurrentSelected();
	if ( lItem < 0 )
		return ;

	if (isLockItem(lItem))
	{
		return ;
	}

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


	this->m_pMainFrame->ShowFuncDlg( FUNC_LIST );

	this->m_pMainFrame->m_pUserView->m_dlgList.m_lQueryCorpID = pData->lCorpID;
	this->m_pMainFrame->m_pUserView->m_dlgList.OnListQuery();
}
void CCheckupMmsDlg::On_User_CorpOFF()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lItem = GetCurrentSelected();
	if ( lItem < 0 )
		return ;

	if (isLockItem(lItem))
	{
		return ;
	}

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_CheckupMms_SeeData2 * pData = m_Checkup.GetNext( pos );
	if (!pData)
		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->szOper , dlg.m_strOperName );
		_tcscpy(pCorp->szBZ , dlg.m_strBZ );
		
		m_pMainFrame->SendFrame(SMSFUNC_CORPOFF,(BYTE*)pCorp,sizeof(REQ_CorpOFF));
	}

}

void CCheckupMmsDlg::On_User_Refresh()
{
	RefreshInfo();
}

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

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

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

void CCheckupMmsDlg::SmsCheckup(BOOL bPass,BOOL bAll, long Audit_Operation, long Audit_Type)
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lCount = m_wndList.GetSelectedCount();
	long lSize = sizeof(REQ_CheckupMms)+sizeof(ANS_CheckupMmsData)*lCount;
	BYTE * pCheckupSend = new BYTE[lSize];memset(pCheckupSend,0,lSize);
	BOOL bGetFirst=false;
	REQ_CheckupMms     * pCheckup     = (REQ_CheckupMms *)pCheckupSend;   //ͷ
	ANS_CheckupMmsData * pCheckupData = (ANS_CheckupMmsData *)(pCheckupSend+sizeof(REQ_CheckupMms));
	pCheckup->lCount = lCount;
	pCheckup->bAll = bAll;
	if (Audit_Operation > 0 && Audit_Type > 0)
	{
		pCheckup->Audit_Operation = Audit_Operation;
		pCheckup->Audit_Type = Audit_Type;
	}
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	ANS_CheckupMms_SeeData2 * pSeeData;
	COleDateTime tMaxDelayTime = COleDateTime::GetCurrentTime();  //ȡ�ʱ��Ķ���
	CString strMaxDelayMsg;
	long lMaxDelayCorpID = 0;
	long lMaxDelayUserID = 0;

	POSITION pos2;
	while(pos)
	{
		pCheckupData->bPass   = bPass;
		pCheckupData->lItem   = m_wndList.GetNextSelectedItem(pos);
		pos2                  = (POSITION)m_wndList.GetItemData(pCheckupData->lItem);
		pSeeData              = m_Checkup.GetNext(pos2);  //ȡ���б��е�pos
		pCheckupData->lFileID = pSeeData->lFileID;
		if (Audit_Operation > 0 && Audit_Type > 0)
			pCheckupData->Audit_ID = pSeeData->Audit_ID;

		if (COleDateTime(pSeeData->tSubTime) < tMaxDelayTime)  //ȡ�ʱ��Ķ���
		{
			tMaxDelayTime = pSeeData->tSubTime;
			strMaxDelayMsg = pSeeData->szTitle;
			lMaxDelayCorpID = pSeeData->lCorpID;
			lMaxDelayUserID = pSeeData->lUserID;
		}

		if ( !bGetFirst )
		{
			bGetFirst = true;
			pCheckup->bPass   = bPass;
			pCheckup->lCorpID = pSeeData->lCorpID;
			_tcscpy(pCheckup->szTitle , pSeeData->szTitle );
			if ( bAll )
			{
				pCheckup->bAll = true;
				break;
			}
		}
		pCheckupData ++;
	}

	if (strMaxDelayMsg.GetLength() > 0)
	{
		_tcscpy(pCheckup->szTitle, strMaxDelayMsg);
		pCheckup->lCorpID = lMaxDelayCorpID;
	}

	tMaxDelayTime.GetAsSystemTime(pCheckup->tMaxDelayTime);
	m_pMainFrame->SendFrame( SMSFUNC_CHECKUPMMS , pCheckupSend , lSize );
}

void CCheckupMmsDlg::On_User_SPDX_Refresh()
{
	RefreshInfo2(1);  //ˢ����Ƶ����
}

void CCheckupMmsDlg::On_User_SPDX_Pass()
{
	SmsCheckup(false, false, 1, 1);  //1-������Ƶ������˲�����1-��ʾ�������ͣ�ǿ����˳ɹ�
}

void CCheckupMmsDlg::On_User_SPDX_NoPass()
{
	SmsCheckup(false, false,1,2);  //1-������Ƶ������˲�����2-��ʾ�������ͣ�ǿ�����ʧ��
}

void CCheckupMmsDlg::On_User_SPDX_Resend()
{
	SmsCheckup(false, false, 1, 3);  //1-������Ƶ������˲�����1-��ʾ�������ͣ�ǿ�������ύ
}

CString CCheckupMmsDlg::GetStatus(long lStatus)
{
	CString str;
	switch (lStatus)
	{
	case 0:
		str = _T("��");
		break;
	case 10:
		str = _T("��");
		break;
	case 11:
		str = _T("�ύʧ��");
		break;
	case 12:
		str = _T("���ͨ��");
		break;
	case 13:
		str = _T("�ܾ�����");
		break;
	default:
		str = _T("δ֪״̬");
		break;
	}

	return str;
}