// DLG_User_Log.cpp : implementation file
//

#include "stdafx.h"
#include "corpsms.h"
#include "DLG_User_Log.h"

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

/////////////////////////////////////////////////////////////////////////////
// DLG_User_Log dialog
#include "FSmsLog.h"
#include "DLG_SmsLogSee.h"

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

	m_bHideNum = false;
}


void DLG_User_Log::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_User_Log)
	DDX_Control(pDX, IDC_USER_LOG_SEND, m_wndSend);
	DDX_Control(pDX, IDC_USER_LOG_RECV, m_wndRecv);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_User_Log, CDialog)
	//{{AFX_MSG_MAP(DLG_User_Log)
	ON_NOTIFY(NM_DBLCLK, IDC_USER_LOG_SEND, OnDblclkUserLogSend)
	ON_NOTIFY(NM_DBLCLK, IDC_USER_LOG_RECV, OnDblclkUserLogRecv)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_User_Log message handlers

void DLG_User_Log::SetParam(CAdoRecordSet *pAdo, const TCHAR *pMobile)
{
	m_pAdoRS = pAdo;
	m_strMobile = pMobile;
}

BOOL DLG_User_Log::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//��ʼ��List

	m_ImageSend.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
	m_ImageSend.Add(AfxGetApp()->LoadIcon(IDI_L_SMSDF) );
	m_ImageSend.Add(AfxGetApp()->LoadIcon(IDI_L_SMSYF) );
	m_ImageSend.Add(AfxGetApp()->LoadIcon(IDI_L_SMSJS) );
	m_ImageSend.Add(AfxGetApp()->LoadIcon(IDI_L_SMSSB) );
	m_wndSend.SubClassWindow2();
	m_wndSend.SetHeadings(_T("���,50;  ״̬,70;  ���պ���,120;       ��������,280;����ʱ��,130;"));
	m_wndSend.SetGridLines(true);
	m_wndSend.SetImageList(&m_ImageSend,LVSIL_SMALL);


	m_ImageRecv.Create(16,16,ILC_COLOR32|ILC_MASK,2,2);
	m_ImageRecv.Add(AfxGetApp()->LoadIcon(IDI_L_SMSDF) );
	m_ImageRecv.Add(AfxGetApp()->LoadIcon(IDI_L_SMSJS) );
	m_wndRecv.SubClassWindow2();
	m_wndRecv.SetHeadings(_T("���,50; ���պ���,120;       ��������,280;����ʱ��,130;"));
	m_wndRecv.SetGridLines(true);
	m_wndRecv.SetImageList(&m_ImageRecv,LVSIL_SMALL);

	RefreshSend();
	RefreshRecv();

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

void DLG_User_Log::RefreshSend()
{
	if ( m_strMobile.GetLength()<=0 )
		return ;
	m_wndSend.ShowWindow(SW_HIDE);  //�ӿ���ʾ�ٶ�
	m_wndSend.DeleteAllItems();
	CString str;
	str.Format(_T("select * from smslog where RecvNum='%s' order by SubTime desc") , m_strMobile );
	BOOL b = m_pAdoRS->Open( str );
	long lSendID;
	long lStatus;
	TCHAR szTemp[32]={0};
	TCHAR szStatus[24];
	TCHAR szSendNum[24];
	TCHAR szRecver[64];
	TCHAR szRecvNum[64];
	TCHAR szMsg[180];
	COleDateTime tSub;
	COleDateTime tRecv;
	long lCount = m_pAdoRS->GetRecordCount();
	if ( b && lCount>0 )
	{
		m_pAdoRS->MoveFirst();
		long iItem = 0;
		while( !m_pAdoRS->IsEOF() )
		{
			m_pAdoRS->GetCollect( _T("SendID") , lSendID );
			m_pAdoRS->GetCollect( _T("Status") , lStatus );
			m_pAdoRS->GetCollect( _T("SendNum") , szSendNum );
			m_pAdoRS->GetCollect( _T("Recver")  , szRecver );
			m_pAdoRS->GetCollect( _T("RecvNum") , szRecvNum );
			m_pAdoRS->GetCollect( _T("Msg")     , szMsg );
			m_pAdoRS->GetCollect( _T("SubTime") , tSub );
			m_pAdoRS->GetCollect( _T("RecvTime"), tRecv );

			if ( m_bHideNum )
			{
				szRecvNum[4]='*';
				szRecvNum[5]='*';
				szRecvNum[6]='*';
				szRecvNum[7]='*';
				//szRecvNum[8]='*';
			}


#ifdef STATUS_ENABLE_RECV
			long lIcon = CFSmsLog::GetStatusText( lStatus , szStatus );
#else
			long lIcon = CFSmsLog::GetStatusText2( lStatus , szStatus );
#endif
			//m_wndSend.SetHeadings(_T("���,50;  ״̬,70;  ���պ���,120;       ��������,280;����ʱ��,130;"));
			m_wndSend.InsertItem( iItem , _itot( lCount-iItem,szTemp,10) ,lIcon );
			m_wndSend.SetItemData( iItem,lSendID );

			//m_wndSend.SetIconIndex( iItem , lIcon );
			m_wndSend.SetItemText(iItem,1,szStatus);
			if ( _tcslen(szRecver)>0 )
			{
				_tcscat( szRecvNum , _T("-") );
				_tcscat( szRecvNum , szRecver );
			}
			m_wndSend.SetItemText(iItem,2,szRecvNum);
			m_wndSend.SetItemText(iItem,3,szMsg);
			if ( tSub.GetStatus() == COleDateTime::valid )
			{
				_stprintf( szMsg , _T("%04d.%02d.%02d %02d:%02d") , tSub.GetYear(),tSub.GetMonth(),tSub.GetDay(),tSub.GetHour(),tSub.GetMinute() );
				m_wndSend.SetItemText(iItem,4,szMsg);
			}
/*
#ifdef STATUS_ENABLE_RECV
			if ( tRecv.GetStatus() == COleDateTime::valid )
			{
				_stprintf( szMsg , _T("%04d.%02d.%02d %02d:%02d") , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
				m_wndList.SetItemText(iItem,5,szMsg);
			}
#endif
*/
			iItem++;
			m_pAdoRS->MoveNext();
		}
	}
	m_wndSend.ShowWindow( SW_SHOW );  //Ϊ�˼ӿ���ʾ�ٶ�

}

