// K_SignName.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "K_SignName.h"

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

/////////////////////////////////////////////////////////////////////////////
// CK_SignName 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"
#include "SmsManagerDoc.h"
#include "UserView.h"
#include "DLG_SignNameSee.h"
#include "DLG_SmsTask_Modify.h"

CK_SignName::CK_SignName(CWnd* pParent /*=NULL*/)
	: CDialog(CK_SignName::IDD, pParent)
{
	//{{AFX_DATA_INIT(CK_SignName)
	m_lCorp = -1;
	m_tBegin = COleDateTime::GetCurrentTime();
	m_tEnd = COleDateTime::GetCurrentTime();
	m_lTop = -1;
	m_lStatus = -1;
	//}}AFX_DATA_INIT
	m_bInit = false;
	m_bRefresh = false;
//	m_bProcess = false;
	m_lQueryCorpID = 0;
	m_lCheckCount = 0;
	m_pDlgFile = NULL;
}


void CK_SignName::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CK_SignName)
	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_TOP, m_lTop);
	DDX_CBIndex(pDX, IDC_LIST_STATUS, m_lStatus);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CK_SignName, CDialog)
	//{{AFX_MSG_MAP(CK_SignName)
	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_CORPLIST , On_User_CorpList )
	ON_COMMAND(MENU_LIST_SMSLIST  , On_User_SmsList)
	
	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_SIGNNAME_PASS , On_Task_Pass )
	ON_COMMAND( MENU_SIGNNAME_NOPASS , On_Task_NoPass )
	
	ON_WM_TIMER()
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CK_SignName message handlers

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

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

BOOL CK_SignName::RefreshInfo()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return false;
	}
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST,false) )
	{
		GetDlgItem(IDC_LIST_TBEGIN)->EnableWindow(false);
	}
	m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);

	OnListQuery(); //��ѯ����е�����

	return true;
}

