// Msg.cpp : implementation file // #include "stdafx.h" #include "mbamdb.h" #include "Msg.h" #include "MBAMDBFun.h" #include "PerfTimer.h" #include "StringTokenizer.h" extern CCriticalSection m_csConnectDB; #define LISTMSG_TYPE_NONE ( 0 ) // ĬÈÏÏÔʾµÄÏûÏ¢ #define LISTMSG_TYPE_SIMPLE ( 1 ) // Áгö»ñÈ¡²¿·ÖÏûÏ¢ÄÚÈÝ #define LISTMSG_TYPE_CHAT ( 2 ) // Áгö»ñÈ¡ÁÄÌìÏÔʾµÄÏûÏ¢ÄÚÈÝ #define LISTMSG_TYPE_MAGADMIN ( 3 ) // ÁгöÏûÏ¢ID IMPLEMENT_DYNAMIC( CMsgItem, CObject ) // CMsg CMsgItem::CMsgItem() { m_nRowType = ROWTYPE_MSG; Clear(); } CMsgItem::~CMsgItem() { } void CMsgItem::operator =( const CMsgItem& item ) { m_nRowType = item.m_nRowType; m_strID = item.m_strID; m_strSourceID = item.m_strSourceID; m_strSubject = item.m_strSubject; m_strSender = item.m_strSender; m_strSenderName = item.m_strSenderName; m_tmDate = item.m_tmDate; m_nType = item.m_nType; m_nMsgFolder = item.m_nMsgFolder; m_strFolderName = item.m_strFolderName; m_nNeedConfirm = item.m_nNeedConfirm; m_strMsgExtType = item.m_strMsgExtType; m_nReadState = item.m_nReadState; m_nAttachCount = item.m_nAttachCount; m_strAttitudeset = item.m_strAttitudeset; m_nMsgFlag = item.m_nMsgFlag; m_strContentType = item.m_strContentType; m_strContent = item.m_strContent; m_nContentSize = item.m_nContentSize; m_strAppType = item.m_strAppType; m_nIsGroupSend = item.m_nIsGroupSend; m_strReceivers = item.m_strReceivers; m_strReceiverNames = item.m_strReceiverNames; m_tmOpenDate = item.m_tmOpenDate; m_strReceiverAttitude = item.m_strReceiverAttitude; m_arMsgOwners.Copy( item.m_arMsgOwners ); m_arMsgAttachments.Copy( item.m_arMsgAttachments ); m_arMsgPropertys.Copy( item.m_arMsgPropertys ); m_bDownLoaded = item.m_bDownLoaded; m_asResertData.Copy( item.m_asResertData ); m_asResertName.Copy( item.m_asResertName ); } void CMsgItem::Clear() { m_strID = GUID_EMPTY; m_strSourceID = GUID_EMPTY; m_strSubject = _T(""); m_strSender = _T(""); m_strSenderName = _T(""); m_tmDate = COleDateTime::GetCurrentTime( ); m_nType = 0; m_nMsgFolder = 0; m_strFolderName = _T(""); m_nMsgFlag = 0; m_nNeedConfirm = 0; m_strMsgExtType = _T(""); m_strAttitudeset = _T(""); m_nReadState = 0; m_nAttachCount = 0; m_nPropertyCount = 0; m_nMsgExtState = 0; m_nCharset = 0; m_strAppType = _T("MBC"); m_strContentType = _T(""); m_strContent = _T(""); m_nContentSize = 0; m_nIsGroupSend = 0; m_strReceivers = _T(""); m_strReceiverNames = _T(""); m_strReceiverAttitude = _T(""); m_strContentText = _T(""); m_arMsgOwners.RemoveAll(); m_arMsgAttachments.RemoveAll(); m_arMsgPropertys.RemoveAll(); m_asResertData.RemoveAll(); m_asResertName.RemoveAll(); m_bDownLoaded = false; } //=========================================== // Åжϱ¾ÈËÊÇ·ñ´ò¿ª¹ýÕâ¸öÏûÏ¢ //=========================================== BOOL CMsgItem::IHaveOpened() { // ĿǰÒÑÏÂÔØ¹ýÁ˾ÍÈÏΪÊÇÒÑ´ò¿ª¹ýµÄ if( m_nReadState & MSG_READSTATE_IOPEN ) return true; return false; } BOOL CMsgItem::GetItemValue( CString strName, COleVariant &varData ) { varData.Clear(); if ( strName.IsEmpty() ) return false; if ( strName.CompareNoCase( _T( "ID" ) ) == 0 ) varData = m_strID; else if ( strName.CompareNoCase( _T("SourceID") ) == 0 ) varData = m_strSourceID; else if ( strName.CompareNoCase( _T( "Subject" ) ) == 0 ) varData = m_strSubject; else if ( strName.CompareNoCase( _T( "Sender" ) ) == 0 ) varData = m_strSender; else if ( strName.CompareNoCase( _T( "SenderName" ) ) == 0 ) varData = m_strSenderName; else if ( strName.CompareNoCase( _T( "SendDate" ) ) == 0 ) { if( !( m_tmDate.GetStatus() == COleDateTime::valid ) ) { COleDateTime temptime(2000,1,1, 0, 0, 0); m_tmDate = temptime; } COleDateTime oleDate( m_tmDate.GetYear(), m_tmDate.GetMonth(), m_tmDate.GetDay(), m_tmDate.GetHour(), m_tmDate.GetMinute(), m_tmDate.GetSecond() ); varData = oleDate; } else if ( strName.CompareNoCase( _T( "Type" ) ) == 0 ) varData = (long)m_nType; else if ( strName.CompareNoCase( _T( "MsgFolder" ) ) == 0 ) varData = (long)m_nMsgFolder; else if ( strName.CompareNoCase( _T( "NeedConfirm" ) ) == 0 ) varData = (long)m_nNeedConfirm; else if ( strName.CompareNoCase( _T( "Attitudeset" ) ) == 0 ) varData = m_strAttitudeset; else if ( strName.CompareNoCase( _T( "AttachCount" ) ) == 0 ) varData = (long)m_nAttachCount; else if ( strName.CompareNoCase( _T( "AppType" ) ) == 0 ) varData = m_strAppType; else if ( strName.CompareNoCase( _T( "IsGroupSend" ) ) == 0 ) varData =(long) m_nIsGroupSend; else if ( strName.CompareNoCase( _T( "Receivers" ) ) == 0 ) varData = m_strReceivers; else if ( strName.CompareNoCase( _T( "ReceiverNames" ) ) == 0 ) varData = m_strReceiverNames; else if ( strName.CompareNoCase( _T( "OpenDate" ) ) == 0 ) { if( !( m_tmOpenDate.GetStatus() == COleDateTime::valid ) ) { COleDateTime temptime(2000,1,1, 0, 0, 0); m_tmOpenDate = temptime; } COleDateTime oleDate( m_tmOpenDate.GetYear(), m_tmOpenDate.GetMonth(), m_tmOpenDate.GetDay(), m_tmOpenDate.GetHour(), m_tmOpenDate.GetMinute(), m_tmOpenDate.GetSecond() ); varData = oleDate; } else if ( strName.CompareNoCase( _T( "ReceiverAttitude" ) ) == 0 ) varData = m_strReceiverAttitude; else if ( strName.CompareNoCase( _T( "ContentType" ) ) == 0 ) varData = m_strContentType; else if ( strName.CompareNoCase( _T( "ContentSize" ) ) == 0 ) varData = (long)m_nContentSize; else if ( strName.CompareNoCase( _T( "Content" ) ) == 0 ) varData = m_strContent; else return false; return true; } BOOL CMsgItem::InsertRecord( CDBConnect *pAConnect,bool bInsertUnRead) { CString strSQL; BOOL bReturn = true; CString strSourceID; if ( m_strSourceID.IsEmpty() ) strSourceID = GUID_EMPTY; else strSourceID = m_strSourceID; if ( m_strAppType.IsEmpty() ) m_strAppType = _T("MBC"); strSQL.Format( _T("INSERT INTO TN_STK_MSG(G_C1,G_C2 ,S_C3,S_C4,S_C5 ,T_C6,N_C7,N_C8,C_C9,S_C10,\ N_C11,N_C12,N_C13,N_C14 ,N_C15,S_C16,C_C17 ,S_C18,S_C19,T_C20,\ S_C21,S_C22,N_C23,S_C24,S_C25 ) VALUES('%s', '%s', '%s', '%s', '%s', '%s',%d, %d,'%d', '%s',\ %d, %d,%d, %d,%d,'%s','%d','%s','%s','%s',\ '%s','%s',%d,'%s','%s')"), m_strID, strSourceID, CMBAMDBFun::GetDBReplaceStr( m_strSubject ), CMBAMDBFun::GetDBReplaceStr( m_strSender ), CMBAMDBFun::GetDBReplaceStr( m_strSenderName ), CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ),m_nType, m_nMsgFolder, m_nNeedConfirm, CMBAMDBFun::GetDBReplaceStr( m_strMsgExtType ), m_nReadState, m_nAttachCount, m_nMsgFlag, m_nPropertyCount,m_nMsgExtState,m_strAppType,m_nIsGroupSend, m_strReceivers,m_strReceiverNames, CMBAMDBFun::FormatDBTIMEToStr( m_tmOpenDate ), CMBAMDBFun::GetDBReplaceStr( m_strReceiverAttitude ), CMBAMDBFun::GetDBReplaceStr( m_strContentType), m_nContentSize,CMBAMDBFun::GetDBReplaceStr( m_strContent),CMBAMDBFun::GetDBReplaceStr( m_strContentText) ); try { bReturn = CDBSQLiteCommFun::RunSQL(strSQL, pAConnect); } catch ( CDBSQliteException ex ) { CString strError = ex.GetErrInfo(); CString strErrInfo; strErrInfo = _T("InsertRecord - Msg- ") + strError; CMBAMDBFun::WriteDBErrToFile( strErrInfo ); return false; } if( !bInsertUnRead) return true; if( m_nReadState < MSG_READSTATE_IOPEN && (m_nMsgFolder== FOLDER_BOX_IN|| m_nMsgFolder== FOLDER_FAVORITE || m_nMsgFolder ==FOLDER_BROADCAST|| m_nMsgFolder> 100 )) InsertUnreadMsg(pAConnect); return true; } BOOL CMsgItem::UpdateUserAttitude( CDBConnect *pAConnect, CString strAttitude) { CString strSQL; BOOL bReturn = true; CString strSourceID; strSQL.Format( _T("UPDATE TN_STK_MSG SET S_C21 = '%s' WHERE G_C1= '%s'"), CMBAMDBFun::GetDBReplaceStr( strAttitude ), m_strID ); try { bReturn = CDBSQLiteCommFun::RunSQL(strSQL, pAConnect); } catch ( CDBSQliteException ex ) { CString strError = ex.GetErrInfo(); CString strErrInfo; strErrInfo.Format( _T("UpdateUserAttitude(%s) - MsgOwner - %s "),strSQL, strError); CMBAMDBFun::WriteDBErrToFile( strErrInfo ); return false; } return true; } BOOL CMsgItem::UpdateRecord( CDBConnect *pAConnect ) { CString strSQL; BOOL bReturn = true; CString strSourceID; if ( m_strSourceID.IsEmpty() ) strSourceID = GUID_EMPTY; else strSourceID = m_strSourceID; if ( m_strAppType.IsEmpty() ) m_strAppType = _T("MBC"); strSQL.Format( _T("UPDATE TN_STK_MSG SET G_C2 = '%s', S_C3 = '%s', S_C4 = '%s', S_C5 = '%s', T_C6 = '%s',\ N_C7 = %d, N_C8 = %d, C_C9 = '%d', S_C10 = '%s', N_C11 = %d, N_C12 = %d,N_C13 = %d, N_C14 = %d, N_C15 = %d, \ S_C16 = '%s', C_C17 = '%d', S_C18 = '%s', S_C19 = '%s', T_C20 = '%s', \ S_C21 = '%s', S_C22 = '%s', N_C23 = %d, S_C24 = '%s', S_C25 = '%s' WHERE G_C1= '%s'"), strSourceID, CMBAMDBFun::GetDBReplaceStr( m_strSubject ), CMBAMDBFun::GetDBReplaceStr( m_strSender ), CMBAMDBFun::GetDBReplaceStr( m_strSenderName ), CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ),m_nType, m_nMsgFolder, m_nNeedConfirm,CMBAMDBFun::GetDBReplaceStr( m_strMsgExtType ), m_nReadState, m_nAttachCount, m_nMsgFlag, m_nPropertyCount,m_nMsgExtState, m_strAppType,m_nIsGroupSend,m_strReceivers,m_strReceiverNames, CMBAMDBFun::FormatDBTIMEToStr( m_tmOpenDate ), CMBAMDBFun::GetDBReplaceStr( m_strReceiverAttitude ),CMBAMDBFun::GetDBReplaceStr( m_strContentType), m_nContentSize, CMBAMDBFun::GetDBReplaceStr( m_strContent), CMBAMDBFun::GetDBReplaceStr( m_strContentText), m_strID ); try { bReturn = CDBSQLiteCommFun::RunSQL(strSQL, pAConnect); } catch ( CDBSQliteException ex ) { CString strError = ex.GetErrInfo(); CString strErrInfo; strErrInfo.Format( _T("UpdateRecord(%s) - MsgOwner - %s "),strSQL, strError); CMBAMDBFun::WriteDBErrToFile( strErrInfo ); return false; } return true; } CString CMsgItem::GetUpdateRecordSQL( ) { CString strSQL; BOOL bReturn = true; CString strSourceID; if ( m_strSourceID.IsEmpty() ) strSourceID = GUID_EMPTY; else strSourceID = m_strSourceID; if ( m_strAppType.IsEmpty() ) m_strAppType = _T("MBC"); strSQL.Format( _T("UPDATE TN_STK_MSG SET G_C2 = '%s', S_C3 = '%s', S_C4 = '%s', S_C5 = '%s', T_C6 = '%s',\ N_C7 = %d, N_C8 = %d, C_C9 = '%d', S_C10 = '%s', N_C11 = %d, N_C12 = %d,N_C13 = %d, N_C14 = %d, N_C15 = %d, \ S_C16 = '%s', C_C17 = '%d', S_C18 = '%s', S_C19 = '%s', T_C20 = '%s', \ S_C21 = '%s', S_C22 = '%s', N_C23 = %d, S_C24 = '%s', S_C25 = '%s' WHERE G_C1= '%s'"), strSourceID, CMBAMDBFun::GetDBReplaceStr( m_strSubject ), CMBAMDBFun::GetDBReplaceStr( m_strSender ), CMBAMDBFun::GetDBReplaceStr( m_strSenderName ), CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ),m_nType, m_nMsgFolder, m_nNeedConfirm,CMBAMDBFun::GetDBReplaceStr( m_strMsgExtType ), m_nReadState, m_nAttachCount, m_nMsgFlag, m_nPropertyCount,m_nMsgExtState, m_strAppType,m_nIsGroupSend,m_strReceivers,m_strReceiverNames, CMBAMDBFun::FormatDBTIMEToStr( m_tmOpenDate ), CMBAMDBFun::GetDBReplaceStr( m_strReceiverAttitude ),CMBAMDBFun::GetDBReplaceStr( m_strContentType), m_nContentSize, CMBAMDBFun::GetDBReplaceStr( m_strContent), CMBAMDBFun::GetDBReplaceStr( m_strContentText), m_strID ); return strSQL; } BOOL CMsgItem::InsertUnreadMsg(CDBConnect *pAConnect) { CString strSQL; BOOL bReturn = true; if( !m_strMsgExtType.IsEmpty()) return TRUE; strSQL.Format( _T("INSERT INTO TN_STK_UNREADMSG(G_C1,S_C2 ,S_C3,S_C4,T_C5 ) VALUES('%s', '%s', '%s', '%s', '%s')"), m_strID, CMBAMDBFun::GetDBReplaceStr( m_strSender ), CMBAMDBFun::GetDBReplaceStr( m_strSenderName ), CMBAMDBFun::GetDBReplaceStr( m_strSubject ), CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ) ); try { bReturn = CDBSQLiteCommFun::RunSQL(strSQL, pAConnect); } catch ( CDBSQliteException ex ) { CString strError = ex.GetErrInfo(); CString strErrInfo; strErrInfo = _T("InsertUnreadMsg - Msg- ") + strError; CMBAMDBFun::WriteDBErrToFile( strErrInfo ); return false; } return true; } BOOL CMsgItem::CheckOwnerAllOpen( CDBConnect *pAConnect) { CString strSQL; BOOL bReturn = true; CDBRecord ARecordSet; int nCount = 0; strSQL.Format( _T("SELECT COUNT(*) FROM TN_STK_MSGOWNER WHERE G_C1 = '%s' AND T_C4<'1990-01-01'"), m_strID ); try { ARecordSet.Close( ); ARecordSet.Open(pAConnect,strSQL ); while ( S_OK == ARecordSet.MoveNext() ) { ARecordSet.GetValue( 1, nCount ); break; } } catch ( CDBSQliteException ex ) { CString strError = ex.GetErrInfo(); CString strErrInfo; strErrInfo = _T("CMsgItem::CheckOwnerAllOpen - ") + strError; return FALSE; } if(nCount < 1) return TRUE; else return FALSE; } int CMsgItem::FindMsgOwnerr( CString strLoginName,int nOwnerType ) { CMsgOwnerItem itemMsgOwner; int nCount, nIndex; nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemMsgOwner = m_arMsgOwners.GetAt( nIndex ); if ( itemMsgOwner.m_strOwner.CompareNoCase( strLoginName ) == 0 && nOwnerType == itemMsgOwner.m_nOwnerType) return nIndex; } return -1; } int CMsgItem::GetContentType( CString strContentType ) { AMMSGCONTENTTYPE nContentType = AM_CONTENTTYPE_TEXT; if ( strContentType == CONTYPE_TEXT_PLAIN ) nContentType = AM_CONTENTTYPE_MSG; else if ( strContentType == CONTYPE_TEXT_TEXT ) nContentType = AM_CONTENTTYPE_TEXT; else if ( strContentType == CONTYPE_TEXT_AML ) nContentType = AM_CONTENTTYPE_AML; else if ( strContentType == CONTYPE_TEXT_PDM ) nContentType = AM_CONTENTTYPE_PDM; else if ( strContentType == CONTYPE_TEXT_HTML ) nContentType = AM_CONTENTTYPE_HTML; else if ( strContentType == CONTYPE_TEXT_URL ) nContentType = AM_CONTENTTYPE_URL; else if ( strContentType == CONTYPE_TEXT_XML ) nContentType = AM_CONTENTTYPE_XML; else nContentType = AM_CONTENTTYPE_TEXT; return nContentType; } CString CMsgItem::GetContentType( int AMContentType ) { CString strContentType = _T( "" ); switch ( AMContentType ) { case AM_CONTENTTYPE_MSG: strContentType = CONTYPE_TEXT_PLAIN; break; case AM_CONTENTTYPE_TEXT: strContentType = CONTYPE_TEXT_TEXT; break; case AM_CONTENTTYPE_AML: strContentType = CONTYPE_TEXT_AML; break; case AM_CONTENTTYPE_PDM: strContentType = CONTYPE_TEXT_PDM; break; case AM_CONTENTTYPE_HTML: strContentType = CONTYPE_TEXT_HTML; break; case AM_CONTENTTYPE_URL: strContentType = CONTYPE_TEXT_URL; break; case AM_CONTENTTYPE_XML: strContentType = CONTYPE_TEXT_XML; break; default: break; } return strContentType; } int CMsgItem::GetMsgEnType( ) { CString strData; int nMsgEnType = 0; GetProp( _T("msgentype"), strData ); nMsgEnType = _tstoi( strData ); return nMsgEnType; } void CMsgItem::LoadNtyNewMsgData( CComPtr IMessagePtr, long nFlag ) { CString strMsgID; CComBSTR bszMsgID; CComBSTR bszSender; CString strSender; CComBSTR bszSenderName; CString strSenderName; CComBSTR bszSubject; CString strSubject; CComBSTR bszMsgExtType; CString strMsgExtType; CComBSTR bszAppType; CString strAppType; long nMsgType; long nMsgFlag(0); long nAttachCount(0); CComBSTR bszMsg; CString strMsg; CComBSTR bszFolderName; CString strFolderName; CComBSTR bszSendDate; CString strSendDate; CHighTime dtSendDate; SYSTEMTIME tmSystem; AMMSGCONTENTTYPE AMContentType; IMessagePtr->get_MsgID(&bszMsgID); strMsgID = (LPCTSTR)(_bstr_t)bszMsgID; bszMsgID.Empty(); IMessagePtr->get_SenderName(&bszSenderName); strSenderName = (LPCTSTR)(_bstr_t)bszSenderName; bszSenderName.Empty(); IMessagePtr->get_Subject(&bszSubject); strSubject = (LPCTSTR)(_bstr_t)bszSubject; bszSubject.Empty(); IMessagePtr->get_Sender(&bszSender); strSender = (LPCTSTR)(_bstr_t)bszSender; bszSender.Empty(); strSender.MakeLower(); IMessagePtr->GetAttachCount(&nAttachCount); IMessagePtr->get_MsgType(&nMsgType); IMessagePtr->get_SendDate( &bszSendDate ); strSendDate = (LPCTSTR)(_bstr_t)bszSendDate; bszSendDate.Empty(); IMessagePtr->get_MsgExtType(&bszMsgExtType); strMsgExtType = (LPCTSTR)_bstr_t(bszMsgExtType); bszMsgExtType.Empty(); IMessagePtr->get_MsgFlag(&nMsgFlag); IMessagePtr->get_FolderName( &bszFolderName ); m_strFolderName = (LPCTSTR)(_bstr_t)bszFolderName; bszFolderName.Empty(); IMessagePtr->get_MsgContentType(&AMContentType); m_strContentType = GetContentType(AMContentType); IMessagePtr->get_AppType(&bszAppType); strAppType = (LPCTSTR)(_bstr_t)bszAppType; bszFolderName.Empty(); m_nMsgFlag = (DWORD)nMsgFlag; m_strID = strMsgID; m_strSenderName = strSenderName; m_strSubject = strSubject; m_strSender = strSender; m_strAppType = strAppType; m_nType = nMsgType; m_strMsgExtType = strMsgExtType; m_nAttachCount = nAttachCount; if ( dtSendDate.ParseDateTime( strSendDate ) ) { dtSendDate.GetAsSystemTime( tmSystem ); m_tmDate = COleDateTime( tmSystem.wYear, tmSystem.wMonth, tmSystem.wDay, tmSystem.wHour, tmSystem.wMinute, tmSystem.wSecond ); } } BOOL CMsgItem::LoadData(CComPtr IMessagePtr) { int nNum; AMMSGCONTENTTYPE AMContentType; CString strMsgID, strSourceMsgID; long nAttachCount; __int64 nAttachSize; long nReceiverCount; long nNeedConfirm, nIsDownloaded; CComBSTR bszMsgID; CComBSTR bszReceiver; CComBSTR bszReceiverName; CComBSTR bszAttachName; CComBSTR bszModifyDate; CComBSTR bszFileID; CComBSTR bszFilesFlag; CComBSTR bszAttachPath; CComBSTR bszSender; CString strSender; CComBSTR bszSendDate; CString strSendDate; CComBSTR bszSenderName; CString strSenderName; CComBSTR bszSubject; CString strSubject; CComBSTR bszMsgExtType; CString strMsgExtType; CComBSTR bszMeetID; CString strMeetID; long nMsgType; CComBSTR bszMsg; CString strMsg; CComBSTR bszAppType; CString strAppType; CMsgOwnerItem itemMsgOwner; CMsgAttachmentItem itemMsgAttachment; CComBSTR bszFolderName; CHighTime dtSendDate; SYSTEMTIME tmSystem; IMessagePtr->get_MsgContentType(&AMContentType); IMessagePtr->GetMsgContent(AMContentType, &bszMsg); strMsg = (LPCTSTR)(_bstr_t)bszMsg; bszMsg.Empty(); IMessagePtr->get_MsgID(&bszMsgID); strMsgID = (LPCTSTR)(_bstr_t)bszMsgID; bszMsgID.Empty(); IMessagePtr->get_SourceMsgID( &bszMsgID ); strSourceMsgID =(LPCTSTR)(_bstr_t) bszMsgID; bszMsgID.Empty(); IMessagePtr->get_SendDate(&bszSendDate); strSendDate = (LPCTSTR)(_bstr_t) bszSendDate; bszSendDate.Empty(); IMessagePtr->get_SenderName(&bszSenderName); strSenderName = (LPCTSTR)(_bstr_t) bszSenderName; bszSenderName.Empty(); IMessagePtr->get_Subject(&bszSubject); strSubject = (LPCTSTR)(_bstr_t) bszSubject; bszSubject.Empty(); IMessagePtr->get_Sender(&bszSender); strSender = (LPCTSTR)(_bstr_t) bszSender; bszSender.Empty(); strSender.MakeLower(); IMessagePtr->GetAttachCount(&nAttachCount); IMessagePtr->get_MsgType(&nMsgType); IMessagePtr->get_AppType(&bszAppType); strAppType = (LPCTSTR)(_bstr_t)bszAppType; bszFolderName.Empty(); m_strAppType = strAppType; for (nNum = 0; nNum < nAttachCount; nNum++) { IMessagePtr->GetAttachName(nNum, &bszAttachName); IMessagePtr->GetAttachSize(nNum, &nAttachSize); IMessagePtr->GetAttachModifyDate(nNum, &bszModifyDate); IMessagePtr->GetAttachFileID(nNum, &bszFileID); IMessagePtr->GetAttachFileSFlag(nNum, &bszFilesFlag); itemMsgAttachment.m_strFileName = (LPCTSTR)(_bstr_t)bszAttachName; itemMsgAttachment.m_nFileSize = nAttachSize; itemMsgAttachment.m_strFileSFlag = (LPCTSTR)(_bstr_t)bszFilesFlag; itemMsgAttachment.m_strFileID = (LPCTSTR)(_bstr_t)bszFileID; bszAttachName.Empty(); bszModifyDate.Empty(); bszFilesFlag.Empty(); itemMsgAttachment.m_strMsgID = strMsgID ; IMessagePtr->GetAttrib( bszFileID, &bszAttachPath ); itemMsgAttachment.m_strFilePath =(LPCTSTR)(_bstr_t) bszAttachPath; bszFileID.Empty(); bszAttachPath.Empty(); m_arMsgAttachments.Add( itemMsgAttachment ); } IMessagePtr->GetReceiverCount(&nReceiverCount); for (nNum = 0; nNum < nReceiverCount; nNum++) { IMessagePtr->GetReceiverName(nNum, &bszReceiverName); IMessagePtr->GetReceiver(nNum, &bszReceiver); itemMsgOwner.m_strOwnerName = (LPCTSTR)(_bstr_t)bszReceiverName; itemMsgOwner.m_strOwner = (LPCTSTR)(_bstr_t)bszReceiver; itemMsgOwner.m_strOwner.MakeLower(); itemMsgOwner.m_tmOpenDate = COleDateTime( 1971, 1, 1, 0, 0, 0 ); itemMsgOwner.m_strMsgID = strMsgID ; bszReceiverName.Empty(); bszReceiver.Empty(); m_arMsgOwners.Add( itemMsgOwner ); } if(nReceiverCount > 1) { m_nIsGroupSend = true; } else { m_nIsGroupSend = false; m_strReceivers = itemMsgOwner.m_strOwner ; m_strReceiverNames = itemMsgOwner.m_strOwnerName ; } IMessagePtr->IsNeedConfirm(&nNeedConfirm); m_nNeedConfirm = nNeedConfirm; m_strID = strMsgID; m_strSourceID = strSourceMsgID; m_strContentType = GetContentType( AMContentType ); m_strContent = strMsg; if ( dtSendDate.ParseDateTime( strSendDate ) ) { dtSendDate.GetAsSystemTime( tmSystem ); m_tmDate = COleDateTime( tmSystem.wYear, tmSystem.wMonth, tmSystem.wDay, tmSystem.wHour, tmSystem.wMinute, tmSystem.wSecond ); } m_strSenderName = strSenderName; m_strSubject = strSubject; m_strSender = strSender; m_nType = nMsgType; IMessagePtr->IsDownloaded( false , &nIsDownloaded ); if ( nIsDownloaded > 0 ) m_bDownLoaded = true; else m_bDownLoaded = false; IMessagePtr->get_MsgExtType(&bszMsgExtType); strMsgExtType = (LPCTSTR)(_bstr_t)(bszMsgExtType); bszMsgExtType.Empty(); m_strMsgExtType = strMsgExtType; long lTemp; CMsgPropertyItem itemMsgProperty; itemMsgProperty.m_strMsgID = strMsgID; IMessagePtr->get_MsgFlag(&lTemp); m_nMsgFlag = (DWORD)lTemp; IMessagePtr->get_FolderName( &bszFolderName ); m_strFolderName = (LPCTSTR)(_bstr_t)bszFolderName; bszFolderName.Empty(); if ( !m_strFolderName.IsEmpty() ) { itemMsgProperty.m_strMsgID = strMsgID; itemMsgProperty.m_strName = _T("FolderName"); itemMsgProperty.m_strValue = m_strFolderName; m_arMsgPropertys.Add(itemMsgProperty); } //--------------------------------------------- // ±£´æRESERTµÄÐÅÏ¢ //--------------------------------------------- CString strLeftSide; CString strRightSide; CComBSTR bszLeftSide; CComBSTR bszRightSide; if ( m_nMsgFlag & MSGFLAG_RESERTBUTTON ) { IMessagePtr->GetAttrib( (_bstr_t)(_T("LeftSide")), &bszLeftSide ); IMessagePtr->GetAttrib( (_bstr_t)(_T("RightSide")), &bszRightSide ); strLeftSide = ( LPCTSTR)(_bstr_t)bszLeftSide; strRightSide = ( LPCTSTR)(_bstr_t)bszRightSide; bszLeftSide.Empty(); bszRightSide.Empty(); if ( !strLeftSide.IsEmpty() ) AddData( _T("LeftSide"), strLeftSide );//_T("CMDADDIN:FAFAFDA;SYS_HISTORY") ); if ( !strRightSide.IsEmpty() ) AddData( _T("RightSide"), strRightSide );//_T("ͬÒâ;²»Í¬Òâ;SYS_CLOSE") ); } // Begin Modify wangcheng 2007/07/23 long nPropertyCount = 0; CComBSTR bszAttribName; CComBSTR bszAttribValue; CString strAttribName; CString strAttribValue; IMessagePtr->GetAttribCount( &nPropertyCount ); for ( nNum = 0; nNum < nPropertyCount; nNum++ ) { IMessagePtr->GetAttribName( nNum, &bszAttribName ); strAttribName = (LPCTSTR)(_bstr_t)bszAttribName; bszAttribName.Empty( ); IMessagePtr->GetAttribValue( nNum, &bszAttribValue ); strAttribValue = (LPCTSTR)(_bstr_t)bszAttribValue; bszAttribValue.Empty( ); itemMsgProperty.m_strMsgID = strMsgID ; itemMsgProperty.m_strName = strAttribName; itemMsgProperty.m_strValue = strAttribValue; m_arMsgPropertys.Add(itemMsgProperty); } // End Modify m_nPropertyCount = m_arMsgPropertys.GetCount( ); return true; } BOOL CMsgItem::CapyDataTo(CComPtr IMessagePtr) { int nNum; CString strMsgID, strSourceMsgID; long nAttachCount; long nReceiverCount; BSTR bszMsg; BSTR bszValue; CString strMsg; CMsgOwnerItem itemMsgOwner; CMsgAttachmentItem itemMsgAttachment; CString strMsgEnType; CString strValue; CComBSTR bszAppType; CString strAppType; bszMsg = m_strContent.AllocSysString(); int nContentType = GetContentType(m_strContentType); IMessagePtr->put_MsgContentType( (AMMSGCONTENTTYPE)nContentType ); if ( nContentType == AM_CONTENTTYPE_TEXT ) { IMessagePtr->SetMsgContent( (AMMSGCONTENTTYPE)nContentType, bszMsg); } else IMessagePtr->SetMsgContent((AMMSGCONTENTTYPE)nContentType,bszMsg); SysFreeString(bszMsg); bszValue = m_strID.AllocSysString(); IMessagePtr->put_MsgID( bszValue); SysFreeString(bszValue); bszValue = m_strSourceID.AllocSysString(); IMessagePtr->put_SourceMsgID( bszValue); SysFreeString(bszValue); strValue = CMBAMDBFun::FormatDBTIMEToStr(m_tmDate); bszValue = strValue.AllocSysString(); IMessagePtr->put_SendDate( bszValue ); SysFreeString(bszValue); bszValue = m_strSenderName.AllocSysString(); IMessagePtr->put_SenderName( bszValue ); SysFreeString(bszValue); bszValue = m_strSubject.AllocSysString(); IMessagePtr->put_Subject(bszValue); SysFreeString(bszValue); bszValue = m_strSender.AllocSysString(); IMessagePtr->put_Sender(bszValue); SysFreeString(bszValue); IMessagePtr->put_MsgType(m_nType); IMessagePtr->NeedConfirm( m_nNeedConfirm ); IMessagePtr->put_MsgFlag((long)m_nMsgFlag); bszValue = m_strMsgExtType.AllocSysString(); IMessagePtr->put_MsgExtType(bszValue); SysFreeString(bszValue); IMessagePtr->SetDownloaded( m_bDownLoaded ); bszValue = m_strFolderName.AllocSysString(); IMessagePtr->put_FolderName( bszValue ); SysFreeString(bszValue); bszAppType = m_strAppType.AllocSysString(); IMessagePtr->put_AppType(bszAppType); CString strInfo; CString strModifyDate = CMBAMDBFun::FormatDBTIMEToStr(CHighTime::GetPresentTime()); nAttachCount = m_arMsgAttachments.GetSize(); for( nNum = 0 ; nNum < nAttachCount ; nNum++ ) { itemMsgAttachment = m_arMsgAttachments.GetAt( nNum ); BSTR bszrFileSFlag; BSTR bszFileID; BSTR bszFileName; bszrFileSFlag = itemMsgAttachment.m_strFileSFlag.AllocSysString(); bszFileID = itemMsgAttachment.m_strFileID.AllocSysString(); bszFileName = itemMsgAttachment.m_strFileName.AllocSysString(); bszValue = strModifyDate.AllocSysString(); IMessagePtr->AddAttachInfo( bszrFileSFlag, bszFileID, bszFileName , itemMsgAttachment.m_nFileEnType, itemMsgAttachment.m_nFileSize , bszValue ); SysFreeString(bszrFileSFlag); SysFreeString(bszFileName); SysFreeString(bszValue); bszFileName = itemMsgAttachment.m_strFilePath.AllocSysString(); IMessagePtr->SetAttrib( bszFileID, bszFileName ); SysFreeString(bszFileID); SysFreeString(bszFileName); } nReceiverCount = m_arMsgOwners.GetSize(); if(nReceiverCount > 0) { for (nNum = 0; nNum < nReceiverCount; nNum++) { itemMsgOwner = m_arMsgOwners.GetAt(nNum); BSTR bszLoginName; bszLoginName = itemMsgOwner.m_strOwner.AllocSysString(); bszValue = itemMsgOwner.m_strOwnerName.AllocSysString(); IMessagePtr->AddReceiver( bszLoginName , bszValue ); SysFreeString(bszLoginName); SysFreeString(bszValue); } } else { BSTR bszLoginName; bszLoginName = m_strReceivers.AllocSysString(); bszValue = m_strReceiverNames.AllocSysString(); IMessagePtr->AddReceiver( bszLoginName , bszValue ); SysFreeString(bszLoginName); SysFreeString(bszValue); } CMsgPropertyItem itemMsgProperty; int nCount = m_arMsgPropertys.GetSize(); for (nNum = 0; nNum < nCount; nNum++) { itemMsgProperty = m_arMsgPropertys.GetAt(nNum); BSTR bszAttribName; bszAttribName = itemMsgProperty.m_strName.AllocSysString(); bszValue = itemMsgProperty.m_strValue.AllocSysString(); IMessagePtr->SetAttrib( bszAttribName, bszValue ); SysFreeString(bszAttribName); SysFreeString(bszValue); } return true; } BOOL CMsgItem::IsAttitudeOk( CString strRightButton ) { return false; } void CMsgItem::GetProp( CString strName, CString &strData ) { int nCount, nIndex; CMsgPropertyItem itemMsgProperty; strData = _T(""); nCount = m_arMsgPropertys.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemMsgProperty = m_arMsgPropertys.GetAt( nIndex ); if ( itemMsgProperty.m_strName.CompareNoCase(strName) == 0 ) { strData = itemMsgProperty.m_strValue; break; } } } void CMsgItem::SetProp( CString strName, CString strData ) { int nCount, nIndex; CMsgPropertyItem itemMsgProperty; int nPos = -1; nCount = m_arMsgPropertys.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemMsgProperty = m_arMsgPropertys.GetAt( nIndex ); if ( itemMsgProperty.m_strName.CompareNoCase(strName) == 0 ) { nPos = nIndex; break; } } if(nPos < 0) { itemMsgProperty.m_strMsgID = m_strID; itemMsgProperty.m_strName = strName; itemMsgProperty.m_strValue = strData; m_arMsgPropertys.Add(itemMsgProperty); } else { itemMsgProperty = m_arMsgPropertys.GetAt( nIndex ); itemMsgProperty.m_strValue = strData; m_arMsgPropertys.SetAt(nPos, itemMsgProperty); } } CString CMsgItem::GetCCReceiversName( ) { CString strCCReceiversName = _T(""); CString strCCReceiverUsers, strCCReceiverUser; CString strReceiver, strReceiverName; /*GetProp( CCRECEIVE_USERNAMES, strCCReceiversName ); if( !strCCReceiversName.IsEmpty() ) { return strCCReceiversName; }*/ GetProp( CCRECEIVE_USERS, strCCReceiverUsers ); CStringTokenizer sTokMsgOwners( strCCReceiverUsers, _T('|') ); while ( sTokMsgOwners.Next( strCCReceiverUser ) ) { if ( strCCReceiverUser.IsEmpty() ) continue; if ( !strCCReceiversName.IsEmpty() ) strCCReceiversName += _T(";"); strCCReceiversName += GetReceiverName( strCCReceiverUser ); } return strCCReceiversName; } CString CMsgItem::GetReceiverName( CString strReceiver ) { CString strReceivers; int nCount, nIndex; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); if ( strReceiver.CompareNoCase( itemReceiver.m_strOwner ) == 0 ) { return itemReceiver.m_strOwnerName; } } } else strReceiver = m_strReceiverNames; return strReceiver; } bool CMsgItem::IsExistUnread( ) { if(m_nIsGroupSend) { bool bExistUnread = false; int nYear; CMsgOwnerItem itemReceiver; int nCount = m_arMsgOwners.GetSize(); for ( int nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); if(itemReceiver.m_tmOpenDate.m_status == CHighTime::valid) nYear= itemReceiver.m_tmOpenDate.GetYear(); if(nYear >1990) { bExistUnread = true; break; } } } return false; } BOOL CMsgItem::IsHaveCCUser( ) { CString strCCReceivers; GetProp( CCRECEIVE_USERS, strCCReceivers ); if ( strCCReceivers.IsEmpty() ) return false; else return true; } BOOL CMsgItem::IsHaveMulRecLim( ) { CString strMulRecLim; GetProp( MULRECEIVERLIM_PROP, strMulRecLim ); if ( strMulRecLim == _T("1") ) return true; else return false; } CString CMsgItem::GetUserInfo() { CString strUserInfo; CString strReceivers; if ( m_strSenderName.IsEmpty() ) return _T( "" ); strUserInfo += m_strSenderName; strReceivers = GetReceiversName(); if ( strReceivers.IsEmpty() ) return strUserInfo; strUserInfo += _T(" => ") + strReceivers; return strUserInfo; } CString CMsgItem::GetUserInfoPro() { CString strUserInfo; CString strReceivers; CString strCCName; CString strCCReceivers = _T(""); // CResourceMgr ResMgr( _T("STKBaseClass.dll") ); if ( m_strSenderName.IsEmpty() ) return _T( "" ); strUserInfo += m_strSenderName; int nCount, nIndex; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { if ( IsHaveCCUser( ) ) { strCCReceivers = GetCCReceivers( ); if( !strCCReceivers.IsEmpty()) { strCCReceivers += _T(";"); strCCReceivers = _T(";") + strCCReceivers; } strCCReceivers.MakeLower(); } nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); itemReceiver.m_strOwner.MakeLower(); if(strCCReceivers.Find(itemReceiver.m_strOwner) < 0) strReceivers += itemReceiver.m_strOwnerName + _T(";"); } } else strReceivers= m_strReceiverNames; if ( strReceivers.IsEmpty() ) strReceivers= m_strReceiverNames; // strCCName.LoadString( IDS_SYS_MAKECOPY ); strUserInfo += _T(" => ") + strReceivers; if ( IsHaveCCUser( ) ) { //strUserInfo += _T(" ") + strCCName; strUserInfo += _T("\r\n> ³­ËÍ£º") + GetCCReceiversName( ); } return strUserInfo; } CString CMsgItem::GetReceiversNamePro( ) { CString strReceiverNames = _T(""); int nCount, nIndex; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); strReceiverNames += itemReceiver.m_strOwnerName + _T(";"); } } else strReceiverNames= m_strReceiverNames; return strReceiverNames; } CString CMsgItem::GetCCReceivers( ) { CString strCCReceiverUsers; CString strReceiver, strCCReceivers; GetProp( CCRECEIVE_USERS, strCCReceiverUsers ); CStringTokenizer sTokMsgOwners( strCCReceiverUsers, _T('|') ); while ( sTokMsgOwners.Next( strReceiver ) ) { if ( strReceiver.IsEmpty() ) continue; if ( !strCCReceivers.IsEmpty() ) strCCReceivers += _T(";"); strCCReceivers += strReceiver; } return strCCReceivers; } CString CMsgItem::GetCCReceiverTypes( ) { CString strCCReceiverUserTypes; CString strReceiverType, strCCReceiverTypes; GetProp( CCRECEIVE_USERTYPES, strCCReceiverUserTypes ); CStringTokenizer sTokMsgOwners( strCCReceiverTypes, _T('|') ); while ( sTokMsgOwners.Next( strReceiverType ) ) { if ( strReceiverType.IsEmpty() ) continue; if ( !strCCReceiverTypes.IsEmpty() ) strCCReceiverTypes += _T(";"); strCCReceiverTypes += strReceiverType; } return strCCReceiverTypes; } void CMsgItem::GetCCReceivers( CStringArray &asCCReceivers ) { CString strCCReceiverUsers; CString strReceiver; asCCReceivers.RemoveAll( ); GetProp( CCRECEIVE_USERS, strCCReceiverUsers ); CStringTokenizer sTokMsgOwners( strCCReceiverUsers, _T('|') ); while ( sTokMsgOwners.Next( strReceiver ) ) { if ( strReceiver.IsEmpty() ) continue; asCCReceivers.Add( strReceiver ); } } void CMsgItem::GetCCReceiverTypes( CUIntArray &anCCReceiverTypes ) { CString strCCReceiverUserTypes; CString strReceiverType; int nReceiver; anCCReceiverTypes.RemoveAll( ); GetProp( CCRECEIVE_USERTYPES, strCCReceiverUserTypes ); CStringTokenizer sTokMsgOwners( strCCReceiverUserTypes, _T('|') ); while ( sTokMsgOwners.Next( strReceiverType ) ) { if ( strReceiverType.IsEmpty() ) continue; nReceiver = _tstol(strReceiverType); anCCReceiverTypes.Add( nReceiver ); } } CString CMsgItem::GetReceiversPro( ) { CString strReceivers = _T(""); int nCount, nIndex; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); strReceivers += itemReceiver.m_strOwner + _T(";"); } } else strReceivers = m_strReceivers; return strReceivers; } CString CMsgItem::GetUsersPro( ) { CString strUserInfo; CString strReceivers; CString strCCName; // CResourceMgr ResMgr( _T("STKBaseClass.dll") ); if ( m_strSender.IsEmpty() ) return _T( "" ); strUserInfo += m_strSender; strReceivers = GetReceiversPro(); if ( strReceivers.IsEmpty() ) return strUserInfo; // strCCName.LoadString( IDS_SYS_MAKECOPY ); strUserInfo += _T(" => ") + strReceivers; if ( IsHaveCCUser( ) ) { strUserInfo += _T(" ") + strCCName; strUserInfo += GetCCReceivers( ); } return strUserInfo; } CString CMsgItem::GetReplyUsers( CString strLogin ) { CString strReceivers; int nCount, nIndex; CMsgOwnerItem itemReceiver; CString strUser; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); strUser = itemReceiver.m_strOwner; if ( strUser.CompareNoCase(m_strSender) == 0 || strUser.CompareNoCase(strLogin) == 0 ) continue; strReceivers += ( _T( ";" ) + strUser); } if ( m_strSender.CompareNoCase(strLogin) != 0 ) strReceivers += ( _T( ";" ) + m_strSender); if ( !strReceivers.IsEmpty() ) strReceivers.Delete( 0 ); } else strReceivers= m_strReceivers; return strReceivers; } CString CMsgItem::GetReplyUsers2( CString strLogin ) { CString strReceivers; int nCount, nIndex; CMsgOwnerItem itemReceiver; CString strUser; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); strUser = itemReceiver.m_strOwner; if ( strUser.CompareNoCase(m_strSender) == 0 || strUser.CompareNoCase(strLogin) == 0 ) continue; strReceivers += ( _T( ";" ) + strUser + _T( "," ) + itemReceiver.m_strOwnerName); } if ( m_strSender.CompareNoCase(strLogin) != 0 ) strReceivers += ( _T( ";" ) + m_strSender + _T( "," ) + m_strSenderName); if ( !strReceivers.IsEmpty() ) strReceivers.Delete( 0 ); } else strReceivers= m_strReceivers; return strReceivers; } CString CMsgItem::GetReplyUsersPro( CString strLogin ) { if ( !IsHaveCCUser( ) ) return GetReplyUsers( strLogin ); CStringArray asCCReceivers; CString strReceivers; int nCount, nIndex; CMsgOwnerItem itemReceiver; GetCCReceivers( asCCReceivers ); if ( CMBAMDBFun::FindStringInArray( m_strSender, asCCReceivers ) < 0 ) strReceivers += ( _T( ";" ) + m_strSender ); if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); if ( CMBAMDBFun::FindStringInArray( itemReceiver.m_strOwner, asCCReceivers ) >= 0 ) continue; if ( itemReceiver.m_strOwner.CompareNoCase( m_strSender ) == 0 ) continue; if ( itemReceiver.m_strOwner.CompareNoCase( strLogin ) == 0 ) continue; strReceivers += ( _T( ";" ) + itemReceiver.m_strOwner ); } strReceivers += ( _T( ";" ) + m_strSender); if ( !strReceivers.IsEmpty() ) strReceivers.Delete( 0 ); } else strReceivers += _T( ";" ) + m_strReceivers; return strReceivers; } CString CMsgItem::GetReplyCCUsers( CString strLogin ) { if ( !IsHaveCCUser( ) ) return _T(""); CString strCCReceiverUsers; CString strCCReceivers, strReceiver; GetProp( CCRECEIVE_USERS, strCCReceiverUsers ); CStringTokenizer sTokMsgOwners( strCCReceiverUsers, _T('|') ); while ( sTokMsgOwners.Next( strReceiver ) ) { if ( strReceiver.IsEmpty() ) continue; if ( strReceiver.CompareNoCase( strLogin ) == 0 ) continue; if ( !strCCReceivers.IsEmpty() ) strCCReceivers += _T(";"); strCCReceivers += strReceiver; } return strCCReceivers; } CString CMsgItem::GetReceivers() { CString strReceivers; int nCount, nIndex; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); strReceivers += ( _T( ";" ) + itemReceiver.m_strOwner ); } if ( !strReceivers.IsEmpty() ) strReceivers.Delete( 0 ); } else strReceivers = m_strReceivers; return strReceivers; } CString CMsgItem::GetReceiverTypes() { CString strReceiverTypes; CString strTempReceiver; int nCount, nIndex; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); strTempReceiver.Format(_T("%d"),itemReceiver.m_nOwnerType); strReceiverTypes += ( _T( ";" ) + strTempReceiver ); } if ( !strReceiverTypes.IsEmpty() ) strReceiverTypes.Delete( 0 ); } else strReceiverTypes = _T("0"); return strReceiverTypes; } CString CMsgItem::GetReceiversName() { CString strReceivers; int nCount, nIndex; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); if ( itemReceiver.m_strOwnerName.IsEmpty() ) itemReceiver.m_strOwnerName = itemReceiver.m_strOwner; strReceivers += ( _T( ";" ) + itemReceiver.m_strOwnerName ); } if ( !strReceivers.IsEmpty() ) strReceivers.Delete( 0 ); } else { strReceivers = m_strReceiverNames; if ( strReceivers.IsEmpty() ) strReceivers = m_strReceivers; } return strReceivers; } CString CMsgItem::GetOnlyReceiversName() { CString strReceivers; int nCount, nIndex; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { GetProp( RECEIVE_USERNAMES, strReceivers ); if(strReceivers.IsEmpty()) { CString strCCReceivers = _T(""); CString strCCReceiverTypes = _T(""); CString strReceiver; CStringArray asCCReceivers; CUIntArray anCCReceiverTypes; GetProp( CCRECEIVE_USERS, strCCReceivers ); GetProp( CCRECEIVE_USERTYPES, strCCReceiverTypes ); asCCReceivers.RemoveAll( ); CStringTokenizer sTokMsgOwners( strCCReceivers, _T('|') ); while ( sTokMsgOwners.Next( strReceiver ) ) { if ( strReceiver.IsEmpty() ) continue; asCCReceivers.Add( strReceiver ); } CString strReceiverType; int nReceiver; int nFind; anCCReceiverTypes.RemoveAll( ); CStringTokenizer sTokMsgOwners2( strCCReceiverTypes, _T('|') ); while ( sTokMsgOwners2.Next( strReceiverType ) ) { if ( strReceiverType.IsEmpty() ) continue; nReceiver = _tstol(strReceiverType); anCCReceiverTypes.Add( nReceiver ); } nCount = m_arMsgOwners.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemReceiver = m_arMsgOwners.GetAt( nIndex ); if ( itemReceiver.m_strOwnerName.IsEmpty() ) itemReceiver.m_strOwnerName = itemReceiver.m_strOwner; nFind = -1; for ( int nNum = 0; nNum < asCCReceivers.GetCount(); nNum++ ) { strReceiver = asCCReceivers.GetAt(nNum); if(nNum < anCCReceiverTypes.GetCount()) nReceiver = anCCReceiverTypes.GetAt(nNum); else nReceiver = 0; if(strReceiver.CompareNoCase(itemReceiver.m_strOwner) ==0 && nReceiver == itemReceiver.m_nOwnerType) { nFind = nNum; break; } } if(nFind < 0) strReceivers += ( _T( ";" ) + itemReceiver.m_strOwnerName ); } if ( !strReceivers.IsEmpty() ) strReceivers.Delete( 0 ); } } else { strReceivers = m_strReceiverNames; if ( strReceivers.IsEmpty() ) strReceivers = m_strReceivers; } return strReceivers; } CString CMsgItem::FormatReceiversName() { CString strReceivers; int nCount; CMsgOwnerItem itemReceiver; if(m_nIsGroupSend) { nCount = m_arMsgOwners.GetSize(); if ( nCount == 0 ) return _T( "" ); itemReceiver = m_arMsgOwners.GetAt( 0 ); strReceivers = itemReceiver.m_strOwnerName; if ( nCount > 1 ) strReceivers += _T( ";..." ); } else strReceivers = m_strReceiverNames; return strReceivers; } int CMsgItem::AddData( CString strName, CString strValue ) { if ( strName.IsEmpty() ) return -1; int nIndex; nIndex = FindData( strName ); if ( -1 == nIndex ) { nIndex = m_asResertName.Add( strName ); m_asResertData.Add( strValue ); } else { m_asResertData.SetAt( nIndex, strValue ); } return nIndex; } BOOL CMsgItem::GetData( CString strName, CString &strValue ) { strValue.Empty(); if ( strName.IsEmpty() ) return false; int nIndex; nIndex = FindData( strName ); if ( -1 == nIndex ) return false; strValue = m_asResertData.GetAt( nIndex ); return true; } int CMsgItem::FindData( CString strName ) { if ( strName.IsEmpty() ) return -1; int nCount, nIndex; nCount = m_asResertName.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { if ( m_asResertName.GetAt( nIndex ).CompareNoCase( strName ) == 0 ) return nIndex; } return -1; } int CMsgItem::FindAttachment( CString strFileID ) { if ( strFileID.IsEmpty() ) return -1; int nCount, nIndex; CMsgAttachmentItem itemMsgAttachment; nCount = m_arMsgAttachments.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { itemMsgAttachment = m_arMsgAttachments.GetAt( nIndex ); if ( itemMsgAttachment.m_strFileID.CompareNoCase( strFileID ) == 0 ) return nIndex; } return -1; } CMsgs::CMsgs(CMBAMDBConnect *pAConnect) { m_pAConnect = pAConnect; InitFilter(); } CMsgs::~CMsgs() { } // CMsg member functions void CMsgs::operator =( const CMsgs& item ) { m_nListMsgType = item.m_nListMsgType; m_tmStartDate = item.m_tmStartDate; m_tmEndDate = item.m_tmEndDate; m_nReaded = item.m_nReaded; // "-1"±íʾ²»Ö¸¶¨Õâ¸ö¹ýÂËÌõ¼þ m_pAConnect = item.m_pAConnect; m_strSQL = item.m_strSQL; m_nRowType = item.m_nRowType; m_strID = item.m_strID; m_strSourceID = item.m_strSourceID; m_strSubject = item.m_strSubject; m_strSender = item.m_strSender; m_strSenderName = item.m_strSenderName; m_tmDate = item.m_tmDate; m_nType = item.m_nType; m_nMsgFolder = item.m_nMsgFolder; m_strFolderName = item.m_strFolderName; m_nNeedConfirm = item.m_nNeedConfirm; m_strMsgExtType = item.m_strMsgExtType; m_nReadState = item.m_nReadState; m_nAttachCount = item.m_nAttachCount; m_strAttitudeset = item.m_strAttitudeset; m_nMsgFlag = item.m_nMsgFlag; m_strContentType = item.m_strContentType; m_strContent = item.m_strContent; m_nContentSize = item.m_nContentSize; m_strAppType = item.m_strAppType; m_nIsGroupSend = item.m_nIsGroupSend; m_strReceivers = item.m_strReceivers; m_strReceiverNames = item.m_strReceiverNames; m_tmOpenDate = item.m_tmOpenDate; m_strReceiverAttitude = item.m_strReceiverAttitude; m_arMsgOwners.Copy( item.m_arMsgOwners ); m_arMsgAttachments.Copy( item.m_arMsgAttachments ); m_arMsgPropertys.Copy( item.m_arMsgPropertys ); m_bDownLoaded = item.m_bDownLoaded; } void CMsgs::InitMsgData( ) { Clear( ); } bool CMsgs::GetData( ) { InitMsgData( ); if ( m_nListMsgType == LISTMSG_TYPE_SIMPLE ) { GetMsgDataSimple( ); if( m_nIsGroupSend ) { GetMsgOwnerDataSimple( ); if(m_arMsgOwners.GetCount() < 1 && m_nReadState > 0) { CMsgOwnerItem msgOwner; CString strUsers; CString strUsersName; CString strUser; CString strUserName; strUsers = m_strReceivers; strUsersName = m_strReceiverNames; while(CMBAMDBFun::GetElementItem( strUsers, strUser, _T(";") )) { CMBAMDBFun::GetElementItem( strUsersName, strUserName, _T(";") ); if( !strUser.IsEmpty()) { msgOwner.m_strMsgID = m_strID; msgOwner.m_strOwner = strUser; if(strUserName.IsEmpty()) msgOwner.m_strOwnerName = strUser; else msgOwner.m_strOwnerName = strUserName; m_arMsgOwners.Add(msgOwner); } } } } GetMsgPropertyData( ); } else if ( m_nListMsgType == LISTMSG_TYPE_CHAT ) { GetMsgChatData( ); GetMsgAttachmentData( ); GetMsgPropertyData( ); } else if ( m_nListMsgType == LISTMSG_TYPE_MAGADMIN ) { GetMsgAdminData(); return true; } else { GetMsgData( ); if( m_nIsGroupSend ) { GetMsgOwnerData( ); if(m_arMsgOwners.GetCount() < 1 && m_nReadState > 0) { CMsgOwnerItem msgOwner; CString strUsers; CString strUsersName; CString strUser; CString strUserName; strUsers = m_strReceivers; strUsersName = m_strReceiverNames; while(CMBAMDBFun::GetElementItem( strUsers, strUser, _T(";") )) { CMBAMDBFun::GetElementItem( strUsersName, strUserName, _T(";") ); if( !strUser.IsEmpty()) { msgOwner.m_strMsgID = m_strID; msgOwner.m_strOwner = strUser; if(strUserName.IsEmpty()) msgOwner.m_strOwnerName = strUser; else msgOwner.m_strOwnerName = strUserName; m_arMsgOwners.Add(msgOwner); } } } } GetMsgAttachmentData( ); GetMsgPropertyData( ); } return true; } bool CMsgs::GetMsgDataSimple( ) { CString strFieldName; CString strTempValue; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBRecord ARecordset; CString strSQL; try { m_ARecordSet.GetValue( 1, strTempValue, true ); m_strID = strTempValue; strSQL.Format( _T("SELECT S_C3, S_C4, S_C5, T_C6,N_C7,N_C8,C_C9,S_C10,N_C11,N_C12,C_C17 ,S_C18,S_C19 \ FROM TN_STK_MSG WHERE G_C1 = '%s'"), m_strID ); ARecordset.Open( m_pAConnect->GetDBConnect(), strSQL ); while ( S_OK == ARecordset.MoveNext() ) { ARecordset.GetValue( 1, strTempValue, true ); m_strSubject = strTempValue; ARecordset.GetValue( 2, strTempValue, true ); m_strSender = strTempValue; ARecordset.GetValue( 3, strTempValue, true ); m_strSenderName = strTempValue; ARecordset.GetValue( 4, m_tmDate); ARecordset.GetValue( 5, m_nType ); ARecordset.GetValue( 6, m_nMsgFolder ); ARecordset.GetValue( 7, m_nNeedConfirm ); ARecordset.GetValue( 8, strTempValue, true ); m_strMsgExtType = strTempValue; ARecordset.GetValue( 9, m_nReadState ); ARecordset.GetValue( 10, m_nAttachCount ); ARecordset.GetValue( 11, m_nIsGroupSend ); ARecordset.GetValue( 12, strTempValue, true ); m_strReceivers = (LPCTSTR)strTempValue; ARecordset.GetValue( 13, strTempValue, true ); m_strReceiverNames = (LPCTSTR)strTempValue; break; } } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return false; } return true; } bool CMsgs::GetMsgOwnerDataSimple( ) { CDBRecord ARecordset; CString strSQL; CString strTempValue; CMsgOwnerItem msgOwner; int nTempValue; m_arMsgOwners.RemoveAll( ); strSQL.Format( _T("SELECT S_C2, S_C3, T_C4 ,N_C6 FROM \ TN_STK_MSGOWNER WHERE G_C1 = '%s'"), m_strID ); if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { ARecordset.Open( m_pAConnect->GetDBConnect(),strSQL ); while ( S_OK == ARecordset.MoveNext() ) { ARecordset.GetValue( 1, strTempValue, true ); msgOwner.m_strOwner = (LPCTSTR)strTempValue; ARecordset.GetValue( 2, strTempValue, true ); msgOwner.m_strOwnerName = (LPCTSTR)strTempValue; ARecordset.GetValue( 3, msgOwner.m_tmOpenDate ); nTempValue = 0; ARecordset.GetValue( 4, nTempValue ); msgOwner.m_nOwnerType = nTempValue; msgOwner.m_strMsgID = m_strID; m_arMsgOwners.Add( msgOwner ); } } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return false; } return true; } bool CMsgs::GetMsgChatData( ) { CString strFieldName; CString strTempValue; CMsgOwnerItem msgOwner; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBRecord ARecordset; CString strSQL; try { m_ARecordSet.GetValue( 1, strTempValue, true ); m_strID = strTempValue; strSQL.Format( _T("SELECT S_C3, S_C4, S_C5, T_C6,N_C7,N_C12,N_C14,S_C22,N_C23 ,S_C24\ FROM TN_STK_MSG WHERE G_C1 = '%s'"), m_strID ); ARecordset.Open( m_pAConnect->GetDBConnect(), strSQL ); while ( S_OK == ARecordset.MoveNext() ) { ARecordset.GetValue( 1, strTempValue, true ); m_strSubject = (LPCTSTR)strTempValue; ARecordset.GetValue( 2, strTempValue, true ); m_strSender = (LPCTSTR)strTempValue; ARecordset.GetValue( 3, strTempValue, true ); m_strSenderName = (LPCTSTR)strTempValue; ARecordset.GetValue( 4, m_tmDate ); ARecordset.GetValue( 5, m_nType ); ARecordset.GetValue( 6, m_nAttachCount ); ARecordset.GetValue( 7, m_nPropertyCount ); ARecordset.GetValue( 8, m_strContentType ); ARecordset.GetValue( 9, m_nContentSize ); ARecordset.GetValue( 10, m_strContent ); break; } } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return false; } return true; } bool CMsgs::GetMsgData( ) { CString strFieldName; CString strTempValue; CMsgOwnerItem msgOwner; try { m_ARecordSet.GetValue( 1, strTempValue, true ); m_strID = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 2, strTempValue, true ); m_strSourceID = (LPCTSTR)strTempValue; if ( m_strSourceID == GUID_EMPTY ) m_strSourceID = _T(""); m_ARecordSet.GetValue( 3, strTempValue, true ); m_strSubject = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 4, strTempValue, true ); m_strSender = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 5, strTempValue, true ); m_strSenderName = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 6, m_tmDate ); m_ARecordSet.GetValue( 7, m_nType ); m_ARecordSet.GetValue( 8, m_nMsgFolder ); m_ARecordSet.GetValue( 9, m_nNeedConfirm ); m_ARecordSet.GetValue( 10, strTempValue, true ); m_strMsgExtType = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 11, m_nReadState ); m_ARecordSet.GetValue( 12, m_nAttachCount ); m_ARecordSet.GetValue( 13, m_nMsgFlag ); m_ARecordSet.GetValue( 14, m_nPropertyCount ); m_ARecordSet.GetValue( 15, strTempValue, true ); m_strAttitudeset = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 16, strTempValue, true ); m_strAppType = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 17, m_nIsGroupSend ); m_ARecordSet.GetValue( 18, strTempValue, true ); m_strReceivers = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 19, strTempValue, true ); m_strReceiverNames = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 20, m_tmOpenDate ); m_ARecordSet.GetValue( 21, strTempValue, true ); m_strReceiverAttitude = (LPCTSTR)strTempValue; m_ARecordSet.GetValue( 22, m_strContentType ); m_ARecordSet.GetValue( 23, m_nContentSize ); m_ARecordSet.GetValue( 24, m_strContent ); m_ARecordSet.GetValue( 25, m_strContentText ); if(m_nReadState & MSG_READSTATE_DOWNLOAD ) m_bDownLoaded = true; else m_bDownLoaded = false; // m_ARecordSet.GetValue( 18, m_nCharset ); // 2010/05/19 ²»ÐèÒª»ñÈ¡ CN_CHARSET ×Ö¶Î } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return false; } return true; } bool CMsgs::GetMsgAdminData( ) { if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBRecord ARecordset; CString strTempValue; try { m_ARecordSet.GetValue( 1, strTempValue, true ); m_strID = strTempValue; } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo(); return false; } return true; } bool CMsgs::GetMsgOwnerData( ) { CDBRecord ARecordset; CString strSQL; CString strTempValue; CMsgOwnerItem msgOwner; int nTempValue; m_arMsgOwners.RemoveAll( ); strSQL.Format( _T("SELECT S_C2, S_C3, T_C4, S_C5,N_C6 FROM \ TN_STK_MSGOWNER WHERE G_C1 = '%s'"), m_strID ); if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { ARecordset.Open( m_pAConnect->GetDBConnect(), strSQL ); while ( S_OK == ARecordset.MoveNext() ) { ARecordset.GetValue( 1, strTempValue, true ); msgOwner.m_strOwner = (LPCTSTR)strTempValue; ARecordset.GetValue( 2, strTempValue, true ); msgOwner.m_strOwnerName = (LPCTSTR)strTempValue; ARecordset.GetValue( 3, msgOwner.m_tmOpenDate ); ARecordset.GetValue( 4, strTempValue, true ); msgOwner.m_strAttitude = (LPCTSTR)strTempValue; nTempValue = 0; ARecordset.GetValue( 5, nTempValue ); msgOwner.m_nOwnerType = nTempValue; msgOwner.m_strMsgID = m_strID; m_arMsgOwners.Add( msgOwner ); } } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo(); return false; } return true; } bool CMsgs::GetMsgAttachmentData( ) { m_arMsgAttachments.RemoveAll( ); if ( m_nAttachCount == 0 ) return true; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBRecord ARecordset; CString strSQL; CString strTempValue; CMsgAttachmentItem msgAttachment; strSQL.Format( _T("SELECT S_C2, N_C3, S_C8, G_C5, S_C6,N_C7 \ FROM TN_STK_ATTACHMENT WHERE G_C1 = '%s'"), m_strID ); try { ARecordset.Open( m_pAConnect->GetDBConnect(), strSQL ); while ( S_OK == ARecordset.MoveNext() ) { msgAttachment.m_strMsgID = m_strID; ARecordset.GetValue( 1, strTempValue, true ); msgAttachment.m_strFileName = (LPCTSTR)strTempValue; if( msgAttachment.m_strFileName.Right(1) == _T("\\") ) { msgAttachment.m_strFileName.TrimRight(_T("\\")); if(msgAttachment.m_strFileName.IsEmpty()) msgAttachment.m_strFileName = _T("AMTempFolder\\"); else msgAttachment.m_strFileName += _T("\\"); } else { if(msgAttachment.m_strFileName.IsEmpty()) msgAttachment.m_strFileName = _T("AMTempFile"); } strTempValue = _T(""); msgAttachment.m_nFileSize = 0; ARecordset.GetValue( 2, msgAttachment.m_nFileSize ); ARecordset.GetValue( 3, strTempValue, true ); msgAttachment.m_strFilePath = (LPCTSTR)strTempValue; strTempValue = _T(""); ARecordset.GetValue( 4, strTempValue, true ); msgAttachment.m_strFileID = (LPCTSTR)strTempValue; strTempValue = _T(""); ARecordset.GetValue( 5, strTempValue, true ); msgAttachment.m_strFileSFlag = (LPCTSTR)strTempValue; strTempValue = _T(""); ARecordset.GetValue( 6, msgAttachment.m_nFileEnType ); m_arMsgAttachments.Add( msgAttachment ); msgAttachment.Clear( ); } } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return false; } return true; } bool CMsgs::GetMsgPropertyData( ) { CDBRecord ARecordset; CString strSQL; CString strTempValue; CMsgPropertyItem msgProperty; m_arMsgPropertys.RemoveAll( ); if ( m_nPropertyCount == 0 ) return true; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; strSQL.Format( _T("SELECT S_C2, S_C3 FROM \ TN_STK_MSGPROPERTY WHERE G_C1 = '%s'"), m_strID ); try { ARecordset.Open( m_pAConnect->GetDBConnect(), strSQL); while ( S_OK == ARecordset.MoveNext() ) { ARecordset.GetValue( 1, strTempValue, true ); msgProperty.m_strName = (LPCTSTR)strTempValue; ARecordset.GetValue( 2, strTempValue, true ); msgProperty.m_strValue = (LPCTSTR)strTempValue; msgProperty.m_strMsgID = m_strID; m_arMsgPropertys.Add( msgProperty ); } } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return false; } return true; } void CMsgs::InitFilter() { // ³õʼ»¯¹ýÂËÆ÷ʹȥ³ý¹ýÂË m_tmStartDate = COleDateTime( 1970, 1, 1, 0, 0, 0 ); m_tmEndDate = COleDateTime( 1970, 1, 1, 0, 0, 0 ); m_nReaded = -1; // "-1"±íʾ²»Ö¸¶¨Õâ¸ö¹ýÂËÌõ¼þ m_nListMsgType = LISTMSG_TYPE_NONE; } int CMsgs::ListSpMsgID( LPCTSTR lpszMsgID ) { // ʹÓÃÕâ¸öº¯Êý£¬¹ýÂËÌõ¼þÎÞЧ if ( lpszMsgID == NULL ) return 0; CString strSQL; int nCount; strSQL.Format( _T("SELECT G_C1,G_C2 ,S_C3,S_C4,S_C5 ,T_C6,N_C7,N_C8,C_C9,S_C10,\ N_C11,N_C12,N_C13,N_C14 ,N_C15,S_C16,C_C17 ,S_C18,S_C19,T_C20,\ S_C21,S_C22,N_C23,S_C24,S_C25 FROM TN_STK_MSG WHERE G_C1 = '%s'"), lpszMsgID); m_strSQL = strSQL; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { m_ARecordSet.Close( ); m_ARecordSet.Open(m_pAConnect->GetDBConnect(), strSQL ); m_ARecordSet.MoveFirst(); nCount = m_ARecordSet.GetRecordCount( ); m_strID = lpszMsgID; } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListTalking3( CString strLogin,CString strUser2,long nLimitCount, BOOL bTimeAsc) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; CString strStartDate; CString strEndDate; CString strSQLTempM; int nCount; CString strSort; CDBRecord ARecordSet; strLogin.MakeLower(); strUser2.MakeLower(); if ( m_tmStartDate.GetYear() > 1970 || m_tmEndDate.GetYear() > 1970 ) { if ( m_tmEndDate.GetYear() == 1970 ) m_tmEndDate = COleDateTime::GetCurrentTime( ); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } CString strLimitSQL = _T(""); if(nLimitCount > 0) strLimitSQL.Format( _T("limit 0,%d"), nLimitCount); if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ (m.S_C4 = '%s' AND m.S_C18 = '%s') AND (m.N_C11>2 AND m.N_C11<>64) %s AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) \ ORDER BY m.T_C6 DESC %s"),strLogin,strUser2, strSQLTempM,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strLimitSQL ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ ( (m.S_C4 = '%s' AND m.S_C18 = '%s') \ OR ( m.S_C4 = '%s' AND m.S_C18 = '%s') ) AND (m.N_C11>2 AND m.N_C11<>64) %s AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) \ ORDER BY m.T_C6 DESC %s"),strLogin,strUser2,strUser2,strLogin, strSQLTempM,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strLimitSQL ); } if(bTimeAsc) { CString strSQLTemp2 = strSQL; strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6 \ FROM (%s)ST ORDER BY ST.T_C6 ASC"), strSQLTemp2); } m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_CHAT; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListTalking2( CString strLogin,CString strUser2,long nLimitCount, BOOL bTimeAsc) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; CString strStartDate; CString strEndDate; CString strSQLTempM; int nCount; CString strSort; CString strSQLTemp2 = _T(""); CDBRecord ARecordSet; strLogin.MakeLower(); strUser2.MakeLower(); if ( m_tmStartDate.GetYear() > 1970 || m_tmEndDate.GetYear() > 1970 ) { if ( m_tmEndDate.GetYear() == 1970 ) m_tmEndDate = COleDateTime::GetCurrentTime( ); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } //strSQLTemp2.Format( _T(" AND m.S_C22 IN('%s','%s','%s')"), CONTYPE_TEXT_TEXT, CONTYPE_TEXT_XML, CONTYPE_TEXT_PLAIN ); strSQLTemp2 = _T(""); CString strLimitSQL = _T(""); if(nLimitCount > 0) strLimitSQL.Format( _T("limit 0,%d"), nLimitCount); if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ (m.S_C4 = '%s' AND m.S_C18 = '%s') AND (m.N_C11>2 AND m.N_C11<>64) AND m.C_C17='0' %s %s AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) \ ORDER BY m.T_C6 DESC %s"),strLogin,strUser2,strSQLTemp2, strSQLTempM,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strLimitSQL ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ ( (m.S_C4 = '%s' AND m.S_C18 = '%s') \ OR ( m.S_C4 = '%s' AND m.S_C18 = '%s') ) AND (m.N_C11>2 AND m.N_C11<>64) AND m.C_C17='0' %s %s AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) \ ORDER BY m.T_C6 DESC %s"),strLogin,strUser2,strUser2,strLogin, strSQLTemp2, strSQLTempM,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strLimitSQL ); } if(bTimeAsc) { strSQLTemp2 = strSQL; strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6 \ FROM (%s)ST ORDER BY ST.T_C6 ASC"), strSQLTemp2); } m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_CHAT; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); // CMBAMDBFun::WriteDBErrToFile(_T("ListTalking2 1")); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); //CMBAMDBFun::WriteDBErrToFile(_T("ListTalking2 3")); //m_ARecordSet.MoveFirst(); // CMBAMDBFun::WriteDBErrToFile(_T("ListTalking2 4")); //nCount = m_ARecordSet.GetRecordCount( ); //nCount = 0; // CMBAMDBFun::WriteDBErrToFile(_T("ListTalking2 5")); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListTalking( CString strLogin, CString strUser2,bool bOnlyAttachmentMsg ,bool bGroupSend, BOOL bTimeAsc) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; CString strStartDate; CString strEndDate; CString strSQLTempM; int nCount; CString strSort; CString strSQLTemp2; strLogin.MakeLower(); strUser2.MakeLower(); m_nListMsgType = LISTMSG_TYPE_CHAT; //strSQL = _T("PRAGMA synchronous = OFF; "); //CDBSQLiteCommFun::RunSQL( strSQL, m_pAConnect->GetDBConnect()); //strSQL = _T("PRAGMA temp_store = MEMORY;"); //CDBSQLiteCommFun::RunSQL( strSQL, m_pAConnect->GetDBConnect()); //CMBAMDBFun::WriteDBErrToFile(_T("CMsgs::ListTalking 1")); if ( m_tmStartDate.GetYear() > 1970 || m_tmEndDate.GetYear() > 1970 ) { if ( m_tmEndDate.GetYear() == 1970 ) m_tmEndDate = COleDateTime::GetCurrentTime( ); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } //strSQLTemp2.Format( _T(" AND m.S_C22 IN('%s','%s' ,'%s')"), CONTYPE_TEXT_TEXT, CONTYPE_TEXT_XML, CONTYPE_TEXT_PLAIN ); strSQLTemp2 = _T(""); if(bTimeAsc) strSort = _T(" ASC"); else strSort = _T(" DESC"); /*strSQL.Format( _T("SELECT T.* FROM ( \ SELECT m.* FROM TN_STK_MSG m, TN_STK_MSGOWNER o WHERE \ m.C_C17 <>'0' AND m.S_C10='' AND m.G_C1 = o.G_C1 %s %s AND ( (m.S_C4 = '%s' AND o.S_C2 = '%s' ) OR (m.S_C4 = '%s' AND o.S_C2 = '%s' AND (C_C9='0' OR (C_C9='1' AND N_C11>=%d))) AND o.N_C6 = 0) union \ SELECT m.* FROM TN_STK_MSG m WHERE \ m.C_C17 ='0' AND m.S_C10='' %s %s AND ( (m.S_C4 = '%s' AND m.S_C18 = '%s') OR (m.S_C4 = '%s' AND m.S_C18 = '%s' AND (C_C9='0' OR (C_C9='1' AND N_C11>=%d))))\ )T ORDER BY T.T_C6 %s"),strSQLTemp2,strSQLTempM, lpszUser1, strUser2, strUser2, lpszUser1,MSG_READSTATE_NONE,strSQLTemp2,strSQLTempM, lpszUser1, strUser2, strUser2, lpszUser1,MSG_READSTATE_NONE,strSort ); */ /*strSQL.Format( _T("SELECT DISTINCT m.G_C1,m.G_C2,m.S_C3, m.S_C4, m.S_C5, m.T_C6,m.N_C7,m.N_C8,m.C_C9,m.S_C10,m.N_C11,m.N_C12,m.N_C13,m.N_C14,m.N_C15,m.S_C16,m.C_C17 ,m.S_C18,m.S_C19,m.T_C20,m.S_C21,m.S_C22,m.N_C23 ,m.S_C24,m.S_C25 \ FROM TN_STK_MSG m left join TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE %s %s AND \ ( (( (m.S_C18 = '%s' AND m.C_C17 ='0') OR (o.S_C2 = '%s' AND m.C_C17 ='1')) AND m.S_C4 = '%s' ) \ OR (m.N_C11>=%d AND m.S_C4 = '%s' )) AND m.S_C10='' ORDER BY m.T_C6 %s"), strSQLTemp2,strSQLTempM,strUser2,strUser2,strLogin, MSG_READSTATE_IOPEN, strUser2,strSort );*/ /*strSQL.Format( _T("SELECT m.G_C1,m.G_C2,m.S_C3, m.S_C4, m.S_C5, m.T_C6,m.N_C7,m.N_C8,m.C_C9,m.S_C10,m.N_C11,m.N_C12,m.N_C13,m.N_C14,m.N_C15,m.S_C16,m.C_C17 ,m.S_C18,m.S_C19,m.T_C20,m.S_C21,m.S_C22,m.N_C23 ,m.S_C24,m.S_C25 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE %s %s AND \ ( (o.S_C2 = '%s' AND m.S_C4 = '%s' ) \ OR (m.N_C11>=%d AND m.S_C4 = '%s' AND o.S_C2 = '%s')) AND m.S_C10='' ORDER BY m.T_C6 %s"), strSQLTemp2,strSQLTempM,strUser2,strLogin, MSG_READSTATE_IOPEN, strUser2,strLogin,strSort );*/ if(bOnlyAttachmentMsg) { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2, strSQLTempM,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strLogin, strUser2,strSQLTempM,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSort ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST , strSQLTempM,strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST , strSQLTempM,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM, strSort ); } } else { if(bGroupSend) { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ ORDER BY m.T_C6 %s"), strLogin,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTemp2,strSQLTempM, strSort ); } else { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ ORDER BY m.T_C6 %s"), strLogin,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTemp2,strSQLTempM, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strSQLTemp2,strSQLTempM, strSort ); } } else { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ ORDER BY m.T_C6 %s"), strLogin,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTemp2,strSQLTempM, strSort ); } else { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s'AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ ORDER BY m.T_C6 %s"), strLogin,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTemp2,strSQLTempM, strUser2,strLogin,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strSQLTemp2,strSQLTempM, strSort ); } } } DWORD dwTickCount; DWORD dwTickCount2; DWORD dwInterset; DWORD dwInterset2; m_strSQL = strSQL; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { dwTickCount = ::GetTickCount(); nCount = ListRecordCount(); dwTickCount2 = ::GetTickCount(); dwInterset = dwTickCount2 - dwTickCount; //CDBSQLiteCommFun::RunSQL( _T("BEGIN"), m_pAConnect->GetDBConnect()); //CMBAMDBFun::WriteDBErrToFile(_T("CMsgs::ListTalking 2")); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); dwTickCount2 = ::GetTickCount(); dwInterset2 = dwTickCount2 - dwTickCount; //m_ARecordSet.MoveFirst(); //CMBAMDBFun::WriteDBErrToFile(_T("CMsgs::ListTalking 3")); //nCount = m_ARecordSet.GetRecordCount( ); //CMBAMDBFun::WriteDBErrToFile(_T("CMsgs::ListTalking 4")); //CDBSQLiteCommFun::RunSQL( _T("COMMIT"), m_pAConnect->GetDBConnect()); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } //strSQL = _T("PRAGMA synchronous = FULL; "); //strSQL = _T("PRAGMA temp_store = DEFAULT; "); //CDBSQLiteCommFun::RunSQL( strSQL, m_pAConnect->GetDBConnect()); CString strLog; //strLog.Format(_T("CMsgs::ListTalking ²éѯʱ¼ä(%d-%d)"),dwInterset,dwInterset2); //CMBAMDBFun::WriteDBErrToFile(strLog); return nCount; } int CMsgs::ListUnreadMsg( LPCTSTR lpszOwner ) { CString strSQL; int nCount; // begin modify wangcheng 2008/09/27 // ¼ÓÈ빦ÄÜʵÏÖ×°ÔØÎ´¶ÁµÄÏûÏ¢,Ö»°üÀ¨ÊÕ¼þÏäδ¶ÁµÄÏûÏ¢,ÔÝʱ?? // end modify m_nListMsgType = LISTMSG_TYPE_SIMPLE; strSQL.Format(_T("SELECT G_C1,T_C6 FROM TN_STK_MSG WHERE N_C8 = 1 AND N_C11 <= 1 AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) ORDER BY T_C6 DESC"),AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ); m_strSQL = strSQL; // 2: IOPEN , 1: InBox if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount( ); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); if(nCount > 0) m_ARecordSet.MoveFirst(); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo(); return 0; } if ( nCount > 0 ) GetData( ); return nCount; } int CMsgs::GetMsgOwnersLength() { return m_arMsgOwners.GetSize( ); } bool CMsgs::GetMsgOwner( int nIndex, CMsgOwners &msgOwner ) { int nMsgOwnersCount = 0; nMsgOwnersCount = GetMsgOwnersLength( ); if ( nIndex >= nMsgOwnersCount ) return false; if ( nMsgOwnersCount == 0 ) return false; msgOwner.LoadData( m_arMsgOwners[nIndex] ); return true; } int CMsgs::GetAttachmentCount() { return m_arMsgAttachments.GetSize( ); } bool CMsgs::GetAttachment( int nIndex, CMsgAttachments &msgAttachment ) { int nAttachCount = 0; nAttachCount = GetAttachmentCount( ); if ( nIndex >= nAttachCount ) return false; if ( nAttachCount == 0 ) return false; msgAttachment.LoadData( m_arMsgAttachments.GetAt( nIndex ) ); return true; } bool CMsgs::RemoveMsg( LPCTSTR lpszMsgID ) { // µ±Ã»ÓÐÖ¸¶¨IDµÄÏûϢʱ·µ¼Ófalse; CString strSQL; BOOL bReturn = true; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); strSQL.Format( _T("DELETE FROM TN_STK_MSGOWNER WHERE G_C1 = '%s'"), lpszMsgID ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL,pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_ATTACHMENT WHERE G_C1 = '%s'"), lpszMsgID ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_MSGPROPERTY WHERE G_C1 = '%s'"), lpszMsgID ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_MSG WHERE G_C1 = '%s'"), lpszMsgID ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL,pAConnect ); return ( bReturn != 0 ); } bool CMsgs::MoveMsg( LPCTSTR lpszMsgID, long nNewFolderID ) { if ( lpszMsgID == NULL || nNewFolderID <= 0 ) return false; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; BOOL bReturn = true; CString strSQL; strSQL.Format( _T("UPDATE TN_STK_MSG SET N_C8 = %d WHERE G_C1 = '%s'"), nNewFolderID, lpszMsgID ); bReturn = CDBSQLiteCommFun::RunSQL( strSQL, m_pAConnect->GetDBConnect() ); return ( bReturn != 0 ); } bool CMsgs::RemoveOutboxTimeMsg( LPCTSTR lpszOwner, COleDateTime tmStartDate, COleDateTime tmEndDate ) { CString strSQL; CString strStartDate; CString strEndDate; CString strSQLTempS; CString strSQLTempM; BOOL bReturn = true; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); if ( tmStartDate.GetYear() > 1970 || tmEndDate.GetYear() > 1970 ) { if ( tmEndDate.GetYear() == 1970 ) tmEndDate = COleDateTime::GetCurrentTime(); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( tmEndDate ); strSQLTempS.Format( _T(" AND T_C6 >= '%s' AND T_C6 <= '%s'"), strStartDate, strEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } strSQL.Format( _T("DELETE FROM TN_STK_MSGOWNER WHERE G_C1 IN (Select m.G_C1\ FROM TN_STK_MSGOWNER o, TN_STK_MSG m WHERE o.G_C1 = m.G_C1 AND m.S_C4 = '%s' AND \ m.N_C8 = 2 %s)"), lpszOwner, strSQLTempM ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_ATTACHMENT WHERE G_C1 IN (Select m.G_C1\ FROM TN_STK_ATTACHMENT a, TN_STK_MSG m WHERE a.G_C1 = m.G_C1 AND m.S_C4 = '%s' AND \ m.N_C8 = 2 %s)"), lpszOwner, strSQLTempM ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_MSGPROPERTY WHERE G_C1 IN (Select m.G_C1\ FROM TN_STK_MSGPROPERTY p, TN_STK_MSG m WHERE p.G_C1 = m.G_C1 AND m.S_C4 = '%s' AND \ m.N_C8 = 2 %s)"), lpszOwner, strSQLTempM ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_MSG WHERE S_C4 = '%s' AND \ N_C8 = 2 %s"), lpszOwner, strSQLTempS ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); return ( bReturn != 0 ); } bool CMsgs::RemoveReadedTimeMsg( LPCTSTR lpszOwner, COleDateTime tmStartDate, COleDateTime tmEndDate ) { CString strSQL; CString strStartDate; CString strEndDate; BOOL bReturn = true; CString strSQLTempM; CString strSQLTempS; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); if ( tmStartDate.GetYear() > 1970 || tmEndDate.GetYear() > 1970 ) { if ( tmEndDate.GetYear() == 1970 ) tmEndDate = COleDateTime::GetCurrentTime(); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( tmEndDate ); strSQLTempS.Format( _T(" AND T_C6 >= '%s' AND T_C6 <= '%s'"), strStartDate, strEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } strSQL.Format( _T("DELETE FROM TN_STK_MSGOWNER WHERE G_C1 IN (Select m.G_C1\ FROM TN_STK_MSGOWNER o, TN_STK_MSG m WHERE o.G_C1 = m.G_C1 AND m.N_C11 >= 2 AND \ m.N_C8 = 1 %s)"), strSQLTempM ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_ATTACHMENT WHERE G_C1 IN (Select m.G_C1\ FROM TN_STK_ATTACHMENT a, TN_STK_MSG m WHERE a.G_C1 = m.G_C1 AND m.N_C11 >= 2 AND \ m.N_C8 = 1 %s)"), strSQLTempM ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_MSGPROPERTY WHERE G_C1 IN (Select m.G_C1\ FROM TN_STK_MSGPROPERTY p, TN_STK_MSG m WHERE p.G_C1 = m.G_C1 AND m.N_C11 >= 2 AND \ m.N_C8 = 1 %s)"), strSQLTempM ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); strSQL.Format( _T("DELETE FROM TN_STK_MSG WHERE N_C11 >= 2 AND \ N_C8 = 1 %s"), strSQLTempS ); bReturn &= CDBSQLiteCommFun::RunSQL( strSQL, pAConnect ); return ( bReturn != 0 ); } int CMsgs::ListSearchingTalking( CString strLogin, CString strUser2,CString strKey,bool bOnlyAttachmentMsg,bool bGroupSend, BOOL bTimeAsc ) { CString strSQL; CString strStartDate; CString strEndDate; CString strSQLTempM; int nCount; CString strSort; CString strTemp; // CString strSQLTempAttach; strLogin.MakeLower(); strUser2.MakeLower(); if ( m_tmStartDate.GetYear() > 1970 || m_tmEndDate.GetYear() > 1970 ) { if ( m_tmEndDate.GetYear() == 1970 ) m_tmEndDate = COleDateTime::GetCurrentTime( ); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } if( !strKey.IsEmpty()) strTemp.Format( _T("AND m.S_C25 LIKE '%%%s%%' "), strKey ); //if( bAttachmentMsg) // strSQLTempAttach = _T("AND m.N_C12>=1"); if(bTimeAsc) strSort = _T(" ASC"); else strSort = _T(" DESC"); /*strSQL.Format( _T("SELECT DISTINCT m.G_C1,m.G_C2,m.S_C3, m.S_C4, m.S_C5, m.T_C6,m.N_C7,m.N_C8,m.C_C9,m.S_C10,m.N_C11,m.N_C12,m.N_C13,m.N_C14,m.N_C15,m.S_C16,m.C_C17 ,m.S_C18,m.S_C19,m.T_C20,m.S_C21,m.S_C22,m.N_C23 ,m.S_C24,m.S_C25 \ FROM TN_STK_MSG m left join TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ ( (m.S_C4 = '%s' AND ( (m.S_C18 = '%s' AND m.C_C17 ='0') OR (o.S_C2 = '%s' AND m.C_C17 ='1'))) \ OR (m.S_C4 = '%s' AND m.N_C11>=%d )) AND m.S_C10='' %s %s\ ORDER BY m.T_C6 %s"), strLogin, strUser2, strUser2,strUser2,MSG_READSTATE_IOPEN, strTemp,strSQLTempM,strSort ); */ if(bOnlyAttachmentMsg) { if(strKey.IsEmpty()) { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST , strSQLTempM,strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strSQLTempM, strSort ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST , strSQLTempM,strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST , strSQLTempM,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM, strSort ); } /*if(bGroupSend) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND m.S_C10='' AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.N_C11>=%d AND m.C_C17='1' AND m.S_C10='' AND m.N_C12>=1 %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2, strSQLTempM,strUser2,MSG_READSTATE_IOPEN,strSQLTempM, strSort ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND m.S_C10='' AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.N_C11>=%d AND m.C_C17='0' AND m.S_C10='' AND m.N_C12>=1 %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2, strSQLTempM,strUser2,MSG_READSTATE_IOPEN,strSQLTempM, strSort ); }*/ /*strSQL.Format( _T("SELECT m.G_C1,m.G_C2,m.S_C3, m.S_C4, m.S_C5, m.T_C6,m.N_C7,m.N_C8,m.C_C9,m.S_C10,m.N_C11,m.N_C12,m.N_C13,m.N_C14,m.N_C15,m.S_C16,m.C_C17 ,m.S_C18,m.S_C19,m.T_C20,m.S_C21,m.S_C22,m.N_C23 ,m.S_C24,m.S_C25 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ ( (m.S_C4 = '%s' AND o.S_C2 = '%s') \ UNION \ OR (m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.N_C11>=%d )) AND m.S_C10='' AND m.N_C12>=1 %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2, strUser2,strLogin,MSG_READSTATE_IOPEN,strSQLTempM,strSort );*/ } else { if(strLogin == strUser2) { strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6 \ FROM (SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s )ST \ INNER JOIN TN_STK_ATTACHMENT a ON a.G_C1 = ST.G_C1 \ WHERE a.S_C2 LIKE '%%%s%%' \ ORDER BY ST.T_C6 %s"), strLogin, strUser2, AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM,strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM,strKey, strSort ); } else { strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6 \ FROM (SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) AND m.N_C12>=1 %s )ST \ INNER JOIN TN_STK_ATTACHMENT a ON a.G_C1 = ST.G_C1 \ WHERE a.S_C2 LIKE '%%%s%%' ORDER BY ST.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST , strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST , strSQLTempM,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM,strKey,strSort ); } /*if(bGroupSend) { strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6 \ FROM (SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND m.S_C10='' AND m.N_C12>=1 %s\ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.N_C11>=%d AND m.C_C17='1' AND m.S_C10='' AND m.N_C12>=1 %s )ST \ INNER JOIN TN_STK_ATTACHMENT a ON a.G_C1 = ST.G_C1 \ WHERE a.S_C25 LIKE '%%%s%%' \ ORDER BY ST.T_C6 %s"), strLogin, strUser2, strSQLTempM,strUser2,MSG_READSTATE_IOPEN,strSQLTempM,strKey,strSort ); } else { strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6 \ FROM (SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND m.S_C10='' AND m.N_C12>=1 %s\ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.N_C11>=%d AND m.C_C17='0' AND m.S_C10='' AND m.N_C12>=1 %s )ST \ INNER JOIN TN_STK_ATTACHMENT a ON a.G_C1 = ST.G_C1 \ WHERE a.S_C25 LIKE '%%%s%%' \ ORDER BY ST.T_C6 %s"), strLogin, strUser2, strSQLTempM,strUser2,MSG_READSTATE_IOPEN,strSQLTempM,strKey,strSort ); }*/ } } else { if(strKey.IsEmpty()) { if(bGroupSend) { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM,strSort ); } else { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM,strSort ); } } else { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM,strSort ); } else { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ ((m.S_C4 = '%s' AND m.S_C18 = '%s') OR (m.S_C4 = '%s' AND m.S_C18 = '%s')) AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,strUser2,strLogin,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strSQLTempM,strSort ); } } } else { if(bGroupSend) { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ ORDER BY ST.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strTemp,strSQLTempM,strSort ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strTemp,strSQLTempM, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strTemp,strSQLTempM,strSort ); } } else { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strTemp,strSQLTempM,strSort ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ ((m.S_C4 = '%s' AND m.S_C18 = '%s') OR (m.S_C4 = '%s' AND m.S_C18 = '%s')) AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2, strUser2,strLogin,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST ,strTemp,strSQLTempM,strSort ); } } } /*strSQL.Format( _T("SELECT m.G_C1,m.G_C2,m.S_C3, m.S_C4, m.S_C5, m.T_C6,m.N_C7,m.N_C8,m.C_C9,m.S_C10,m.N_C11,m.N_C12,m.N_C13,m.N_C14,m.N_C15,m.S_C16,m.C_C17 ,m.S_C18,m.S_C19,m.T_C20,m.S_C21,m.S_C22,m.N_C23 ,m.S_C24,m.S_C25 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ ( (m.S_C4 = '%s' AND o.S_C2 = '%s') \ OR (m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.N_C11>=%d )) AND m.S_C10='' %s %s\ ORDER BY m.T_C6 %s"), strLogin, strUser2, strUser2,strLogin,MSG_READSTATE_IOPEN,strTemp,strSQLTempM,strSort );*/ } m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_CHAT; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); //m_ARecordSet.MoveFirst(); //nCount = m_ARecordSet.GetRecordCount( ); //nCount = 0; } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } BOOL CMsgs::UpldateLastContactDate( CString strID, CString strName, CString strLastDate, CString strSubject) { CString strSQL; CDBRecord ARecordset; BOOL bReturn = FALSE; int nVaule = 0; CString strSubSQL = _T(""); CHighTime dtCurrent = CHighTime::GetPresentTime(); if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); if( strID.IsEmpty() ) return TRUE; if( !strName.IsEmpty() && strName.CompareNoCase(strID) != 0) { strSubSQL.Format( _T("S_C2 ='%s',"), CMBAMDBFun::GetDBReplaceStr( strName)); } strSQL.Format( _T("SELECT COUNT(*) FROM TN_STK_LASTCONTACT WHERE S_C1='%s' AND N_C4=%d "),CMBAMDBFun::GetDBReplaceStr( strID),AM_VIEWITEMTYPE_USER); try { ARecordset.Open( pAConnect,strSQL ); while ( S_OK == ARecordset.MoveNext() ) { nVaule = 0; ARecordset.GetValue( 1, nVaule ); bReturn = TRUE; break; } if( nVaule > 1 ) { strSQL.Format( _T("DELETE FROM TN_STK_LASTCONTACT WHERE S_C1= '%s' AND N_C4=%d "), CMBAMDBFun::GetDBReplaceStr( strID),AM_VIEWITEMTYPE_USER ); bReturn = CDBSQLiteCommFun::RunSQL( (LPCTSTR)strSQL,pAConnect); if( !bReturn) return false; strSQL.Format( _T("INSERT INTO TN_STK_LASTCONTACT(S_C1, S_C2 ,T_C3, N_C4, S_C5 ) VALUES ( \ '%s', '%s', '%s', %d, '%s' )"), CMBAMDBFun::GetDBReplaceStr( strID), CMBAMDBFun::GetDBReplaceStr( strName),strLastDate,AM_VIEWITEMTYPE_USER,CMBAMDBFun::GetDBReplaceStr( strSubject) ); bReturn = CDBSQLiteCommFun::RunSQL( (LPCTSTR)strSQL,pAConnect); return bReturn; } else if( nVaule == 1 ) { strSQL.Format( _T("UPDATE TN_STK_LASTCONTACT SET S_C2='%s', T_C3 ='%s', S_C5 ='%s' WHERE S_C1= '%s' AND N_C4=%d AND (T_C3<= '%s' OR T_C3 > '%s')"), CMBAMDBFun::GetDBReplaceStr( strName),strLastDate, CMBAMDBFun::GetDBReplaceStr( strSubject), CMBAMDBFun::GetDBReplaceStr( strID),AM_VIEWITEMTYPE_USER, strLastDate, CMBAMDBFun::FormatDBTIMEToStr( dtCurrent ) ); bReturn = CDBSQLiteCommFun::RunSQL( (LPCTSTR)strSQL,pAConnect); return bReturn; } else { strSQL.Format( _T("INSERT INTO TN_STK_LASTCONTACT(S_C1, S_C2 ,T_C3, N_C4, S_C5 ) VALUES ( \ '%s', '%s', '%s', %d, '%s' )"), CMBAMDBFun::GetDBReplaceStr( strID), CMBAMDBFun::GetDBReplaceStr( strName),strLastDate,AM_VIEWITEMTYPE_USER,CMBAMDBFun::GetDBReplaceStr( strSubject) ); bReturn = CDBSQLiteCommFun::RunSQL( (LPCTSTR)strSQL,pAConnect); return bReturn; } } catch ( CDBSQliteException ex ) { CString strError, strErrInfo; strError = ex.GetErrInfo(); strErrInfo = _T("Msg UpldateLastContactDate - ") + strError; CMBAMDBFun::WriteDBErrToFile( strErrInfo ); return FALSE; } return bReturn; } BOOL CMsgs::UpdateMsgOwnerAttitude( CMsgItem *pMsg ) { if ( !pMsg || pMsg->m_strID.IsEmpty() ) return false; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); m_pAConnect->AddRef(); CMsgOwners msgOwners( m_pAConnect ); CMsgOwnerItem itemMsgOwner; int nCount, nIndex, nItem; GetMsgOwnerData( ); nCount = GetMsgOwnersLength(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { GetMsgOwner( nIndex, msgOwners ); nItem = pMsg->FindMsgOwnerr( msgOwners.m_strOwner ); if ( nItem < 0 ) continue; itemMsgOwner = pMsg->m_arMsgOwners.GetAt( nItem ); msgOwners.m_strMsgID = pMsg->m_strID; msgOwners.m_tmOpenDate = itemMsgOwner.m_tmOpenDate; msgOwners.m_strAttitude = itemMsgOwner.m_strAttitude; msgOwners.UpdateRecord( pAConnect); } return true; } BOOL CMsgs::UpdateMsg( CMsgItem *pMsg,bool bIsSendMsg ) { if ( !pMsg || pMsg->m_strID.IsEmpty() ) return false; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); CMsgOwnerItem msgOwner; CMsgAttachmentItem msgAttach; CString strMsgID; int nCount, nIndex; CHighTime tmHigh; CString strOpenTime; strMsgID = pMsg->m_strID; m_strSourceID = pMsg->m_strSourceID; m_strSubject = pMsg->m_strSubject; m_strSender = pMsg->m_strSender; m_strSenderName = pMsg->m_strSenderName; m_tmDate =m_tmDate; m_nType = pMsg->m_nType; m_nMsgFolder = pMsg->m_nMsgFolder; m_strMsgExtType = pMsg->m_strMsgExtType; m_nNeedConfirm = pMsg->m_nNeedConfirm; m_nReadState = m_nReadState | pMsg->m_nReadState; m_strAttitudeset = _T(""); m_nMsgExtState = pMsg->m_nMsgExtState; m_nPropertyCount = pMsg->m_nPropertyCount; m_nCharset = pMsg->m_nCharset; m_strContentType = pMsg->m_strContentType; m_nContentSize = pMsg->m_nContentSize; m_strContent = pMsg->m_strContent; m_strContentText = pMsg->m_strContentText; if ( pMsg->m_arMsgAttachments.GetSize() > 0 ) m_nAttachCount = pMsg->m_arMsgAttachments.GetSize(); else m_nAttachCount = pMsg->m_nAttachCount; nCount = pMsg->m_arMsgOwners.GetSize(); if(nCount > 1) pMsg->m_nIsGroupSend = true; else pMsg->m_nIsGroupSend = false; m_nIsGroupSend = pMsg->m_nIsGroupSend; m_strReceivers = _T(""); m_strReceiverNames = _T(""); if( !m_nIsGroupSend ) { for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); m_strReceivers += msgOwner.m_strOwner; m_strReceiverNames += msgOwner.m_strOwnerName; m_tmOpenDate = msgOwner.m_tmOpenDate; m_strReceiverAttitude = msgOwner.m_strAttitude; break; } } else { if(bIsSendMsg) { for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); m_strReceivers += msgOwner.m_strOwner + _T(";"); m_strReceiverNames += msgOwner.m_strOwnerName + _T(";"); m_tmOpenDate = msgOwner.m_tmOpenDate; m_strReceiverAttitude = msgOwner.m_strAttitude; if(nIndex > 4) break; } } else { m_strReceivers = _T(";"); m_strReceiverNames = _T(";"); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); m_strReceivers += msgOwner.m_strOwner + _T(";"); m_strReceiverNames += msgOwner.m_strOwnerName + _T(";"); m_tmOpenDate = msgOwner.m_tmOpenDate; m_strReceiverAttitude = msgOwner.m_strAttitude; } } } UpdateRecord( pAConnect ); m_strReceivers.TrimLeft(_T(";")); m_strReceiverNames.TrimLeft(_T(";")); m_strReceivers.TrimRight(_T(";")); m_strReceiverNames.TrimRight(_T(";")); /*if(m_nType == AM_MSGTYPE_MSG && m_strMsgExtType.IsEmpty()) { UpldateLastContactDate( m_strSender,m_strSenderName, CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ),m_strSubject ); }*/ bool bExistedOwner = false; msgOwner.m_strMsgID = strMsgID; nCount = pMsg->m_arMsgOwners.GetSize(); if ( nCount >= 1 ) { // ÅжÏÊÇ·ñÊǵÚÒ»´ÎINSERT m_pAConnect->AddRef(); CMsgOwners msgOwners(m_pAConnect); msgOwner = pMsg->m_arMsgOwners.GetAt( 0 ); if ( msgOwners.ListSpMsgID( pMsg->m_strID, msgOwner.m_strOwner ) != 0 ) { bExistedOwner = true; } else { bExistedOwner = false; } if ( !bExistedOwner ) { // ²»´æÔÚµÄÒªNEW try { if(pMsg->m_nIsGroupSend && bIsSendMsg) { pAConnect->StartTransaction(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); msgOwner.InsertRecord( pAConnect ); } pAConnect->Commit(); } /*else { msgOwner.m_strMsgID = pMsg->m_strID; msgOwner.m_strOwner = m_strReceivers; msgOwner.m_strOwnerName = m_strReceiverNames; msgOwner.m_tmOpenDate = m_tmOpenDate; msgOwner.m_nOwnerType = 0; msgOwner.m_strAttitude = m_strReceiverAttitude; msgOwner.InsertRecord( pAConnect ); }*/ } catch( ... ) { pAConnect->Abort(); return false; } } else { // ÒѾ­´æÔÚµÄÒªUPDATE try { pAConnect->StartTransaction(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); msgOwner.m_strMsgID = strMsgID; msgOwner.UpdateRecord( pAConnect ); } pAConnect->Commit(); } catch( ... ) { pAConnect->Abort(); return false; } } } // Insert Message Attachment msgAttach.m_strMsgID = strMsgID; CString strFilePath; CString strTmpName; int nValue = 1; CMapStringToInt mapAttachment; try { pAConnect->StartTransaction(); mapAttachment.RemoveAll(); nCount = pMsg->m_arMsgAttachments.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgAttach = pMsg->m_arMsgAttachments.GetAt( nIndex ); strTmpName = _T(""); strFilePath = msgAttach.m_strFilePath; if(strFilePath.IsEmpty()) strFilePath = msgAttach.m_strFileName; if(strFilePath.Right(1) == _T("\\")) { strFilePath.TrimRight(_T("\\")); strTmpName = _T("\\"); } msgAttach.m_strFileName.TrimRight(_T("\\")); if(msgAttach.m_strFileName.IsEmpty()) { msgAttach.m_strFileName = CMBAMDBFun::GetFileName(strFilePath); } if(msgAttach.m_strFileName.IsEmpty()) msgAttach.m_strFileName = strFilePath; msgAttach.m_strFileName += strTmpName; msgAttach.InsertRecord( pAConnect ); mapAttachment.SetAt(msgAttach.m_strFileID, nValue); } pAConnect->Commit(); } catch( ... ) { pAConnect->Abort(); return false; } // Insert Message Property CString strName, strValue; CMsgPropertyItem msgProperty; msgProperty.m_strMsgID = strMsgID; nCount = pMsg->m_arMsgPropertys.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgProperty = pMsg->m_arMsgPropertys.GetAt( nIndex ); if(msgProperty.m_strName.IsEmpty()) continue; if(mapAttachment.Lookup(msgProperty.m_strName, nValue)) continue; if ( msgProperty.IsMsgSysAttrib( ) ) continue; if ( msgProperty.IsMsgSysAttribDefValue( ) ) continue; msgProperty.InsertRecord( pAConnect ); } return true; } BOOL CMsgs::DoSaveSyncMsg(CMsgItem *pMsg,bool bIsSendMsg, bool bNeedConfirm) { if ( !pMsg || pMsg->m_strID.IsEmpty() ) return false; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); // ÉèÖÃFolderID if( pMsg->m_nType == AM_MSGTYPE_BROADCAST || pMsg->m_nType == AM_MSGTYPE_AFFICHE ) pMsg->m_nMsgFolder = FOLDER_BROADCAST; CMsgOwnerItem msgOwner; CMsgAttachmentItem msgAttach; CString strMsgID; long nMsgIndex(0); int nIndex; BOOL bRetValue = false; CPerfTimer pt; CString strReceiversInfo; if ( ListSpMsgID( pMsg->m_strID ) != 0 ) { return true; } strMsgID = pMsg->m_strID; // Insert Message m_strID = pMsg->m_strID; m_strSourceID = pMsg->m_strSourceID; m_strSubject = pMsg->m_strSubject; m_strSender = pMsg->m_strSender; m_strSenderName = pMsg->m_strSenderName; m_tmDate = pMsg->m_tmDate; m_tmOpenDate = pMsg->m_tmOpenDate; m_nType = pMsg->m_nType; m_nMsgFolder = pMsg->m_nMsgFolder; m_strMsgExtType = pMsg->m_strMsgExtType; m_nNeedConfirm = pMsg->m_nNeedConfirm; m_nReadState = pMsg->m_nReadState; m_strAttitudeset = _T(""); m_nMsgFlag = pMsg->m_nMsgFlag; m_nMsgExtState = pMsg->m_nMsgExtState; m_nPropertyCount = pMsg->m_nPropertyCount; m_nCharset = pMsg->m_nCharset; m_strContentType = pMsg->m_strContentType; m_nContentSize = pMsg->m_nContentSize; m_strContent = pMsg->m_strContent; m_strContentText = pMsg->m_strContentText; m_nAttachCount = pMsg->m_nAttachCount; m_nIsGroupSend = false; m_nIsGroupSend = pMsg->m_nIsGroupSend; m_strReceivers = _T(""); m_strReceiverNames = _T(""); for ( nIndex = 0; nIndex < pMsg->m_arMsgOwners.GetCount(); nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); m_strReceivers += msgOwner.m_strOwner + _T(";"); m_strReceiverNames += msgOwner.m_strOwnerName + _T(";"); m_tmOpenDate = msgOwner.m_tmOpenDate; m_strReceiverAttitude = msgOwner.m_strAttitude; break; } m_strReceivers.TrimRight(_T(";")); m_strReceiverNames.TrimRight(_T(";")); pt.Start(); InsertRecord( pAConnect, !bIsSendMsg ); pt.Stop(); pt.Trace( _T("DoSaveSyncMsg Msg\r\n") ); if( !bIsSendMsg && ((m_nType == AM_MSGTYPE_MSG && m_strMsgExtType.IsEmpty()) || m_nType == AM_MSGTYPE_GUNGHO)) { UpldateLastContactDate( m_strSender,m_strSenderName, CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ),m_strSubject ); } return true; } BOOL CMsgs::DoSaveMsg(CMsgItem *pMsg,bool bIsSendMsg, bool bNeedConfirm) { if ( !pMsg || pMsg->m_strID.IsEmpty() ) { CString strLog; strLog.Format(_T("DoSaveMsg MsgIDΪ¿Õ£¡")); CMBAMDBFun::WriteDBErrToFile(strLog); return FALSE; } if( !m_pAConnect || !m_pAConnect->IsOpenDB()) { CString strLog; strLog.Format(_T("DoSaveMsg Êý¾Ý¿âûÓдò¿ª³É¹¦£¡")); CMBAMDBFun::WriteDBErrToFile(strLog); return FALSE; } CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); // ÉèÖÃFolderID if( pMsg->m_nType == AM_MSGTYPE_BROADCAST || pMsg->m_nType == AM_MSGTYPE_AFFICHE ) pMsg->m_nMsgFolder = FOLDER_BROADCAST; if( pMsg->m_nType == AM_MSGTYPE_GUNGHO ) pMsg->m_nMsgFolder = FOLDER_GUNGHO; BOOL bBigBatchSend = FALSE; CMsgOwnerItem msgOwner; CMsgAttachmentItem msgAttach; CString strMsgID; long nMsgIndex(0); int nCount, nIndex; BOOL bRetValue = false; CPerfTimer pt; CString strReceiversInfo; if ( ListSpMsgID( pMsg->m_strID ) != 0 ) { pt.Start(); pt.Trace( _T("ListSpMsgID\r\n") ); GetData( ); if ( pMsg->m_nReadState & MSG_READSTATE_DOWNLOAD ) { bRetValue = UpdateMsg( pMsg ,bIsSendMsg); if ( bNeedConfirm ) { bRetValue = UpdateMsgOwnerAttitude( pMsg ); pt.Stop(); return bRetValue; } } pt.Stop(); return bRetValue; } strMsgID = pMsg->m_strID; // Insert Message m_strID = pMsg->m_strID; m_strSourceID = pMsg->m_strSourceID; m_strSubject = pMsg->m_strSubject; m_strSender = pMsg->m_strSender; m_strSenderName = pMsg->m_strSenderName; m_tmDate = pMsg->m_tmDate; m_tmOpenDate = pMsg->m_tmOpenDate; m_nType = pMsg->m_nType; m_nMsgFolder = pMsg->m_nMsgFolder; m_strMsgExtType = pMsg->m_strMsgExtType; m_nNeedConfirm = pMsg->m_nNeedConfirm; m_nReadState = pMsg->m_nReadState; m_strAttitudeset = _T(""); m_nMsgFlag = pMsg->m_nMsgFlag; m_nMsgExtState = pMsg->m_nMsgExtState; m_nPropertyCount = pMsg->m_nPropertyCount; m_nCharset = pMsg->m_nCharset; m_strContentType = pMsg->m_strContentType; m_nContentSize = pMsg->m_nContentSize; m_strContent = pMsg->m_strContent; m_strContentText = pMsg->m_strContentText; if ( pMsg->m_arMsgAttachments.GetSize() > 0 ) m_nAttachCount = pMsg->m_arMsgAttachments.GetSize(); else m_nAttachCount = pMsg->m_nAttachCount; nCount = pMsg->m_arMsgOwners.GetSize(); if(nCount > 1) pMsg->m_nIsGroupSend = true; else pMsg->m_nIsGroupSend = false; if(nCount > 100) bBigBatchSend = TRUE; m_nIsGroupSend = pMsg->m_nIsGroupSend; m_strSender.MakeLower(); m_strReceivers = _T(""); m_strReceiverNames = _T(""); if(m_nIsGroupSend ) { if(!bIsSendMsg) { for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); m_strReceivers += msgOwner.m_strOwner + _T(";"); m_strReceiverNames += msgOwner.m_strOwnerName + _T(";"); } } else { for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); m_strReceivers += msgOwner.m_strOwner + _T(";"); m_strReceiverNames += msgOwner.m_strOwnerName + _T(";"); m_tmOpenDate =msgOwner.m_tmOpenDate; m_strReceiverAttitude = msgOwner.m_strAttitude; if(nIndex > 4) break; } } } else { m_strReceivers = pMsg->m_strReceivers; m_strReceiverNames = pMsg->m_strReceiverNames; m_tmOpenDate = pMsg->m_tmOpenDate; m_strReceiverAttitude = pMsg->m_strReceiverAttitude; } m_strReceivers.TrimRight(_T(";")); m_strReceiverNames.TrimRight(_T(";")); m_strReceivers.MakeLower(); try{ pt.Start(); BOOL bRet2= InsertRecord( pAConnect, !bIsSendMsg ); pt.Stop(); pt.Trace( _T("DoSaveMsg Msg\r\n") ); if(!bRet2) { CString strLog; strLog.Format(_T("DoSaveMsg ²åÈëÏûϢʧ°Ü%s-%s£¡"),m_strID,m_strSubject); CMBAMDBFun::WriteDBErrToFile(strLog); return FALSE; } } catch( ... ) { CString strLog; strLog.Format(_T("DoSaveMsg ²åÈëÏûÏ¢Òì³£%s-%s£¡"),m_strID,m_strSubject); CMBAMDBFun::WriteDBErrToFile(strLog); return FALSE; } if( (m_nType == AM_MSGTYPE_MSG && m_strMsgExtType.IsEmpty()) || m_nType == AM_MSGTYPE_GUNGHO|| m_nType == AM_MSGTYPE_BROADCAST) { if( !bIsSendMsg) { UpldateLastContactDate( m_strSender,m_strSenderName, CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ),m_strSubject ); } else { if( !pMsg->m_nIsGroupSend) UpldateLastContactDate(m_strReceivers,m_strReceiverNames, CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ),m_strSubject ); } } CString strLog; strLog.Format(_T("´æ´¢½ÓÊÜÓû§£º%s"),pMsg->m_strSubject); if(bBigBatchSend) CMBAMDBFun::WriteDBErrToFile( strLog ); // Insert Message Receiver msgOwner.m_strMsgID = strMsgID; nCount = pMsg->m_arMsgOwners.GetSize(); if( nCount == 0 ) { // ÔÚµÚÒ»´ÎÏûϢ֪ͨʱ,ûÓнÓÊÕ×ÅÐÅÏ¢ } else { try { if(pMsg->m_nIsGroupSend) { if( bIsSendMsg ) { pAConnect->StartTransaction(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); msgOwner.m_strMsgID = pMsg->m_strID; msgOwner.InsertRecord( pAConnect ); } pAConnect->Commit(); if(nCount < 10) { for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); msgOwner.m_strOwner.MakeLower(); UpldateLastContactDate( msgOwner.m_strOwner,msgOwner.m_strOwnerName, CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ),m_strSubject ); } } } } /*else { msgOwner.m_strMsgID = pMsg->m_strID; msgOwner.m_strOwner = m_strReceivers; msgOwner.m_strOwnerName = m_strReceiverNames; msgOwner.m_tmOpenDate = m_tmOpenDate; msgOwner.m_nOwnerType = 0; msgOwner.m_strAttitude = m_strReceiverAttitude; msgOwner.InsertRecord( pAConnect ); }*/ } catch( ... ) { pAConnect->Abort(); return false; } } strLog.Format(_T("´æ´¢¸½¼þ£º%s"),pMsg->m_strSubject); if(bBigBatchSend) CMBAMDBFun::WriteDBErrToFile( strLog ); // Insert Message Attachment msgAttach.m_strMsgID = strMsgID; CString strPath; CString strTmpName; int nValue = 1; CMapStringToInt mapAttachment; try{ pAConnect->StartTransaction(); mapAttachment.RemoveAll(); nCount = pMsg->m_arMsgAttachments.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgAttach = pMsg->m_arMsgAttachments.GetAt( nIndex ); strTmpName = _T(""); strPath = msgAttach.m_strFilePath; if(strPath.IsEmpty()) strPath = msgAttach.m_strFileName; if(strPath.Right(1) == _T("\\")) { strPath.TrimRight(_T("\\")); strTmpName = _T("\\"); } msgAttach.m_strMsgID = strMsgID; msgAttach.m_strFileName.TrimRight(_T("\\")); if(msgAttach.m_strFileName.IsEmpty()) { msgAttach.m_strFileName = CMBAMDBFun::GetFileName(strPath); } if(msgAttach.m_strFileName.IsEmpty()) msgAttach.m_strFileName = strPath; msgAttach.m_strFileName += strTmpName; msgAttach.InsertRecord( pAConnect); mapAttachment.SetAt(msgAttach.m_strFileID, nValue); } pAConnect->Commit(); } catch( ... ) { pAConnect->Abort(); return false; } strLog.Format(_T("´æ´¢ÊôÐÔ£º%s"),pMsg->m_strSubject); if(bBigBatchSend) CMBAMDBFun::WriteDBErrToFile( strLog ); // Insert Message Property CString strName, strValue; CMsgPropertyItem msgProperty; msgProperty.m_strMsgID = strMsgID; nCount = pMsg->m_arMsgPropertys.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgProperty = pMsg->m_arMsgPropertys.GetAt( nIndex ); if(mapAttachment.Lookup(msgProperty.m_strName, nValue)) continue; if ( msgProperty.IsMsgSysAttrib( ) ) continue; if ( msgProperty.IsMsgSysAttribDefValue( ) ) continue; msgProperty.m_strMsgID = strMsgID; msgProperty.InsertRecord( pAConnect ); } return true; } BOOL CMsgs::DoSaveSendMulMsg( CMsgItem *pMsg ) { if ( !pMsg || pMsg->m_strID.IsEmpty() ) return false; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; CDBConnect *pAConnect = m_pAConnect->GetDBConnect(); CMsgOwnerItem msgOwner; CMsgAttachmentItem msgAttach; CString strMsgID; long nMsgIndex(0); int nCount, nIndex; BOOL bRetValue = false; CPerfTimer pt; CString strReceiversInfo; strMsgID = pMsg->m_strID; // Insert Message m_strID = pMsg->m_strID; m_strSourceID = pMsg->m_strSourceID; m_strSubject = pMsg->m_strSubject; m_strSender = pMsg->m_strSender; m_strSenderName = pMsg->m_strSenderName; m_tmDate = pMsg->m_tmDate; m_nType = pMsg->m_nType; m_nMsgFolder = pMsg->m_nMsgFolder; m_strMsgExtType = pMsg->m_strMsgExtType; m_nNeedConfirm = pMsg->m_nNeedConfirm; m_nReadState = pMsg->m_nReadState; m_strAttitudeset = _T(""); m_nMsgFlag = pMsg->m_nMsgFlag; m_nMsgExtState = pMsg->m_nMsgExtState; m_nPropertyCount = pMsg->m_nPropertyCount; m_nCharset = pMsg->m_nCharset; m_strContentType = pMsg->m_strContentType; m_nContentSize = pMsg->m_strContent.GetLength(); m_strContent = pMsg->m_strContent; m_strContentText = pMsg->m_strContentText; if ( pMsg->m_arMsgAttachments.GetSize() > 0 ) m_nAttachCount = pMsg->m_arMsgAttachments.GetSize(); else m_nAttachCount = pMsg->m_nAttachCount; nCount = pMsg->m_arMsgOwners.GetSize(); pMsg->m_nIsGroupSend = true; m_nIsGroupSend = pMsg->m_nIsGroupSend; m_strReceivers = _T(""); m_strReceiverNames = _T(""); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); m_strReceivers += msgOwner.m_strOwner + _T(";"); m_strReceiverNames += msgOwner.m_strOwnerName + _T(";"); if(nIndex > 4) break; } m_tmOpenDate = COleDateTime( 1971, 1, 1, 0, 0, 0 ); m_strReceivers.TrimRight(_T(";")); m_strReceiverNames.TrimRight(_T(";")); pt.Start(); InsertRecord( pAConnect,true); pt.Stop(); pt.Trace( _T("DoSaveSendMulMsg Msg\r\n") ); // Insert Message Receiver msgOwner.m_strMsgID = strMsgID; nCount = pMsg->m_arMsgOwners.GetSize(); if( nCount == 0 ) { // ÔÚµÚÒ»´ÎÏûϢ֪ͨʱ,ûÓнÓÊÕ×ÅÐÅÏ¢ } else { try { if(pMsg->m_nIsGroupSend) { pAConnect->StartTransaction(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgOwner = pMsg->m_arMsgOwners.GetAt( nIndex ); msgOwner.m_strMsgID = strMsgID; msgOwner.InsertRecord( pAConnect ); //UpldateLastContactDate(msgOwner.m_strOwner,msgOwner.m_strOwnerName, CMBAMDBFun::FormatDBTIMEToStr( m_tmDate ) ); } pAConnect->Commit(); } /*else { msgOwner.m_strMsgID = pMsg->m_strID; msgOwner.m_strOwner = m_strReceivers; msgOwner.m_strOwnerName = m_strReceiverNames; msgOwner.m_tmOpenDate = m_tmOpenDate; msgOwner.m_nOwnerType = 0; msgOwner.m_strAttitude = m_strReceiverAttitude; msgOwner.InsertRecord( pAConnect ); }*/ } catch( ... ) { pAConnect->Abort(); return false; } } // Insert Message Attachment CString strPath; CString strTmpName; CMapStringToInt mapAttachment; int nValue = 1; try { pAConnect->StartTransaction(); mapAttachment.RemoveAll(); nCount = pMsg->m_arMsgAttachments.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgAttach = pMsg->m_arMsgAttachments.GetAt( nIndex ); strTmpName = _T(""); strPath = msgAttach.m_strFilePath; if(strPath.IsEmpty()) strPath = msgAttach.m_strFileName; if(strPath.Right(1) == _T("\\")) { strPath.TrimRight(_T("\\")); strTmpName = _T("\\"); } msgAttach.m_strMsgID = strMsgID; msgAttach.m_strFileName.TrimRight(_T("\\")); if(msgAttach.m_strFileName.IsEmpty()) { msgAttach.m_strFileName = CMBAMDBFun::GetFileName(strPath); } if(msgAttach.m_strFileName.IsEmpty()) msgAttach.m_strFileName = strPath; msgAttach.m_strFileName += strTmpName; msgAttach.InsertRecord( pAConnect); mapAttachment.SetAt(msgAttach.m_strFileID,nValue); } pAConnect->Commit(); } catch( ... ) { pAConnect->Abort(); return false; } CString strName, strValue; CMsgPropertyItem msgProperty; msgProperty.m_strMsgID = strMsgID; nCount = pMsg->m_arMsgPropertys.GetSize(); for ( nIndex = 0; nIndex < nCount; nIndex++ ) { msgProperty = pMsg->m_arMsgPropertys.GetAt( nIndex ); if(mapAttachment.Lookup(msgProperty.m_strName, nValue)) continue; if ( msgProperty.IsMsgSysAttrib( ) ) continue; if ( msgProperty.IsMsgSysAttribDefValue( ) ) continue; msgProperty.m_strMsgID = strMsgID; msgProperty.InsertRecord( pAConnect ); } return true; } long CMsgs::ListRecordCount( ) { CString strTempSQL; if(m_strSQL.IsEmpty()) return m_ARecordSet.GetRecordCount( ); else { strTempSQL.Format(_T(" SELECT COUNT(*) FROM ( %s)T"), m_strSQL); long nTempValue = 0; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return nTempValue; CDBRecord ARecordset; try { ARecordset.Open( m_pAConnect->GetDBConnect(), strTempSQL ); while ( S_OK == ARecordset.MoveNext() ) { ARecordset.GetValue( 1, nTempValue ); break; } } catch ( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return nTempValue; } return nTempValue; } } int CMsgs::ListTalkingAllMsg( CString strLogin, CString strUser2, BOOL bTimeAsc) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; CString strStartDate; CString strEndDate; CString strSQLTempM; int nCount; CString strSort; CString strSQLTemp2; strLogin.MakeLower(); strUser2.MakeLower(); m_nListMsgType = LISTMSG_TYPE_CHAT; //strSQL = _T("PRAGMA synchronous = OFF; "); //CDBSQLiteCommFun::RunSQL( strSQL, m_pAConnect->GetDBConnect()); //strSQL = _T("PRAGMA temp_store = MEMORY;"); //CDBSQLiteCommFun::RunSQL( strSQL, m_pAConnect->GetDBConnect()); //CMBAMDBFun::WriteDBErrToFile(_T("CMsgs::ListTalking 1")); if ( m_tmStartDate.GetYear() > 1970 || m_tmEndDate.GetYear() > 1970 ) { if ( m_tmEndDate.GetYear() == 1970 ) m_tmEndDate = COleDateTime::GetCurrentTime( ); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } //strSQLTemp2.Format( _T(" AND m.S_C22 IN('%s','%s' ,'%s')"), CONTYPE_TEXT_TEXT, CONTYPE_TEXT_XML, CONTYPE_TEXT_PLAIN ); strSQLTemp2 = _T(""); if(bTimeAsc) strSort = _T(" ASC"); else strSort = _T(" DESC"); if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strSort ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND (m.N_C11>2 AND m.N_C11<>64) AND (((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strSQLTempM, strSort ); } DWORD dwTickCount; DWORD dwTickCount2; DWORD dwInterset; DWORD dwInterset2; m_strSQL = strSQL; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { dwTickCount = ::GetTickCount(); nCount = ListRecordCount(); dwTickCount2 = ::GetTickCount(); dwInterset = dwTickCount2 - dwTickCount; //CDBSQLiteCommFun::RunSQL( _T("BEGIN"), m_pAConnect->GetDBConnect()); //CMBAMDBFun::WriteDBErrToFile(_T("CMsgs::ListTalking 2")); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); dwTickCount2 = ::GetTickCount(); dwInterset2 = dwTickCount2 - dwTickCount; //m_ARecordSet.MoveFirst(); //CMBAMDBFun::WriteDBErrToFile(_T("CMsgs::ListTalking 3")); //nCount = m_ARecordSet.GetRecordCount( ); //CMBAMDBFun::WriteDBErrToFile(_T("CMsgs::ListTalking 4")); //CDBSQLiteCommFun::RunSQL( _T("COMMIT"), m_pAConnect->GetDBConnect()); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } //strSQL = _T("PRAGMA synchronous = FULL; "); //strSQL = _T("PRAGMA temp_store = DEFAULT; "); //CDBSQLiteCommFun::RunSQL( strSQL, m_pAConnect->GetDBConnect()); CString strLog; //strLog.Format(_T("CMsgs::ListTalking ²éѯʱ¼ä(%d-%d)"),dwInterset,dwInterset2); //CMBAMDBFun::WriteDBErrToFile(strLog); return nCount; } int CMsgs::ListSearchingTalkingAllMsg( CString strLogin,CString strUser2,CString strKey, BOOL bTimeAsc ) { CString strSQL; CString strStartDate; CString strEndDate; CString strSQLTempM; int nCount; CString strSort; CString strTemp; // CString strSQLTempAttach; strLogin.MakeLower(); strUser2.MakeLower(); if ( m_tmStartDate.GetYear() > 1970 || m_tmEndDate.GetYear() > 1970 ) { if ( m_tmEndDate.GetYear() == 1970 ) m_tmEndDate = COleDateTime::GetCurrentTime( ); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } if( !strKey.IsEmpty()) strTemp.Format( _T("AND m.S_C25 LIKE '%%%s%%' "), strKey ); if(bTimeAsc) strSort = _T(" ASC"); else strSort = _T(" DESC"); if(strKey.IsEmpty()) { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strSort ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strSQLTempM, strSort ); } } else { if(strLogin == strUser2) { strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6,ST.S_C25 \ FROM (SELECT m.G_C1, m.T_C6,m.S_C25 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s\ UNION \ SELECT m.G_C1, m.T_C6,m.S_C25 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s )ST \ WHERE ST.S_C25 LIKE '%%%s%%' \ ORDER BY ST.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strKey,strSort ); } else { strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6,ST.S_C25 \ FROM (SELECT m.G_C1, m.T_C6,m.S_C25 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s\ UNION \ SELECT m.G_C1, m.T_C6,m.S_C25 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s\ UNION \ SELECT m.G_C1,m.T_C6,m.S_C25 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s'AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s )ST \ WHERE ST.S_C25 LIKE '%%%s%%' \ ORDER BY ST.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strSQLTempM,strKey,strSort ); } } m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_CHAT; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); //m_ARecordSet.MoveFirst(); //nCount = m_ARecordSet.GetRecordCount( ); //nCount = 0; } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListReceiveBoxMsg( CString strUser,CString strUserName, CString strContentKey, int nAttach ) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; CString strStartDate; CString strEndDate; CString strSQLWhere= _T(""); int nCount; CString strSQLTemp = _T(""); CDBRecord ARecordSet; strUser.MakeLower(); strSQLWhere.Format(_T("m.N_C8=%d "), MANAGER_FOLDER_BOX_IN ); if( !strContentKey.IsEmpty()) { strSQLTemp.Format( _T(" AND (m.S_C3 LIKE '%%%s%%' OR m.S_C25 LIKE '%%%s%%') "), strContentKey,strContentKey ); strSQLWhere += strSQLTemp; } if ( m_tmStartDate.GetYear() > 1970 ) { strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); if ( m_tmEndDate > m_tmStartDate) { strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTemp.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } else { strSQLTemp.Format( _T(" AND m.T_C6 >= '%s'"), strStartDate ); } strSQLWhere += strSQLTemp; } else { if ( m_tmEndDate.GetYear() > 1970 ) { strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTemp.Format( _T(" AND m.T_C6 <= '%s'"), strEndDate ); strSQLWhere += strSQLTemp; } } if(nAttach > 0) { strSQLTemp.Format( _T(" AND m.N_C12>0") ); strSQLWhere += strSQLTemp; } else if(nAttach == 0) { strSQLTemp.Format( _T(" AND m.N_C12=0") ); strSQLWhere += strSQLTemp; } strSQLTemp.Format( _T(" AND m.S_C10='' ") ); strSQLWhere += strSQLTemp; if( !strUser.IsEmpty()) { if(strUserName.IsEmpty() ) { strSQLTemp.Format( _T("AND (m.S_C4 LIKE '%s%%' OR m.S_C5 LIKE '%s%%') "), strUser,strUser ); } else strSQLTemp.Format( _T("AND m.S_C4='%s' "), strUser ); strSQLWhere += strSQLTemp; } strSQL.Format( _T("SELECT m.G_C1, m.T_C6 FROM TN_STK_MSG m Where %s ORDER BY m.T_C6 DESC "),strSQLWhere ); m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_MAGADMIN; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListSendBoxMsg( CString strUser,CString strUserName, CString strContentKey, int nAttach ) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; CString strStartDate; CString strEndDate; CString strSQLWhere= _T(""); int nCount; CString strSQLTemp = _T(""); CDBRecord ARecordSet; CString strField = _T("m.G_C1, m.T_C6"); strUser.MakeLower(); strSQLWhere.Format(_T("m.N_C8=%d "), MANAGER_FOLDER_BOX_OUT ); if( !strContentKey.IsEmpty()) { strSQLTemp.Format( _T(" AND (m.S_C3 LIKE '%%%s%%' OR m.S_C25 LIKE '%%%s%%') "), strContentKey,strContentKey ); strSQLWhere += strSQLTemp; } if ( m_tmStartDate.GetYear() > 1970 ) { strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); if ( m_tmEndDate > m_tmStartDate) { strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTemp.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } else { strSQLTemp.Format( _T(" AND m.T_C6 >= '%s'"), strStartDate ); } strSQLWhere += strSQLTemp; } else { if ( m_tmEndDate.GetYear() > 1970 ) { strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTemp.Format( _T(" AND m.T_C6 <= '%s'"), strEndDate ); strSQLWhere += strSQLTemp; } } if(nAttach > 0) { strSQLTemp.Format( _T(" AND m.N_C12>0") ); strSQLWhere += strSQLTemp; } else if(nAttach == 0) { strSQLTemp.Format( _T(" AND m.N_C12=0") ); strSQLWhere += strSQLTemp; } strSQLTemp.Format( _T(" AND m.S_C10='' ") ); strSQLWhere += strSQLTemp; if( strUser.IsEmpty()) { strSQL.Format( _T("SELECT %s FROM TN_STK_MSG m Where %s ORDER BY m.T_C6 DESC "),strField,strSQLWhere ); } else { if(strUserName.IsEmpty() ) { strSQL.Format( _T("SELECT A.G_C1, A.T_C6 ") _T("FROM TN_STK_MSG A ") _T("INNER JOIN (") _T("SELECT AA.G_C1 ") _T("FROM ( ") _T("SELECT m.G_C1, m.C_C17,m.S_C18,m.S_C19 ") _T("FROM TN_STK_MSG m Where %s ") _T(") AA ") _T("LEFT JOIN TN_STK_MSGOWNER BB ") _T("ON AA.G_C1 = BB.G_C1 ") _T("WHERE (AA.C_C17='0' AND (AA.S_C18 LIKE '%s%%' OR AA.S_C19 LIKE '%s%%') ) ") _T("OR ( AA.C_C17='1' AND (BB.S_C2 LIKE '%s%%' OR BB.S_C3 LIKE '%s%%') ) ") _T("GROUP BY AA.G_C1 ") _T(") B ") _T("ON A.G_C1 = B.G_C1 ") _T("ORDER BY A.T_C6 DESC "), strSQLWhere, strUser,strUser, strUser,strUser ); } else { strSQL.Format( _T("SELECT A.G_C1, A.T_C6 ") _T("FROM TN_STK_MSG A ") _T("INNER JOIN (") _T("SELECT AA.G_C1 ") _T("FROM ( ") _T("SELECT m.G_C1, m.C_C17,m.S_C18 ") _T("FROM TN_STK_MSG m Where %s ") _T(") AA ") _T("LEFT JOIN TN_STK_MSGOWNER BB ") _T("ON AA.G_C1 = BB.G_C1 ") _T("WHERE (AA.C_C17='0' AND AA.S_C18='%s' ) ") _T("OR ( AA.C_C17='1' AND BB.S_C2='%s' ) ") _T("GROUP BY AA.G_C1 ") _T(") B ") _T("ON A.G_C1 = B.G_C1 ") _T("ORDER BY A.T_C6 DESC "), strSQLWhere, strUser, strUser ); } } m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_MAGADMIN; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListFavBoxMsg( CString strUser,CString strUserName, CString strContentKey, int nFavFolder ) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; CString strStartDate; CString strEndDate; CString strSQLWhere= _T(""); int nCount; CString strSQLTemp = _T(""); CDBRecord ARecordSet; strUser.MakeLower(); strSQLWhere.Format(_T("m.N_C8=%d "), nFavFolder ); if( !strContentKey.IsEmpty()) { strSQLTemp.Format( _T(" AND (m.S_C3 LIKE '%%%s%%' OR m.S_C25 LIKE '%%%s%%') "), strContentKey ,strContentKey ); strSQLWhere += strSQLTemp; } if ( m_tmStartDate.GetYear() > 1970 ) { strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); if ( m_tmEndDate > m_tmStartDate) { strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTemp.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } else { strSQLTemp.Format( _T(" AND m.T_C6 >= '%s'"), strStartDate ); } strSQLWhere += strSQLTemp; } else { if ( m_tmEndDate.GetYear() > 1970 ) { strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTemp.Format( _T(" AND m.T_C6 <= '%s'"), strEndDate ); strSQLWhere += strSQLTemp; } } strSQLTemp.Format( _T(" AND m.S_C10='' ") ); strSQLWhere += strSQLTemp; if( !strUser.IsEmpty()) { if(strUserName.IsEmpty() ) { strSQLTemp.Format( _T("AND (m.S_C4 LIKE '%s%%' OR m.S_C5 LIKE '%s%%') "), strUser,strUser ); } else strSQLTemp.Format( _T("AND m.S_C4='%s' "), strUser ); strSQLWhere += strSQLTemp; } strSQL.Format( _T("SELECT m.G_C1, m.T_C6 FROM TN_STK_MSG m Where %s ORDER BY m.T_C6 DESC "),strSQLWhere ); m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_MAGADMIN; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListSyncBoxMsg( CString strSynchDate ) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; int nCount; CDBRecord ARecordSet; strSQL.Format( _T("SELECT m.G_C1, m.T_C6 FROM TN_STK_MSG m Where m.T_C20='%s' AND m.S_C10='' ORDER BY m.T_C6 DESC "),strSynchDate ); m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_MAGADMIN; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListSysBoxMsg( ) { // ʹÓÃÕâ¸öº¯Êým_nReadedÎÞЧ CString strSQL; CString strStartDate; CString strEndDate; CString strSQLWhere= _T(""); int nCount; CString strSQLTemp = _T(""); CDBRecord ARecordSet; strSQLWhere.Format( _T(" (m.N_C7=%d OR m.N_C7=%d )"),AM_MSGTYPE_BROADCAST ,AM_MSGTYPE_GUNGHO); if ( m_tmStartDate.GetYear() > 1970 ) { strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); if ( m_tmEndDate > m_tmStartDate) { strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTemp.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } else { strSQLTemp.Format( _T(" AND m.T_C6 >= '%s'"), strStartDate ); } strSQLWhere += strSQLTemp; } else { if ( m_tmEndDate.GetYear() > 1970 ) { strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTemp.Format( _T(" AND m.T_C6 <= '%s'"), strEndDate ); strSQLWhere += strSQLTemp; } } strSQL.Format( _T("SELECT m.G_C1, m.T_C6 FROM TN_STK_MSG m Where %s ORDER BY m.T_C6 DESC "),strSQLWhere ); m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_MAGADMIN; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; } int CMsgs::ListSearchingTalkingMsg( CString strLogin,CString strUser2,CString strKey, BOOL bTimeAsc ) { CString strSQL; CString strStartDate; CString strEndDate; CString strSQLTempM; int nCount; CString strSort; // CString strSQLTempAttach; strLogin.MakeLower(); strUser2.MakeLower(); if ( m_tmStartDate.GetYear() > 1970 || m_tmEndDate.GetYear() > 1970 ) { if ( m_tmEndDate.GetYear() == 1970 ) m_tmEndDate = COleDateTime::GetCurrentTime( ); strStartDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmStartDate ); strEndDate = CMBAMDBFun::FormatDBTIMEToStr( m_tmEndDate ); strSQLTempM.Format( _T(" AND m.T_C6 >= '%s' AND m.T_C6 <= '%s'"), strStartDate, strEndDate ); } if(bTimeAsc) strSort = _T(" ASC"); else strSort = _T(" DESC"); if(strKey.IsEmpty()) { if(strLogin == strUser2) { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strSort ); } else { strSQL.Format( _T("SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1, m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ UNION \ SELECT m.G_C1,m.T_C6 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s \ ORDER BY m.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strSQLTempM, strSort ); } } else { if(strLogin == strUser2) { strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6,ST.S_C25 \ FROM (SELECT m.G_C1, m.T_C6,m.S_C25 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s\ UNION \ SELECT m.G_C1, m.T_C6,m.S_C25 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s )ST \ WHERE ST.S_C25 LIKE '%%%s%%' \ ORDER BY ST.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strKey,strSort ); } else { strSQL.Format( _T("SELECT ST.G_C1,ST.T_C6,ST.S_C25 \ FROM (SELECT m.G_C1, m.T_C6,m.S_C25 \ FROM TN_STK_MSG m INNER JOIN TN_STK_MSGOWNER o ON o.G_C1 = m.G_C1 WHERE \ m.S_C4 = '%s' AND o.S_C2 = '%s' AND m.C_C17='1' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s\ UNION \ SELECT m.G_C1, m.T_C6,m.S_C25 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s' AND m.S_C18 = '%s' AND m.C_C17='0' AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s\ UNION \ SELECT m.G_C1,m.T_C6,m.S_C25 \ FROM TN_STK_MSG m WHERE \ m.S_C4 = '%s'AND (m.N_C11>2 AND m.N_C11<>64) AND ((m.S_C10='' AND m.N_C7=0) OR m.N_C7=%d OR m.N_C7=%d) %s )ST \ WHERE ST.S_C25 LIKE '%%%s%%' \ ORDER BY ST.T_C6 %s"), strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM, strLogin, strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST, strSQLTempM,strUser2,AM_MSGTYPE_GUNGHO,AM_MSGTYPE_BROADCAST,strSQLTempM,strKey,strSort ); } } m_strSQL = strSQL; m_nListMsgType = LISTMSG_TYPE_MAGADMIN; if( !m_pAConnect || !m_pAConnect->IsOpenDB()) return 0; try { nCount = ListRecordCount(); m_ARecordSet.Close( ); m_ARecordSet.Open( m_pAConnect->GetDBConnect(), strSQL ); } catch( CDBSQliteException ex ) { CString strError; strError = (LPCTSTR)ex.GetErrInfo( ); return 0; } return nCount; }