使用soui开发的mbc,只支持windows版本
w1146869587
2022-01-24 4905e2e7537d507f218e8e9595485e09d9f3a2b4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#pragma once
#include "CursorBase.h"
#include "dbCursor.h"
#include "MBAMDBConnect.h"
#include "MsgFolder.h"
#include "MsgOwner.h"
#include "MsgAttachment.h"
#include "MsgProperty.h"
 
 
// CMsg command target
class AFX_EXT_CLASS CMsgItem : public CCursorBase
{
    DECLARE_DYNAMIC(CMsgItem)
public:
    CMsgItem();
    virtual ~CMsgItem();
    void operator =( const CMsgItem& item );
 
// Attributes
public:
    CString            m_strID;
    CString            m_strSourceID;
    CString            m_strSubject;
    CString            m_strSender;
    CString            m_strSenderName;        // Sender Name
    COleDateTime    m_tmDate;                // Send Date
    long            m_nType;                // Message Type, È磺ÆÕͨÏûÏ¢£¬ÌáÐÑ£¬ÈÎÎñ
    long            m_nMsgFolder;            // ÏûÏ¢ËùÔÚλÖÃ
    CString            m_strFolderName;
    long            m_nNeedConfirm;
    CString            m_strMsgExtType;        // ÏûÏ¢À©Õ¹ÀàÐÍ£¬È磺AM£¬ADOC
    long            m_nReadState;            // ¶ÁÏûÏ¢µÄ״̬£¬Ä¬ÈÏΪûÓÐ
    long            m_nAttachCount;            // 
    CString            m_strAttitudeset;        // ½ÓÊÕÕßÉ趨¶ÔÏûÏ¢µÄ̬¶È
    long            m_nMsgFlag;
    long            m_nPropertyCount;        // ÏûÏ¢À©Õ¹ÊôÐԵĸöÊý
    long            m_nMsgExtState;            // ÏûÏ¢µÄ״̬£¬ÈçÑÓ³Ù´¦Àí£¬×Ô¶¯»Ø¸´µÈ£¬ÓÃÓëÏûÏ¢¹ÜÀíÆ÷À©Õ¹
    long            m_nCharset;                // ×Ö·û¼¯
    long            m_nIsGroupSend;
    CString            m_strAppType;            //Ó¦ÓóÌÐòÏûÏ¢£¬Èç STK
    CString            m_strContentType;        // È磺Text
    long            m_nContentSize;            //    ÏûÏ¢ÄÚÈÝ´óС
    CString            m_strContent;            //ÏûÏ¢ÄÚÈÝ
    CString            m_strContentText;        //ÏûÏ¢ÄÚÈÝÎı¾ÄÚÈÝ
    bool            m_bDownLoaded;
    
    CString            m_strReceivers;            //½ÓÊÜÕß
    CString            m_strReceiverNames;        //½ÓÊÕÕßÃû³Æ
    COleDateTime    m_tmOpenDate;        // Date of Open Message
    CString            m_strReceiverAttitude;        //
    CStringArray    m_asResertData;        // ÖØÖð´Å¥µÄȡֵ
    CStringArray    m_asResertName;        // ÖØÖð´Å¥µÄÃû³Æ    LeftSide RightSide 
    
    CArray<CMsgOwnerItem, CMsgOwnerItem &>                m_arMsgOwners;            // Message Receiver
    CArray<CMsgAttachmentItem, CMsgAttachmentItem &>    m_arMsgAttachments;        // Message Attachments
    CArray<CMsgPropertyItem, CMsgPropertyItem &>        m_arMsgPropertys;        // Message Propertys
 
// Operations
public:
    void            Clear();
    virtual    BOOL    GetItemValue( CString strName, CString &strValue )
                    { return CCursorBase::GetItemValue( strName, strValue ); }
    virtual    BOOL    GetItemValue( CString strName, COleVariant &varData );
    BOOL    InsertRecord( CDBConnect *pAConnect,bool bInsertUnRead);
    BOOL    UpdateRecord(CDBConnect *pAConnect );
    CString GetUpdateRecordSQL( );
    BOOL    InsertUnreadMsg(CDBConnect *pAConnect);
    BOOL    UpdateUserAttitude( CDBConnect *pAConnect, CString strAttitude);
    BOOL    CheckOwnerAllOpen( CDBConnect *pAConnect);
public:
    int            FindMsgOwnerr( CString strLoginName,int nOwnerType = 0  );
    void        LoadNtyNewMsgData( CComPtr<ISTKMessage> IMessagePtr, long nFlag ) ;
    BOOL        LoadData(CComPtr<ISTKMessage> IMessagePtr);
    BOOL        CapyDataTo(CComPtr<ISTKMessage> IMessagePtr);
    CString                GetContentType( int AMContentType );
    int    GetContentType( CString strContentType );
    int            GetMsgEnType( );
 
    BOOL        IHaveOpened();
    BOOL        IsAttitudeOk( CString strRightButton );
    BOOL        IsHaveCCUser( );
    BOOL        IsHaveMulRecLim( );
 
    void        GetProp( CString strName, CString &strData );
    void        SetProp( CString strName, CString strData );
 
    CString        GetUserInfo();
    CString        GetUserInfoPro();
    CString        GetUsersPro( );
    CString        GetReceivers();                // µÃµ½½ÓÊÕÓû§µÇ¼ÃûÁÐ±í´®
    CString        GetReceiverTypes();                // µÃµ½½ÓÊÕÓû§µÇ¼ÃûÁÐ±í´®
    CString        GetReceiversName();            // µÃµ½½ÓÊÕÓû§ÃûÁÐ±í´®
    CString        GetOnlyReceiversName();            // Ö»µÃµ½½ÓÊÜÕßÓû§ÃûÁÐ±í´®
    CString        FormatReceiversName();        // ¸ñʽ»¯½ÓÊÕÓû§Ãû£¬È磺Óû§1;...
 