BOOL CK_SignName::ProcessSocket(Socket_Head_Add *pHead,BYTE* pFrame)
{
	CString str;
	//ȡ�嵥
	if (pHead->lFuncType == SMSFUNC_SIGNNAME_SEE)
	{
		ANS_SignName_See * pList = (ANS_SignName_See *)pFrame;
		ANS_SignName_SeeData * pData = (ANS_SignName_SeeData *)(pFrame+sizeof(ANS_SignName_See));
		//CString strTemp;
		//strTemp.Format( _T("��ѯ��ҵ (%d/%d)") , pList->lPageCount,pList->lPageAll );
		//m_S_S1.SetWindowText( strTemp );
		//���ӵ�List
		long lCount = m_wndList.GetItemCount();
		TCHAR szBuf[512]={0};
		CString str;
		CString strTemp;
		m_lCheckCount = 0;
		for ( int i = 0 ; i< pList->lCount;i++)
		{
			ANS_SignName_SeeData * pNewData = new ANS_SignName_SeeData;
			*pNewData = *pData;
			POSITION pos = m_ListData.AddTail(pNewData);

			//	m_wndList.SetHeadings(_T("���,50;״̬,100;�ύ�û�,350;ǩ������,150;ǩ������,150;���뱸ע,150;����ʱ��,180;�������,250;�����,150;�������,120;"));

			m_wndList.InsertItem( lCount+i,_itot(lCount+i+1,szBuf,10),0);

			long lIcon;
			switch(pNewData->lStatus)
			{
			case 0:
				 lIcon = 0;
				 m_lCheckCount++;
				 break;
			case 1:
				lIcon = 1;
				break;
			case 2:
				lIcon = 2;
				break;
			default:
				lIcon = 3;
				break;
			}

			long lTemp=1;
			strTemp = DLG_SignNameSee::GetSignNameStatus(pNewData->lStatus);
			m_wndList.SetItemText(lCount+i,lTemp++,strTemp);
			str.Format( _T("%d-%s[%s]") , pNewData->lCorpID,pNewData->szCorpName,pNewData->szCreateUser);
			m_wndList.SetItemText(lCount+i,lTemp++,str);
			strTemp = DLG_SignNameSee::GetSignNameType(pNewData->lSignNameType);
			m_wndList.SetItemText(lCount + i, lTemp++, strTemp);
			m_wndList.SetItemText(lCount + i, lTemp++, pNewData->szSignName);
			m_wndList.SetItemText(lCount + i, lTemp++, pNewData->szRemark);
			COleDateTime t(pNewData->tCreateTime);
			if (t.GetStatus() == COleDateTime::valid)
			{
				strTemp.Format(_T("%04d.%02d.%02d %02d:%02d"), pNewData->tCreateTime.wYear, pNewData->tCreateTime.wMonth, pNewData->tCreateTime.wDay, pNewData->tCreateTime.wHour, pNewData->tCreateTime.wMinute);
			}
			else
			{
				strTemp = _T(" ");
			}
			m_wndList.SetItemText(lCount + i, lTemp++, strTemp);
			m_wndList.SetItemText(lCount + i, lTemp++, pNewData->szAuditOpinion);
			m_wndList.SetItemText(lCount + i, lTemp++, pNewData->szAuditKF);
			
			//�������
			strTemp.Format(_T("%d"), pNewData->lReqCount);
			m_wndList.SetItemText(lCount + i, lTemp++, strTemp);

			m_wndList.SetItemData(lCount+i,(DWORD_PTR)(pos) );

			pData++;
		}

		//��Ҫ����
		if (this->m_pMainFrame->m_Setup.Warning_Enable && m_pMainFrame->m_Setup.Warning_Timer > 0)
		{
			if (!m_pMainFrame->m_Setup.Warning_OnlyContent)
			{
				/*
				KillTimer(1);

				m_pMainFrame->m_pUserView->m_dlgCheckup.Warning_Close();  //ˢ���ˣ�ֹͣ����

#ifdef _DEBUG
				SetTimer(1, 8 * 1000, NULL);
#else
				SetTimer(1, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000, NULL);
#endif
				*/
			}
			else
			{
				KillTimer(11);  //ˢ���ˣ����ó�ʱ���
				if (m_lCheckCount > 0)  //�����ݣ���Ҫ����
				{
					m_pMainFrame->m_pUserView->m_dlgCheckup.Warning_Checkup(_T("��ǩ�������"));
				}
				else
				{
					//���������ݣ�ͬʱ���ж���������Ƿ������ݣ�����������Ҳû���ݣ��Ͳ�����������
					if (m_pMainFrame->m_pUserView->m_dlgCheckup.m_wndList.GetItemCount() <= 0 &&
						m_pMainFrame->m_pUserView->m_dlgSmsTask.m_wndList.GetItemCount() <= 0 &&
						m_pMainFrame->m_pUserView->m_dlgTemplate.m_lCheckCount <= 0)
					{
						KillTimer(2);  //�ص�ͼ������
						m_pMainFrame->m_pUserView->m_dlgCheckup.Warning_Close();  //�������ˣ�ֹͣ����
					}

#ifdef _DEBUG
					SetTimer(10, 8 * 1000, NULL);
#else
					SetTimer(10, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000, NULL);  //�´��Զ�ˢ��ʱ��
#endif

				}


			}

		}

		return true;
	}

	if ( pHead->lFuncType == SMSFUNC_SIGNNAME_MODIFY)  //�޸��û�
	{
		ANS_SignName_Modify     * pSee     = (ANS_SignName_Modify *)pFrame;

		if ( pSee->bOK )
		{
			ANS_SignName_SeeData * pSeeData = NULL;
			if ( m_wndList.GetItemData(pSee->lItem) >0 )
			{
				pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(pSee->lItem));
			}
			if ( pSeeData && pSeeData->lSignNameID == pSee->lSignNameID )
			{
				pSeeData->lStatus = pSee->lStatus;
				_tcscpy(pSeeData->szAuditKF, pSee->szAuditKF);
				_tcscpy(pSeeData->szAuditOpinion, pSee->szAuditOpinion);
				pSeeData->tAuditTime = pSee->tAuditTime;
				CString strTemp;
				long lIcon;
				switch (pSee->lStatus)
				{
				case 0:
					lIcon = 0;
					break;
				case 1:
					lIcon = 1;
					break;
				case 2:
					lIcon = 2;
					break;
				default:
					lIcon = 3;
					break;
				}
				strTemp = DLG_SignNameSee::GetSignNameStatus(pSee->lStatus);
				m_wndList.SetItemText(pSee->lItem , 1 , strTemp );
				m_wndList.SetItemText(pSee->lItem, 7, pSee->szAuditOpinion);
				m_wndList.SetItemText(pSee->lItem, 8, pSee->szAuditKF);

				//m_wndList.SetHeadings(_T("���,50;״̬,80;�ύ�û�,300;ģ������,80;ģ������,150;ģ������,250;ģ�屸ע,150;����ʱ��,130;�������,200;�����,150;"));

			}
		}
		else
		{
			str.Format( _T("�޸Ķ���ǩ��״̬ʧ�ܣ�%s") , pSee->szErrMsg );
			MessageBox(str , _T("����") , MB_ICONWARNING );
		}
		return true;
	}


	return false;
}