void DLG_User_Log::RefreshRecv()
{
	if ( m_strMobile.GetLength()<=0 )
		return ;
	m_wndRecv.ShowWindow(SW_HIDE);  //�ӿ���ʾ�ٶ�
	m_wndRecv.DeleteAllItems();
	CString str;
	str.Format(_T("select * from smsRecv where SendNum='%s' order by RecvTime desc") , m_strMobile );
	BOOL b = m_pAdoRS->Open( str );
	long lRecvID;
	BOOL bRead;
	TCHAR szTemp[32]={0};
	//TCHAR szSender[64];
	//TCHAR szSendNum[128];
	TCHAR szRecvNum[64];
	TCHAR szMsg[180];
	COleDateTime tRecv;
	long lCount = m_pAdoRS->GetRecordCount();
	if ( b && lCount>0 )
	{
		m_pAdoRS->MoveFirst();
		long iItem = 0;
		while( !m_pAdoRS->IsEOF() )
		{
			m_pAdoRS->GetCollect( _T("RecvID") , lRecvID );
			m_pAdoRS->GetCollect( _T("Reader") , bRead );
			//m_pAdoRS->GetCollect( _T("SendNum") , szSendNum );
			//m_pAdoRS->GetCollect( _T("Sender")  , szSender );
			m_pAdoRS->GetCollect( _T("RecvNum") , szRecvNum );
			m_pAdoRS->GetCollect( _T("Msg")     , szMsg );
			m_pAdoRS->GetCollect( _T("RecvTime"), tRecv );


			//if ( _tcslen(szSender)>0 )
			//{
			//	_tcscat( szSendNum , _T("-") );
			//	_tcscat( szSendNum , szSender );
			//}

			//m_wndRecv.SetHeadings(_T("���,50;  ���ͺ���,150;���պ���,120;       ��������,280;����ʱ��,130;"));
			m_wndRecv.InsertItem( iItem , _itot( lCount-iItem,szTemp,10) , bRead );
			m_wndRecv.SetItemData( iItem,lRecvID );
			//m_wndRecv.SetIconIndex( iItem , bRead );

			//m_wndRecv.SetItemText(iItem,1,szSendNum);
			m_wndRecv.SetItemText(iItem,1,szRecvNum);
			m_wndRecv.SetItemText(iItem,2,szMsg);
			if ( tRecv.GetStatus() == COleDateTime::valid )
			{
				_stprintf( szMsg , _T("%04d.%02d.%02d %02d:%02d") , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
				m_wndRecv.SetItemText(iItem,3,szMsg);
			}
/*
#ifdef STATUS_ENABLE_RECV
			if ( tRecv.GetStatus() == COleDateTime::valid )
			{
				_stprintf( szMsg , "%04d.%02d.%02d %02d:%02d" , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
				m_wndList.SetItemText(iItem,5,szMsg);
			}
#endif
*/
			iItem++;
			m_pAdoRS->MoveNext();
		}
	}
	m_wndRecv.ShowWindow( SW_SHOW );  //Ϊ�˼ӿ���ʾ�ٶ�

}

void DLG_User_Log::OnDblclkUserLogSend(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	long lItem = GetCurrentSelected_Send();
	if ( lItem <0 )
		return ;
	SMS_See sms = GetSms_Send(lItem);
	sms.lType = SMS_SEE_TYPE_LOG;
	DLG_SmsLogSee dlg(this);
	dlg.SetParam(sms);
	dlg.DoModal();
}

void DLG_User_Log::OnDblclkUserLogRecv(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	long lItem = GetCurrentSelected_Recv();
	if ( lItem <0 )
		return ;
	SMS_See sms = GetSms_Recv(lItem);
	sms.lType = SMS_SEE_TYPE_LOG;
	DLG_SmsLogSee dlg(this);
	dlg.SetParam(sms);
	dlg.DoModal();
}

long DLG_User_Log::GetCurrentSelected_Send()
{
	POSITION pos = m_wndSend.GetFirstSelectedItemPosition();
	if ( pos )
	{
		return m_wndSend.GetNextSelectedItem(pos);
	}
	return -1;
}

long DLG_User_Log::GetCurrentSelected_Recv()
{
	POSITION pos = m_wndRecv.GetFirstSelectedItemPosition();
	if ( pos )
	{
		return m_wndRecv.GetNextSelectedItem(pos);
	}
	return -1;
}

SMS_See DLG_User_Log::GetSms_Send(long lItem)
{
	SMS_See sms={0};

	long lSendID = m_wndSend.GetItemData(lItem);
	CString strSelect;
	long lStatus;
	TCHAR szSender[16]={0};
	TCHAR szRecver[16]={0};
	COleDateTime t;
	strSelect.Format( _T("select * from smslog where SendID=%d") , lSendID );
	if ( m_pAdoRS->Open( strSelect ) && m_pAdoRS->GetRecordCount()>0 )
	{
		m_pAdoRS->MoveFirst();
		m_pAdoRS->GetCollect( _T("Status")  , lStatus );
		m_pAdoRS->GetCollect( _T("SendNum") , sms.szSender );
		m_pAdoRS->GetCollect( _T("Recver")  , szRecver );
		m_pAdoRS->GetCollect( _T("RecvNum") , sms.szRecver );
		m_pAdoRS->GetCollect( _T("Msg")     , sms.szMsg );
		m_pAdoRS->GetCollect( _T("SubTime") , t );t.GetAsSystemTime(sms.tSend);
		m_pAdoRS->GetCollect( _T("RecvTime"), t );t.GetAsSystemTime(sms.tRecv);

		CFSmsLog::GetStatusText( lStatus , sms.szStatus );



		if ( _tcslen(szSender)>0 )
		{
			_tcscat( sms.szSender , _T("-") );
			_tcscat( sms.szSender , szSender );
		}
		if ( m_bHideNum )
		{
			szRecver[4]='*';
			szRecver[5]='*';
			szRecver[6]='*';
			szRecver[7]='*';
			//user.szMobile[8]='*';
		}
		if ( _tcslen(szRecver)>0 )
		{
			_tcscat( sms.szRecver , _T("-") );
			_tcscat( sms.szRecver , szRecver );
		}
	}

	return sms;
}

SMS_See DLG_User_Log::GetSms_Recv(long lItem)
{
	SMS_See sms={0};

	long lRecvID = m_wndRecv.GetItemData(lItem);
	CString strSelect;
	TCHAR szSender[16]={0};
	TCHAR szRecver[16]={0};
	COleDateTime t;
	strSelect.Format( _T("select * from smsrecv where RecvID=%d") , lRecvID );
	if ( m_pAdoRS->Open( strSelect ) && m_pAdoRS->GetRecordCount()>0 )
	{
		m_pAdoRS->MoveFirst();
		m_pAdoRS->GetCollect( _T("SendNum") , sms.szSender );
		m_pAdoRS->GetCollect( _T("RecvNum") , sms.szRecver );
		m_pAdoRS->GetCollect( _T("Msg")     , sms.szMsg );
		m_pAdoRS->GetCollect( _T("RecvTime"), t );t.GetAsSystemTime(sms.tRecv);
		sms.tSend = sms.tRecv;
		_tcscpy( sms.szStatus , _T("�� ��") );

		//״̬�ı�
		long lRead=1;
		m_pAdoRS->PutCollect( _T("Reader") , lRead );
		m_pAdoRS->Update();
		m_pAdoRS->Close();
		m_wndRecv.SetIconIndex( lItem , 1 ); //��ʾ�Ѷ�ͼ��

	}
	return sms;
}

void DLG_User_Log::SetHideNum(BOOL bHide)
{
	m_bHideNum = bHide;
}