    CString        GetReplyUsers( CString strLogin );
    CString        GetReplyUsers2( CString strLogin );
    CString        GetReplyUsersPro( CString strLogin );
    CString        GetReplyCCUsers( CString strLogin );
    
    CString        GetReceiversPro( );
    CString        GetCCReceivers( );
    CString        GetCCReceiverTypes( );
    void        GetCCReceivers( CStringArray &asCCReceivers );
    void        GetCCReceiverTypes( CUIntArray &anCCReceiverTypes );
    CString        GetReceiversNamePro( );
    CString        GetCCReceiversName( );
    CString        GetReceiverName( CString strReceiver );
    bool        IsExistUnread(  );
    int            AddData( CString strName, CString strValue );
    BOOL        GetData( CString strName, CString &strValue );    
    int            FindData( CString strName );
 
    int            FindAttachment( CString strFileID );
    
};
 
class AFX_EXT_CLASS CMsgs : public CdbCursor, public CMsgItem
{
public:
    CMsgs(CMBAMDBConnect *pAConnect);
    virtual ~CMsgs();
    void operator =( const CMsgs& item );
// Attributes
public:
    // ¹ýÂËÌõ¼þ
    COleDateTime        m_tmStartDate;        // ¹ýÂËÌõ¼þ¿ªÊ¼ÈÕÆÚ
    COleDateTime        m_tmEndDate;        // ¹ýÂËÌõ¼þ½áÊøÈÕÆÚ
    int                    m_nReaded;            // ¹ýÂËÌõ¼þÊÇ·ñÒѶÁ -1 ²»ÉèÌõ¼þ  >0 ÒѶÁµÄ  =0 Î´¶ÁµÄ
    int                    m_nListMsgType;        // ÏÔʾÏûÏ¢ÐÅÏ¢µÄÀàÐÍ
// Operations
public:
    void            InitFilter( );
    int                ListSpMsgID( LPCTSTR lpszMsgID );
    int                ListTalking3( CString strLogin,CString strUser2,long nLimitCount, BOOL bTimeAsc = FALSE  );
    int                ListTalking2( CString strLogin,CString strUser2,long nLimitCount, BOOL bTimeAsc = FALSE  );
    int                ListTalking( CString strLogin,CString strUser2,bool bOnlyAttachmentMsg = false, bool bGroupSend = false, BOOL bTimeAsc = FALSE  );
    int                ListUnreadMsg( LPCTSTR lpszOwner );
    long            ListRecordCount( );
    int                ListReceiveBoxMsg( CString strUser,CString strUserName, CString strContentKey, int nAttach  );
    int                ListSendBoxMsg( CString strUser,CString strUserName, CString strContentKey, int nAttach  );
    int                ListFavBoxMsg( CString strUser,CString strUserName, CString strContentKey, int nFavFolder  );
    int                ListSyncBoxMsg( CString strSynchDate );
    int                ListSysBoxMsg( );
    int                ListSearchingTalkingMsg( CString strLogin,CString strUser2,CString strKey, BOOL bTimeAsc = FALSE  );
 
    bool            RemoveMsg( LPCTSTR lpszMsgID );
    bool            MoveMsg( LPCTSTR lpszMsgID, long nNewFolderID );
 
    int                GetMsgOwnersLength();
    bool            GetMsgOwner( int nIndex, CMsgOwners &msgOwner );
    int                GetAttachmentCount();
    bool            GetAttachment( int nIndex, CMsgAttachments &msgAttachment );
 
 
    bool            RemoveOutboxTimeMsg(  LPCTSTR lpszOwner,  COleDateTime tmStartDate, COleDateTime tmEndDate );
    bool            RemoveReadedTimeMsg(  LPCTSTR lpszOwner, COleDateTime tmStartDate, COleDateTime tmEndDate );
    int                ListSearchingTalking(CString strLogin, CString strUser2,CString strKey,bool bOnlyAttachmentMsg,bool bGroupSend = false,BOOL bTimeAsc = FALSE  );
    int                ListTalkingAllMsg( CString strLogin, CString strUser2, BOOL bTimeAsc = FALSE  );
    int                ListSearchingTalkingAllMsg( CString strLogin, CString strUser2,CString strKey,BOOL bTimeAsc = FALSE  );
public:
    virtual bool    GetData( );
    void    InitMsgData( );
 
    bool    GetMsgOwnerDataSimple( );
    bool    GetMsgDataSimple( );
 
    bool    GetMsgOwnerData( );
    bool    GetMsgAttachmentData( );
    bool    GetMsgPropertyData( );
    bool    GetMsgData( );
    bool    GetMsgChatData( );
    bool    GetMsgAdminData( );
    BOOL        DoSaveSyncMsg( CMsgItem *pMsg,bool bIsSendMsg, bool bNeedConfirm);
    BOOL        DoSaveMsg( CMsgItem *pMsg,bool bIsSendMsg, bool bNeedConfirm);
    BOOL        DoSaveSendMulMsg(CMsgItem *pMsg );
public:
    BOOL        UpdateMsgOwnerAttitude( CMsgItem *pMsg );
    BOOL        UpldateLastContactDate( CString strID, CString strName, CString strLastDate, CString strSubject);
    BOOL        UpdateMsg( CMsgItem *pMsg,bool bIsSendMsg );
 
};