BOOL CK_SignName::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_PTR)pos);
			pData ++;
		}
		m_L_Corp.SetCurSel(0);
		return true;
	}

	//�鿴�û���¼
	if (pHead->lFuncType == SMSFUNC_CORP_FILE)
	{
		ANS_Corp_File     * pFile = (ANS_Corp_File     *)pHead->pFrame;

			if (m_pDlgFile)
				m_pDlgFile->ProcessSocket(pHead);
		return true;
	}
	return false;
}

BOOL CK_SignName::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_LIST) );
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("���,50;״̬,100;�ύ�û�,350;ǩ������,150;ǩ������,150;���뱸ע,150;����ʱ��,180;�������,250;�����,150;�������,120;"));
	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 );//����
	*/

	COleDateTime t=COleDateTime::GetCurrentTime();
	COleDateTime t2=t-COleDateTimeSpan(3,0,0,0);  //Ĭ�ϲ�3��������
	m_tBegin = t2; //��ʼ
	m_tEnd   = t; //����

	m_lStatus=1;  //�����
	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 CK_SignName::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 CK_SignName::Close()
{
	Close_Corp();
	Close_ListData();
}

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


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

	if ( m_lQueryCorpID )
	{
		pSee->lCorpID = m_lQueryCorpID;
		pSee->lStatus = -1;        //��ѯ���еļ�¼
		m_lQueryCorpID = 0;
	}
	else
	{
		
		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;
			}
		}
	}

	m_tBegin.GetAsSystemTime( pSee->tBegin );
	m_tEnd.GetAsSystemTime( pSee->tEnd );

	switch ( m_lTop )
	{
	case 1:
		pSee->lTop = 200;
		break;
	case 2:
		pSee->lTop = 500;
		break;
	case 3:
		pSee->lTop = 1000;
		break;
	case 4:
		pSee->lTop = 2000;
		break;
	case 5:
		pSee->lTop = 5000;
		break;
	case 0:
	default:
		pSee->lTop = -1;
		break;
	}
	pSee->lStatus =  m_lStatus-1;  //��ѯ״̬��

	this->Close_ListData();              //�ر�ԭ����
	m_wndList.ShowWindow( SW_HIDE ); //Ϊ�˼ӿ���ʾ�ٶ�
	m_wndList.DeleteAllItems();  //��ɾ�����м�¼
	m_pMainFrame->SendFrame(SMSFUNC_SIGNNAME_SEE,(BYTE*)pSee,sizeof(REQ_SignName_See));
	m_wndList.ShowWindow( SW_SHOW ); //Ϊ�˼ӿ���ʾ�ٶ�
	return ;	
}

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

	On_User_See();
}

void CK_SignName::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 CK_SignName::OnRclickListList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu();
}

void CK_SignName::ShowRMenu()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	if (m_lQueryCorpID == -100)
		return;

	CMenu menu;
	menu.CreatePopupMenu();
	BOOL bLock = false;
	long lItem = this->GetCurrentSelected();
	//����
	if ( lItem>=0 )
	{
		menu.AppendMenu(MF_STRING     , MENU_LIST_SEE    , _T(" �� �� ") );
		//menu.AppendMenu(MF_STRING     , MENU_LIST_CORPLIST, _T(" ��ѯ����ҵ�嵥 ") );
		//menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING     , MENU_LIST_CORPOFF , _T(" ���ô���ҵ ") );
		menu.AppendMenu(MF_SEPARATOR );


		ANS_SignName_SeeData * pSeeData = NULL;
		if ( m_wndList.GetItemData(lItem) >0 )
		{
			pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
		}
		if ( pSeeData && pSeeData->lStatus==0 )
		{
			//0-����ˣ�1-���ͨ����3-���ʧ��
				menu.AppendMenu(MF_STRING     , MENU_SIGNNAME_PASS , _T(" ���ͨ�� ") );
				menu.AppendMenu(MF_STRING     , MENU_SIGNNAME_NOPASS , _T(" ���ʧ�� ") );
				menu.AppendMenu(MF_SEPARATOR );
		}
		if (pSeeData && pSeeData->lStatus != 0)
		{
			//0-����ˣ�1-���ͨ����3-���ʧ��
			menu.AppendMenu(MF_STRING, MENU_SIGNNAME_PASS, _T(" �������ͨ�� "));
			menu.AppendMenu(MF_STRING, MENU_SIGNNAME_NOPASS, _T(" �������ʧ�� "));
			menu.AppendMenu(MF_SEPARATOR);
		}
	}
	else
	{
		//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_SEPARATOR );
	menu.AppendMenu(MF_STRING     , MENU_LIST_COPY    , _T(" �� �� ") );
	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

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

void CK_SignName::Audit(ANS_SignName_SeeData * pSeeData, long lItem,long lAuditStatus)
{
	if (!pSeeData)
		return;

	long lOpenCorp = 0;
	CString strAuditOpinion;

	if (pSeeData->lStatus == 0 && lAuditStatus == 1)  //δ��˵�ģ�����ͨ��ʱ���Բ�¼��������
	{
	}
	else
	{
		DLG_SignNameSee dlg(this);
		m_pDlgFile = &dlg;
		if (lAuditStatus == 0)  //û����ƻ����״̬��Ϊֱ��˫���鿴
		{
			if (pSeeData->lStatus == 0)  //�����ǰ״̬Ϊδ��ˣ�˫��ʱ������ˡ�
			{
				dlg.SetParam(*pSeeData, 1, 0);
			}
			else
			{
				dlg.SetParam(*pSeeData, 0, 0);  //�����ǰ״̬Ϊ����ˣ�˫��ʱ���鿴��
			}
		}
		else
		{
			//�˵���ѡ�������ͨ����ʧ�ܣ�����ԭ����״̬��ת��Ϊ�����״̬
			dlg.SetParam(*pSeeData, 1, lAuditStatus);  
		}
		if (dlg.DoModal() == IDOK)
		{
			m_pDlgFile = NULL;
			lAuditStatus = dlg.m_SeeData.lStatus;
			if (lAuditStatus==1) //���ͨ��
				lOpenCorp = dlg.m_bOpenCorp;
			strAuditOpinion = dlg.m_SeeData.szAuditOpinion;
		}
		else
		{
			m_pDlgFile = NULL;
			return;
		}
	}

	REQ_SignName_Modify * pModify = new REQ_SignName_Modify;

	memset(pModify, 0, sizeof(REQ_SignName_Modify));

	pModify->lCorpID = pSeeData->lCorpID;
	pModify->lUserID = pSeeData->lUserID;
	pModify->lAgentID = pSeeData->lAgentID;
	pModify->lSignNameID = pSeeData->lSignNameID;
	pModify->lItem = lItem;
	pModify->lOldStatus = pSeeData->lStatus;
	pModify->lStatus = lAuditStatus;  //���״̬
	pModify->lOpenCorp = lOpenCorp;
	pModify->lDefaultSignName = pSeeData->lDefaultSignName;
	pModify->lUserSignName = pSeeData->lUserSignName;
	_tcscpy(pModify->szAuditOpinion, strAuditOpinion);  //������
	pModify->tMaxDelayTime = pSeeData->tCreateTime;  //����ʱ��

	pModify->lSignNameType = pSeeData->lSignNameType;
	_tcscpy(pModify->szSignName, pSeeData->szSignName);
	_tcscpy(pModify->szRemark, pSeeData->szRemark);

	m_pMainFrame->SendFrame(SMSFUNC_SIGNNAME_MODIFY, (BYTE*)pModify, sizeof(REQ_SignName_Modify));

}

void CK_SignName::On_Task_Pass()
{
	long lRet = MessageBox( _T("ȷʵҪ���˶���ǩ�����ͨ����"),_T("����"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return ;

	long lItem  = this->GetCurrentSelected();
	if ( lItem<0 )
		return ;

	ANS_SignName_SeeData * pSeeData = NULL;
	if ( m_wndList.GetItemData(lItem) >0 )
	{
		pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
	}
	if ( !pSeeData )
		return ;


	Audit(pSeeData, lItem, 1);  //���ͨ��
}
void CK_SignName::On_Task_NoPass()
{
	long lRet = MessageBox(_T("ȷʵҪ���˶���ǩ�����ʧ�ܣ�"), _T("����"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2);
	if (lRet != IDYES)
		return;

	long lItem = this->GetCurrentSelected();
	if (lItem < 0)
		return;

	ANS_SignName_SeeData * pSeeData = NULL;
	if (m_wndList.GetItemData(lItem) > 0)
	{
		pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
	}
	if (!pSeeData)
		return;


	Audit(pSeeData, lItem, 2);  //���ʧ��
}


void CK_SignName::On_User_See()
{
	if (!m_pMainFrame->GetUserPurview(PURVIEW_FILT))
	{
		return;
	}
	ANS_SignName_SeeData * pSeeData = NULL;
		long lItem = GetCurrentSelected();
		if (lItem < 0)
			return;

		if (m_wndList.GetItemData(lItem) > 0)
		{
			pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
		}
		if (!pSeeData)
			return;

	Audit(pSeeData,lItem, 0);
}

void CK_SignName::On_User_Export()
{

	m_wndList.CopyToClipboard();
/*
	//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("״̬����"));
	DLG_HZB_Export dlg(this);
	dlg.SetParam( &m_wndList );
	dlg.SetListItem(item,13,-2);
	dlg.DoModal();
*/
}
void CK_SignName::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 CK_SignName::Close_Corp()
{
	//������������
	while (!m_Corp.IsEmpty())
	{
		ANS_Corp_NameData * pData = m_Corp.GetHead();
		m_Corp.RemoveHead();
		delete pData;
	}

}

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

}



void CK_SignName::On_User_SmsList()
{
	/*
	if (!m_pMainFrame->GetUserPurview(PURVIEW_FILT))
	{
		return;
	}
	*/

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

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_SignName_SeeData * pData = m_ListData.GetNext(pos);
	if (!pData)
		return;
	REQ_SignName_See * pSee = new REQ_SignName_See;
	memset(pSee, 0, sizeof(REQ_SignName_See));

	pSee->lCorpID = pData->lSignNameID;
	pSee->lStatus = -100;        //��ѯ���еļ�¼
	m_lQueryCorpID = -100;

	switch (m_lTop)
	{
	case 1:
		pSee->lTop = 200;
		break;
	case 2:
		pSee->lTop = 500;
		break;
	case 3:
		pSee->lTop = 1000;
		break;
	case 4:
		pSee->lTop = 2000;
		break;
	case 5:
		pSee->lTop = 5000;
		break;
	case 0:
	default:
		pSee->lTop = -1;
		break;
	}
	this->Close_ListData();              //�ر�ԭ����
	m_wndList.ShowWindow(SW_HIDE); //Ϊ�˼ӿ���ʾ�ٶ�
	m_wndList.DeleteAllItems();  //��ɾ�����м�¼
	m_pMainFrame->SendFrame(SMSFUNC_SIGNNAME_SEE, (BYTE*)pSee, sizeof(REQ_SignName_See));
	m_wndList.ShowWindow(SW_SHOW); //Ϊ�˼ӿ���ʾ�ٶ�

}

void CK_SignName::On_User_CorpList()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}

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

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_SignName_SeeData * pData = m_ListData.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();
	/*
	m_lQueryCorpID = pData->lCorpID;
	OnListQuery();
	*/
}

void CK_SignName::On_User_CorpOFF()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}

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

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_SignName_SeeData * 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 CK_SignName::OnTimer(UINT_PTR nIDEvent)
{
	CDialog::OnTimer(nIDEvent);

	if (nIDEvent == 10)  //ˢ������
	{
		KillTimer(10);
#ifdef  _DEBUG
		SetTimer(11, 5000, NULL);  //40��ˢ�³�ʱ
#else
		SetTimer(11, 40000, NULL);  //40��ˢ�³�ʱ
#endif
		OnListQuery();

	}

	if (nIDEvent == 11)  //ˢ�³�ʱ
	{
		KillTimer(nIDEvent);
		m_pMainFrame->m_pUserView->m_dlgCheckup.Warning_Checkup(_T("����ģ��ˢ�³�ʱ"));

#ifdef _DEBUG
		SetTimer(10, 8 * 1000, NULL);
#else
		SetTimer(10, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000 /2, NULL);  //��ʱ���ٴ�ˢ��
#endif
	}

}