// MBOrgListMgr.cpp : implementation file
|
//
|
|
#include "stdafx.h"
|
#include "mborg.h"
|
#include "MBOrgListMgr.h"
|
#include "MBOrgFunc.h"
|
#include "MBCmdPropName.h"
|
|
/////////////////////////////////////////////////////////////////////////////
|
// CMBOrgListMgr
|
|
CMBOrgListMgr::CMBOrgListMgr()
|
{
|
m_mapView.RemoveAll();
|
m_mapGroup.RemoveAll();
|
m_mapRole.RemoveAll();
|
m_mapUser.RemoveAll();
|
m_mapUserAliasName.RemoveAll();
|
m_mapUserPhoto.RemoveAll();
|
m_mapDefaultUserPhoto.RemoveAll();
|
InitDeaultUserPhoto( );
|
}
|
|
CMBOrgListMgr::~CMBOrgListMgr()
|
{
|
DetachAllMap();
|
}
|
|
/////////////////////////////////////////////////////////////////////////////
|
// CMBOrgListMgr message handlers
|
|
void CMBOrgListMgr::DetachAllMap()
|
{
|
DetachMap( _T("m_mapView") );
|
DetachMap( _T("m_mapGroup") );
|
DetachMap( _T("m_mapRole") );
|
DetachMap( _T("m_mapUser") );
|
DetachMap( _T("m_mapUserPhoto") );
|
DetachMap( _T("m_mapDefaultUserPhoto") );
|
m_mapUserAliasName.RemoveAll();
|
m_mapUserReamrksName.RemoveAll();
|
|
|
}
|
|
void CMBOrgListMgr::DetachMap( CString strMapName )
|
{
|
POSITION pos;
|
CString strKey;
|
if ( strMapName == _T( "m_mapView" ) )
|
{
|
CMBOrgView *pView = NULL;
|
|
for ( pos = m_mapView.GetStartPosition(); pos; )
|
{
|
m_mapView.GetNextAssoc( pos,strKey,pView );
|
if ( pView )
|
delete pView;
|
pView = NULL;
|
}
|
m_mapView.RemoveAll();
|
|
return;
|
}
|
|
if ( strMapName == _T( "m_mapGroup" ) )
|
{
|
CMBOrgGroup *pGroup = NULL;
|
|
for ( pos = m_mapGroup.GetStartPosition(); pos; )
|
{
|
m_mapGroup.GetNextAssoc( pos,strKey,pGroup );
|
if ( pGroup )
|
delete pGroup;
|
pGroup = NULL;
|
}
|
m_mapGroup.RemoveAll();
|
|
return;
|
}
|
|
if ( strMapName == _T( "m_mapRole" ) )
|
{
|
CMBOrgRole *pRole = NULL;
|
|
for ( pos = m_mapRole.GetStartPosition(); pos; )
|
{
|
m_mapRole.GetNextAssoc( pos,strKey,pRole );
|
if ( pRole )
|
delete pRole;
|
pRole = NULL;
|
}
|
m_mapRole.RemoveAll();
|
|
return;
|
}
|
|
if ( strMapName == _T( "m_mapUser" ) )
|
{
|
CMBOrgUser *pUser = NULL;
|
|
for ( pos = m_mapUser.GetStartPosition(); pos; )
|
{
|
m_mapUser.GetNextAssoc( pos,strKey,pUser );
|
if ( pUser )
|
delete pUser;
|
pUser = NULL;
|
}
|
m_mapUser.RemoveAll();
|
m_mapUserAliasName.RemoveAll();
|
m_mapUserReamrksName.RemoveAll();
|
return;
|
}
|
if ( strMapName == _T( "m_mapUserPhoto" ) )
|
{
|
IBitmap *pBitmap = NULL;
|
|
for ( pos = m_mapUserPhoto.GetStartPosition(); pos; )
|
{
|
m_mapUserPhoto.GetNextAssoc( pos,strKey,pBitmap );
|
if ( pBitmap )
|
pBitmap->Release();
|
}
|
m_mapUserPhoto.RemoveAll();
|
return;
|
}
|
if ( strMapName == _T( "m_mapDefaultUserPhoto" ) )
|
{
|
IBitmap *pBitmap = NULL;
|
|
for ( pos = m_mapDefaultUserPhoto.GetStartPosition(); pos; )
|
{
|
m_mapDefaultUserPhoto.GetNextAssoc( pos,strKey,pBitmap );
|
if ( pBitmap )
|
pBitmap->Release();
|
}
|
m_mapDefaultUserPhoto.RemoveAll();
|
return;
|
}
|
}
|
|
void CMBOrgListMgr::InitDeaultUserPhoto( )
|
{
|
IBitmap * pBmp = LOADIMAGE(_T("PNG"),_T("png_crowd_m"));
|
m_mapDefaultUserPhoto.SetAt(_T("crowd"),pBmp);
|
pBmp = LOADIMAGE(_T("PNG"),_T("png_user_m"));
|
m_mapDefaultUserPhoto.SetAt(_T("0"),pBmp);
|
pBmp = LOADIMAGE(_T("PNG"),_T("png_user_manm"));
|
m_mapDefaultUserPhoto.SetAt(_T("1"),pBmp);
|
pBmp = LOADIMAGE(_T("PNG"),_T("png_user_womanm"));
|
m_mapDefaultUserPhoto.SetAt(_T("2"),pBmp);
|
}
|
BOOL CMBOrgListMgr::LookupView( CString strViewID,CMBOrgView*& pView )
|
{
|
pView = NULL;
|
if ( strViewID.IsEmpty() )
|
return FALSE;
|
if ( m_mapView.Lookup(strViewID,pView ))
|
{
|
return TRUE;
|
}
|
return FALSE;
|
}
|
|
BOOL CMBOrgListMgr::LookupGroup( CString strGroupID,CMBOrgGroup*& pGroup )
|
{
|
pGroup = NULL;
|
if ( strGroupID.IsEmpty() )
|
return FALSE;
|
|
if ( m_mapGroup.Lookup(strGroupID,pGroup ))
|
{
|
return TRUE;
|
}
|
return FALSE;
|
}
|
|
|
BOOL CMBOrgListMgr::LookupRole( CString strRoleID ,CMBOrgRole*& pRole )
|
{
|
pRole = NULL;
|
if ( strRoleID.IsEmpty() )
|
return FALSE;
|
if ( m_mapRole.Lookup(strRoleID,pRole ))
|
{
|
return TRUE;
|
}
|
return FALSE;
|
|
}
|
|
|
BOOL CMBOrgListMgr::LookupUser( CString strLoginName,CMBOrgUser*& pUser )
|
{
|
pUser = NULL;
|
if ( strLoginName.IsEmpty() )
|
return FALSE;
|
|
if ( m_mapUser.Lookup(strLoginName,pUser ))
|
{
|
return TRUE;
|
}
|
return FALSE;
|
}
|
BOOL CMBOrgListMgr::LookupUserFromAliasName( CString strAliasName,CString &strLoginName )
|
{
|
strLoginName = _T("");
|
if ( strAliasName.IsEmpty() )
|
return NULL;
|
|
if ( m_mapUserAliasName.Lookup(strAliasName,strLoginName ))
|
{
|
return TRUE;
|
}
|
return FALSE;
|
}
|
BOOL CMBOrgListMgr::LookupUserPhoto( CString strUserLogin,IBitmap *&pBitmap )
|
{
|
pBitmap = NULL;
|
if ( strUserLogin.IsEmpty() )
|
return FALSE;
|
strUserLogin.MakeLower();
|
if ( m_mapUserPhoto.Lookup(strUserLogin,pBitmap ))
|
{
|
return TRUE;
|
}
|
return FALSE;
|
}
|
BOOL CMBOrgListMgr::LookupDeaultUserPhoto(IBitmap *&pBitmap, CString strUserSex )
|
{
|
pBitmap = NULL;
|
if(strUserSex.IsEmpty())
|
strUserSex = _T("0");
|
strUserSex.MakeLower();
|
if ( m_mapDefaultUserPhoto.Lookup(strUserSex,pBitmap ))
|
{
|
return TRUE;
|
}
|
return FALSE;
|
}
|
BOOL CMBOrgListMgr::GetUserPhotoBitmap( IBitmap *&pBitmap ,CString strUserLogin,CString strUserSex)
|
{
|
pBitmap = NULL;
|
if ( strUserLogin.IsEmpty() )
|
return FALSE;
|
strUserLogin.MakeLower();
|
if ( m_mapUserPhoto.Lookup(strUserLogin,pBitmap ))
|
{
|
return TRUE;
|
}
|
if ( LookupDeaultUserPhoto(pBitmap,strUserSex ))
|
{
|
return TRUE;
|
}
|
return FALSE;
|
}
|
void CMBOrgListMgr::AddUserPhoto( CString strLoginName, IBitmap*pBmp)
|
{
|
if ( strLoginName.IsEmpty() || !pBmp)
|
return ;
|
|
strLoginName.MakeLower();
|
IBitmap *pBitmap = NULL;
|
if ( m_mapUserPhoto.Lookup(strLoginName,pBitmap ))
|
{
|
if(pBitmap)
|
pBitmap->Release();
|
m_mapUserPhoto.RemoveKey(strLoginName);
|
}
|
m_mapUserPhoto.SetAt(strLoginName,pBmp );
|
}
|
void CMBOrgListMgr::AddDeaultUserPhoto( IBitmap*pBmp,CString strUserSex )
|
{
|
if ( strUserSex.IsEmpty() || !pBmp)
|
return ;
|
strUserSex.MakeLower();
|
IBitmap *pBitmap = NULL;
|
if ( m_mapDefaultUserPhoto.Lookup(strUserSex,pBitmap ))
|
{
|
if(pBitmap)
|
pBitmap->Release();
|
m_mapDefaultUserPhoto.RemoveKey(strUserSex);
|
}
|
m_mapDefaultUserPhoto.SetAt(strUserSex,pBmp );
|
}
|
CString CMBOrgListMgr::GetUserName( CString strLoginName )
|
{
|
CMBOrgUser *pUser = NULL;
|
if ( !LookupUser( strLoginName,pUser ) )
|
return _T( "" );
|
if ( !pUser )
|
return _T( "" );
|
return pUser->m_strUserName;
|
}
|
|
CString CMBOrgListMgr::GetMemberName( int nMemberType, CString strMemberID)
|
{
|
CString strName = _T("");
|
if ( strMemberID.IsEmpty() )
|
return strName;
|
|
switch ( nMemberType )
|
{
|
case AM_VIEWITEMTYPE_USER: // User
|
{
|
CMBOrgUser *pUser = NULL;
|
|
if ( LookupUser( strMemberID, pUser) )
|
{
|
if( pUser)
|
strName= pUser->m_strUserName;
|
}
|
|
}
|
break;
|
case AM_VIEWITEMTYPE_VIEW: // Custom Group
|
{
|
CMBOrgView *pView = NULL;
|
if ( LookupView( strMemberID,pView ) )
|
{
|
if( pView)
|
strName= pView->m_strName;
|
}
|
}
|
break;
|
case AM_VIEWITEMTYPE_GROUP: // System Group
|
case AM_VIEWITEMTYPE_CUSTGROUP: // Custom Group
|
{
|
CMBOrgGroup *pGroup = NULL;
|
|
if ( LookupGroup( strMemberID,pGroup ) )
|
{
|
if( pGroup)
|
strName= pGroup->m_strName;
|
}
|
}
|
break;
|
|
case AM_VIEWITEMTYPE_ROLE: // Role
|
{
|
CMBOrgRole *pRole = NULL;
|
|
if ( LookupRole( strMemberID,pRole ) )
|
{
|
if( pRole)
|
strName= pRole->m_strName;
|
}
|
}
|
break;
|
|
default:
|
break;
|
}
|
return strName;
|
}
|
|
void CMBOrgListMgr::AddView( CString strViewID, long nLevel, CString strViewName, CString strGener )
|
{
|
CMBOrgView *pView = NULL;
|
|
if ( strViewID.IsEmpty() || strViewName.IsEmpty() )
|
return ;
|
|
if ( !LookupView( strViewID,pView ) )
|
{
|
pView = new CMBOrgView;
|
|
pView->m_strID = strViewID;
|
pView->m_nLevel = nLevel;
|
pView->m_strGener = strGener;
|
m_mapView.SetAt(strViewID, pView );
|
}
|
pView->m_strName = strViewName;
|
}
|
|
void CMBOrgListMgr::AddMember( int nMemberType, CString strMemberID, CString strName, int nLevel /*= 0*/ )
|
{
|
if ( strMemberID.IsEmpty() )
|
return ;
|
switch ( nMemberType )
|
{
|
case AM_VIEWITEMTYPE_USER: // User
|
{
|
CMBOrgUser *pUser = NULL;
|
|
if ( LookupUser( strMemberID,pUser ) )
|
{
|
if( !pUser)
|
m_mapUser.RemoveKey(strMemberID);
|
}
|
if( !pUser)
|
{
|
pUser = new CMBOrgUser;
|
m_mapUser.SetAt(strMemberID, pUser );
|
pUser->m_strLoginName = strMemberID;
|
if( !strName.IsEmpty() )
|
pUser->m_strUserName = strName;
|
else
|
pUser->m_strUserName = pUser->m_strLoginName;
|
pUser->m_nLevel = nLevel;
|
}
|
else
|
{
|
if( !strName.IsEmpty() )
|
pUser->m_strUserName = strName;
|
if(nLevel >= 0)
|
pUser->m_nLevel = nLevel;
|
}
|
|
}
|
break;
|
case AM_VIEWITEMTYPE_VIEW: // View
|
{
|
CMBOrgView *pView = NULL;
|
|
if ( LookupView( strMemberID,pView ) )
|
{
|
if( !pView)
|
m_mapView.RemoveKey(strMemberID);
|
}
|
if( !pView)
|
{
|
pView = new CMBOrgView;
|
m_mapView.SetAt(strMemberID, pView );
|
pView->m_strID = strMemberID;
|
if( !strName.IsEmpty() )
|
pView->m_strName = strName;
|
else
|
pView->m_strName = strMemberID;
|
pView->m_nLevel = nLevel;
|
|
}
|
else
|
{
|
if( !strName.IsEmpty() )
|
pView->m_strName = strName;
|
}
|
|
}
|
break;
|
case AM_VIEWITEMTYPE_GROUP: // System Group
|
case AM_VIEWITEMTYPE_CUSTGROUP: // Custom Group
|
{
|
CMBOrgGroup *pGroup = NULL;
|
|
if ( LookupGroup( strMemberID,pGroup ) )
|
{
|
if( !pGroup)
|
m_mapGroup.RemoveKey(strMemberID);
|
}
|
if( !pGroup)
|
{
|
pGroup = new CMBOrgGroup;
|
pGroup->m_strID = strMemberID;
|
if ( nMemberType == AM_VIEWITEMTYPE_GROUP )
|
pGroup->m_bIsSysGroup = true;
|
pGroup->m_nMUserCount = 0;
|
m_mapGroup.SetAt( strMemberID, pGroup );
|
if( !strName.IsEmpty() )
|
pGroup->m_strName = strName;
|
else
|
pGroup->m_strName = strMemberID;
|
}
|
else
|
{
|
if( !strName.IsEmpty() )
|
pGroup->m_strName = strName;
|
}
|
pGroup->m_nLevel = nLevel;
|
pGroup->m_bHasSub = TRUE;
|
}
|
break;
|
|
case AM_VIEWITEMTYPE_ROLE: // Role
|
{
|
CMBOrgRole *pRole = NULL;
|
|
if ( LookupRole( strMemberID,pRole) )
|
{
|
if( !pRole)
|
m_mapRole.RemoveKey(strMemberID);
|
}
|
if( !pRole)
|
{
|
pRole = new CMBOrgRole;
|
pRole->m_strID = strMemberID;
|
m_mapRole.SetAt(strMemberID, pRole );
|
if( !strName.IsEmpty() )
|
pRole->m_strName = strName;
|
else
|
pRole->m_strName = strMemberID;
|
}
|
else
|
{
|
if( !strName.IsEmpty() )
|
pRole->m_strName = strName;
|
}
|
}
|
break;
|
|
default:
|
break;
|
}
|
return ;
|
}
|
void CMBOrgListMgr::RemoveMember( int nMemberType, CString strMemberID,bool bDelete )
|
{
|
if ( strMemberID.IsEmpty() )
|
return ;
|
switch ( nMemberType )
|
{
|
case AM_VIEWITEMTYPE_USER: // User
|
{
|
CMBOrgUser *pUser = NULL;
|
|
if ( LookupUser( strMemberID,pUser ) )
|
{
|
m_mapUser.RemoveKey(strMemberID);
|
if(bDelete)
|
{
|
if(pUser)
|
delete pUser;
|
}
|
|
}
|
|
}
|
break;
|
case AM_VIEWITEMTYPE_VIEW: // View
|
{
|
CMBOrgView *pView = NULL;
|
|
if ( LookupView( strMemberID,pView ) )
|
{
|
m_mapView.RemoveKey(strMemberID);
|
if(bDelete)
|
{
|
if(pView)
|
delete pView;
|
}
|
}
|
}
|
break;
|
case AM_VIEWITEMTYPE_GROUP: // System Group
|
case AM_VIEWITEMTYPE_CUSTGROUP: // Custom Group
|
{
|
|
CMBOrgGroup *pGroup = NULL;
|
|
if ( LookupGroup( strMemberID,pGroup ) )
|
{
|
m_mapGroup.RemoveKey(strMemberID);
|
if(bDelete)
|
{
|
if(pGroup)
|
delete pGroup;
|
}
|
}
|
}
|
break;
|
case AM_VIEWITEMTYPE_ROLE: // Role
|
{
|
CMBOrgRole *pRole = NULL;
|
|
if ( LookupRole( strMemberID,pRole) )
|
{
|
m_mapRole.RemoveKey(strMemberID);
|
if(bDelete)
|
{
|
if(pRole)
|
delete pRole;
|
}
|
}
|
}
|
break;
|
|
default:
|
break;
|
}
|
}
|
|
BOOL CMBOrgListMgr::SetUserStatus( CString strLoginName, int nUserStatus )
|
{
|
CMBOrgUser *pUser = NULL;
|
|
if ( strLoginName.IsEmpty() || nUserStatus < AM_USERSTATUS_FLN )
|
return FALSE;
|
if ( !LookupUser( strLoginName,pUser ) )
|
return FALSE;
|
if ( !pUser )
|
return FALSE;
|
pUser->m_nStatus = nUserStatus;
|
return TRUE;
|
}
|
|
int CMBOrgListMgr::GetUserStatus( const CString strLoginName )
|
{
|
CMBOrgUser *pUser = NULL;
|
|
if ( strLoginName.IsEmpty() )
|
return AM_USERSTATUS_NONE;
|
if ( !LookupUser( strLoginName,pUser ) )
|
return AM_USERSTATUS_NONE;
|
if ( pUser == NULL )
|
return AM_USERSTATUS_NONE;
|
|
return pUser->m_nStatus;
|
}
|
int CMBOrgListMgr::GetUserLevel( const CString strLoginName )
|
{
|
CMBOrgUser *pUser = NULL;
|
if ( strLoginName.IsEmpty() )
|
return -1;
|
if ( !LookupUser( strLoginName,pUser ) )
|
return -1;
|
if ( pUser == NULL )
|
return -1;
|
|
return pUser->m_nLevel;
|
}
|
|
void CMBOrgListMgr::SetUserVer( CString strLoginName, int nUserInfoVer, int nUserPhotoVer)
|
{
|
CMBOrgUser *pUser = NULL;
|
|
if ( strLoginName.IsEmpty() )
|
return;
|
if(nUserInfoVer <= 0 && nUserPhotoVer <= 0)
|
return;
|
if ( !LookupUser( strLoginName,pUser ) )
|
return;
|
if ( !pUser)
|
return;
|
if(nUserInfoVer> 0)
|
pUser->m_nUserVer = nUserInfoVer;
|
if(nUserPhotoVer> 0)
|
pUser->m_nUserPhotoVer = nUserPhotoVer;
|
}
|
|
BOOL CMBOrgListMgr::GetUserVer( const CString strLoginName, int &nUserInfoVer, int &nUserPhotoVer )
|
{
|
CMBOrgUser *pUser = NULL;
|
if ( strLoginName.IsEmpty() )
|
return FALSE;
|
if ( !LookupUser( strLoginName,pUser ) )
|
return FALSE;
|
if ( !pUser)
|
return FALSE;
|
nUserInfoVer = pUser->m_nUserVer;
|
nUserPhotoVer = pUser->m_nUserPhotoVer ;
|
return TRUE;
|
}
|
|
BOOL CMBOrgListMgr::DelView( CString strViewID )
|
{
|
CMBOrgView *pView = NULL;
|
|
if ( !LookupView( strViewID,pView ) )
|
return false;
|
if ( pView )
|
delete pView;
|
m_mapView.RemoveKey( strViewID );
|
return true;
|
}
|
|
CString CMBOrgListMgr::GetAllOnLineUser( )
|
{
|
POSITION pos;
|
CMBOrgUser *pUser = NULL;
|
CString strValue, strItem;
|
CString strKey;
|
for ( pos = m_mapUser.GetStartPosition( ); pos; )
|
{
|
m_mapUser.GetNextAssoc( pos,strKey,pUser );
|
if ( !pUser )
|
continue;
|
if ( CMBOrgFunc::IsOnlineUser( pUser->m_nStatus ) )
|
{
|
strValue += _T(";");
|
|
if ( pUser->m_nLevel == 10000 )
|
strItem.Format( _T("LoginName=%s,UserName=%s"), pUser->m_strLoginName, pUser->m_strUserName );
|
else
|
strItem.Format( _T("LoginName=%s,UserName=%s,Level=%d"), pUser->m_strLoginName, pUser->m_strUserName, pUser->m_nLevel );
|
|
strValue += strItem;
|
}
|
}
|
if ( !strValue.IsEmpty() )
|
strValue.Delete( 0 );
|
|
return strValue;
|
}
|
|
void CMBOrgListMgr::OffLineAllUser( )
|
{
|
POSITION pos;
|
CMBOrgUser *pUserItem = NULL;
|
CMBOrgGroup *pGroup = NULL;
|
CString strKey;
|
|
for ( pos = m_mapUser.GetStartPosition( ); pos; )
|
{
|
m_mapUser.GetNextAssoc( pos,strKey,pUserItem );
|
if ( !pUserItem )
|
continue;
|
if ( pUserItem->m_nStatus != AM_USERSTATUS_FLN )
|
pUserItem->m_nStatus = AM_USERSTATUS_FLN;
|
}
|
for ( pos = m_mapGroup.GetStartPosition( ); pos; )
|
{
|
m_mapGroup.GetNextAssoc( pos,strKey,pGroup );
|
if ( !pGroup )
|
continue;
|
pGroup->m_nOnLineUser = 0;
|
}
|
}
|
BOOL CMBOrgListMgr::ParseOrgXml(int nMemberType, CString strMemberID, CString strCmder, CString strXml, bool bCover)
|
{
|
|
COIXMLParser xmlParser;
|
IXMLDOMElementPtr ptrBody;
|
CString strNodeName,strNodeValue,strAttrValue;
|
CMBOrgMember itemMember;
|
BOOL bRet;
|
if(strXml.IsEmpty())
|
return FALSE;
|
if( !xmlParser.ParseXMLStr(strXml, ptrBody) )
|
{
|
return FALSE;
|
}
|
COIXMLParser::GetNodeContent(ptrBody, strNodeName, strNodeValue);
|
if(strCmder.Compare(CMD_UBGI) == 0
|
|| strCmder.Compare(CMD_UBUP) == 0 )
|
{
|
if( strNodeName == CPN_NODE_USER)
|
ParseOrgUserInfo(ptrBody, &itemMember,true);
|
return TRUE;
|
}
|
if(strNodeName == CPN_NODE_BODY)
|
{
|
if(strCmder.Compare(CMD_OBGL) == 0
|
|| strCmder.Compare(CMD_UQCR) == 0
|
|| strCmder.Compare(CMD_RBGL) == 0
|
|| strCmder.Compare(CMD_RMGT) == 0 )
|
{
|
bRet = ParsOrgUserList(nMemberType, strMemberID, ptrBody,bCover);
|
|
}
|
else if(strCmder.Compare(CMD_OMGU) == 0 )
|
{
|
bRet = ParsOrgUserList(nMemberType, strMemberID, ptrBody,bCover);
|
CMBOrgGroup *pGroup = NULL;
|
CMBOrgView *pView = NULL;
|
|
if(nMemberType == AM_VIEWITEMTYPE_GROUP || nMemberType == AM_VIEWITEMTYPE_CUSTGROUP)
|
{
|
if(LookupGroup(strMemberID, pGroup))
|
{
|
if(pGroup)
|
pGroup->m_bIsLoadedUserSuccess = true;
|
}
|
}
|
else if(nMemberType == AM_VIEWITEMTYPE_VIEW)
|
{
|
if(LookupView(strMemberID, pView))
|
{
|
if(pView)
|
pView->m_bIsLoadedUserSuccess = true;
|
}
|
}
|
|
}
|
else if( strCmder.Compare(CMD_UAGO) == 0 )
|
{
|
bRet = ParsUAGOrgList(nMemberType, strMemberID, ptrBody,bCover);
|
}
|
else if(strCmder.Compare(CMD_MFLG) == 0 )
|
{
|
bRet = ParseContactGroupInfo(nMemberType, strMemberID, ptrBody,bCover);
|
}
|
else if(strCmder.Compare(CMD_MFGU) == 0 )
|
{
|
bRet = ParsOrgUserList(nMemberType, strMemberID, ptrBody,bCover);
|
}
|
|
}
|
return TRUE;
|
}
|
|
BOOL CMBOrgListMgr::ParsOrgUserList(int nMemberType, CString strMemberID, IXMLDOMElementPtr ptrBody ,bool bCover )
|
{
|
|
IXMLDOMNodePtr ptrNode,ptrNext;
|
CString strNodeName,strNodeValue,strAttrValue;
|
int nNameLen;
|
CMBOrgGroup *pGroup = NULL;
|
CMBOrgView *pView = NULL;
|
CMBOrgRole *pRole = NULL;
|
CMBOrgUser *pUser = NULL;
|
int nSortLevel;
|
if ( ptrBody == NULL )
|
return FALSE;
|
|
nSortLevel = 0;
|
if(nMemberType == AM_VIEWITEMTYPE_GROUP || nMemberType == AM_VIEWITEMTYPE_CUSTGROUP)
|
{
|
LookupGroup(strMemberID,pGroup);
|
}
|
else if(nMemberType == AM_VIEWITEMTYPE_VIEW)
|
{
|
LookupView(strMemberID,pView);
|
}
|
else if(nMemberType == AM_VIEWITEMTYPE_ROLE)
|
{
|
LookupRole(strMemberID,pRole);
|
|
}
|
ptrBody->get_firstChild( &ptrNode);
|
while(ptrNode)
|
{
|
CMBOrgMember itemMember;
|
COIXMLParser::GetNodeContent(ptrNode, strNodeName, strNodeValue);
|
nNameLen = strNodeName.GetLength();
|
switch( nNameLen )
|
{
|
case 4:
|
if ( strNodeName.CompareNoCase(CPN_NODE_USER ) == 0 )
|
{
|
ParseOrgUserInfo(ptrNode, &itemMember ,false);
|
}
|
else if ( strNodeName.CompareNoCase(CPN_NODE_ROLE ) == 0 )
|
{
|
ParseOrgRoleInfo(ptrNode, &itemMember );
|
}
|
break;
|
case 3:
|
if ( strNodeName.CompareNoCase( CPN_NODE_ORG ) == 0 )
|
{
|
|
CArrayMember arParentMember;
|
arParentMember.RemoveAll();
|
ParseOrgInfo(ptrNode, &itemMember, arParentMember, nSortLevel);
|
nSortLevel++;
|
}
|
break;
|
default:
|
break;
|
}
|
if(nMemberType == AM_VIEWITEMTYPE_GROUP || nMemberType == AM_VIEWITEMTYPE_CUSTGROUP)
|
{
|
if(pGroup)
|
{
|
if( !pGroup->FindMember(itemMember.m_nType,itemMember.m_strID))
|
{
|
if(LookupUser(itemMember.m_strID,pUser))
|
{
|
if(pUser && CMBOrgFunc::IsOnlineUser( pUser->m_nStatus ))
|
{
|
pGroup->m_nOnLineUser++;
|
}
|
}
|
}
|
POSITION pos2;
|
CMBOrgMember *pMember2 = NULL;
|
pos2 = pGroup->FindMember( itemMember.m_nType, itemMember.m_strID );
|
if ( pos2 )
|
{
|
pMember2 = (CMBOrgMember *)pGroup->m_listMember.GetAt( pos2 );
|
*pMember2 = itemMember;
|
}
|
else
|
{
|
pMember2 = new CMBOrgMember;
|
*pMember2 = itemMember;
|
pGroup->m_listMember.AddTail( pMember2 );
|
}
|
pGroup->SetLoaded();
|
}
|
}
|
else if(nMemberType == AM_VIEWITEMTYPE_VIEW)
|
{
|
if(pView)
|
{
|
POSITION pos2;
|
CMBOrgMember *pMember2 = NULL;
|
pos2 = pView->FindMember( itemMember.m_nType, itemMember.m_strID );
|
if ( pos2 )
|
{
|
pMember2 = (CMBOrgMember *)pView->m_listMember.GetAt( pos2 );
|
*pMember2 = itemMember;
|
}
|
else
|
{
|
pMember2 = new CMBOrgMember;
|
*pMember2 = itemMember;
|
pView->m_listMember.AddTail( pMember2 );
|
}
|
pView->SetLoaded();
|
}
|
}
|
else if(nMemberType == AM_VIEWITEMTYPE_ROLE)
|
{
|
if(pRole)
|
{
|
POSITION pos2;
|
CMBOrgMember *pMember2 = NULL;
|
pos2 = pRole->FindUser( itemMember.m_strID );
|
if ( pos2 )
|
{
|
pMember2 = (CMBOrgMember *)pRole->m_listMember.GetAt( pos2 );
|
*pMember2 = itemMember;
|
}
|
else
|
{
|
pMember2 = new CMBOrgMember;
|
*pMember2 = itemMember;
|
pRole->m_listMember.AddTail( pMember2 );
|
}
|
// pRole->FindUser(itemMember.m_strID,itemMember.m_strName,itemMember.m_strDesc,nSortLevel);
|
pRole->SetLoaded();
|
}
|
}
|
ptrNode->get_nextSibling( &ptrNext);
|
ptrNode = ptrNext;
|
}
|
if(nMemberType == AM_VIEWITEMTYPE_GROUP || nMemberType == AM_VIEWITEMTYPE_CUSTGROUP)
|
{
|
if(pGroup)
|
{
|
if(pGroup->m_nMUserCount < 1)
|
pGroup->m_nMUserCount = pGroup->GetUserMemberCount();
|
}
|
}
|
else if(nMemberType == AM_VIEWITEMTYPE_VIEW)
|
{
|
if(pView)
|
{
|
if(pView->m_nMemUsers < 1)
|
pView->m_nMemUsers = pView->GetUserMemberCount();
|
}
|
}
|
|
return TRUE;
|
}
|
|
BOOL CMBOrgListMgr::ParsUAGOrgList(int nMemberType, CString strMemberID, IXMLDOMElementPtr ptrBody ,bool bCover)
|
{
|
|
IXMLDOMNodePtr ptrChildNode,ptrChildNext;
|
IXMLDOMNodePtr ptrNode,ptrNext;
|
CString strNodeName,strNodeValue,strAttrValue;
|
int nNameLen;
|
CMBOrgView *pView = NULL;
|
int nSortLevel;
|
BOOL bFlag = FALSE;
|
|
|
if ( ptrBody == NULL )
|
return FALSE;
|
nSortLevel = 0;
|
if( !LookupView(strMemberID,pView))
|
return FALSE;
|
if( !pView)
|
return FALSE;
|
ptrBody->get_firstChild( &ptrNode);
|
while(ptrNode)
|
{
|
CMBOrgMember itemMember;
|
bFlag = FALSE;
|
COIXMLParser::GetNodeContent(ptrNode, strNodeName, strNodeValue);
|
nNameLen = strNodeName.GetLength();
|
switch( nNameLen )
|
{
|
case 3:
|
if ( strNodeName.CompareNoCase( CPN_NODE_ORG ) == 0 )
|
{
|
CArrayMember arParentMember;
|
arParentMember.RemoveAll();
|
|
if( COIXMLParser::GetNodeAttrValue(ptrNode, CPN_ORG_PARENTINFO,strAttrValue ))
|
{
|
CString strItem;
|
CStringArray arNames;
|
CStringArray arValue;
|
|
while( CMBOrgFunc::GetElementItem(strAttrValue,strItem, _T("},") ))
|
{
|
CMBOrgMember itemMemberParent;
|
strItem += _T("}");
|
ParseParentInfo(strItem, &itemMemberParent);
|
arParentMember.Add(itemMemberParent);
|
}
|
}
|
POSITION pos2;
|
CMBOrgMember *pMember2 = NULL;
|
ParseOrgInfo(ptrNode, &itemMember, arParentMember, nSortLevel);
|
pos2 = pView->FindMember( itemMember.m_nType, itemMember.m_strID);
|
if ( pos2 )
|
{
|
pMember2 = (CMBOrgMember *)pView->m_listMember.GetAt( pos2 );
|
*pMember2 = itemMember;
|
}
|
else
|
{
|
pMember2 = new CMBOrgMember;
|
*pMember2 = itemMember;
|
pView->m_listMember.AddTail( pMember2 );
|
}
|
pView->SetLoaded();
|
pView->m_arParentMember.RemoveAll();
|
nSortLevel++;
|
}
|
break;
|
default:
|
break;
|
}
|
ptrNode->get_nextSibling( &ptrNext);
|
ptrNode = ptrNext;
|
}
|
return TRUE;
|
}
|
void CMBOrgListMgr::ParseOrgUserInfo( IXMLDOMElementPtr ptrItem ,CMBOrgMember *pMember,bool bCover)
|
{
|
IXMLDOMNodePtr ptrNode,ptrNext;
|
CString strNodeName,strNodeValue;
|
CString strAttrValue;
|
int nAttrValue;
|
CMBOrgUser *pUser = NULL;
|
CMBOrgUser itemUser;
|
POSITION pos = NULL;
|
if ( !ptrItem )
|
return ;
|
|
pMember->m_nType = AM_VIEWITEMTYPE_USER;
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_LOGIN,strAttrValue ))
|
{
|
itemUser.m_strLoginName = strAttrValue.MakeLower();
|
pMember->m_strID = strAttrValue;
|
}
|
if ( LookupUser( itemUser.m_strLoginName,pUser ) )
|
{
|
if(pUser)
|
itemUser = *pUser;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_NAME,strAttrValue ))
|
{
|
itemUser.m_strUserName = strAttrValue;
|
pMember->m_strName = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_DISPNAME,strAttrValue ))
|
{
|
itemUser.m_strDispName = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_ALIASNAME,strAttrValue ))
|
{
|
itemUser.m_strAliasName = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_LEVEL,nAttrValue ))
|
{
|
itemUser.m_nLevel = nAttrValue;
|
pMember->m_nSortLevel = itemUser.m_nLevel;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_TITLE,strAttrValue ))
|
{
|
itemUser.m_strPlace = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_SEX,strAttrValue ))
|
{
|
itemUser.m_strSex = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_WECHAT,strAttrValue ))
|
{
|
itemUser.m_strWeChat = strAttrValue;
|
}
|
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_TEL,strAttrValue ))
|
{
|
itemUser.m_strTel = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_TELEXT,strAttrValue ))
|
{
|
itemUser.m_strTelExt = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_MOBILE,strAttrValue ))
|
{
|
itemUser.m_strMobileNO = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_MOBILECORNET,strAttrValue ))
|
{
|
itemUser.m_strCornet = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_EMAIL,strAttrValue ))
|
{
|
itemUser.m_strEMail = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_STATUS,nAttrValue ))
|
{
|
itemUser.m_nStatus = nAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_DEPART,strAttrValue ))
|
{
|
itemUser.m_strDeptInfo = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_MLGI_UNIT,strAttrValue ))
|
{
|
itemUser.m_strUnitInfo = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_PHOTOVER,nAttrValue ))
|
{
|
itemUser.m_nUserPhotoVer = nAttrValue;
|
pMember->m_nUserPhotoVer = nAttrValue;
|
}
|
if(itemUser.m_strUserName.IsEmpty())
|
{
|
itemUser.m_strUserName = itemUser.m_strLoginName;
|
pMember->m_strName = pMember->m_strID;
|
}
|
if( !itemUser.m_strAliasName.IsEmpty())
|
m_mapUserAliasName.SetAt(itemUser.m_strAliasName,itemUser.m_strLoginName);
|
if(!pUser)
|
{
|
pUser = new CMBOrgUser;
|
*pUser = itemUser;
|
m_mapUser.SetAt(itemUser.m_strLoginName,pUser);
|
bCover = true;
|
ptrItem->get_firstChild( &ptrNode);
|
while(ptrNode)
|
{
|
COIXMLParser::GetNodeContent(ptrNode, strNodeName, strNodeValue);
|
if ( strNodeName.CompareNoCase( CPN_MLGI_SIGN ) == 0 )
|
{
|
strNodeValue.Replace( _T("]]>"), _T("]]>") );
|
|
pUser->m_strSign= strNodeValue;
|
break;
|
}
|
ptrNode->get_nextSibling( &ptrNext);
|
ptrNode = ptrNext;
|
}
|
return;
|
}
|
if(bCover)// && itemUser.m_nUserVer >= pUser->m_nUserVer
|
{
|
*pUser = itemUser;
|
ptrItem->get_firstChild( &ptrNode);
|
while(ptrNode)
|
{
|
COIXMLParser::GetNodeContent(ptrNode, strNodeName, strNodeValue);
|
if ( strNodeName.CompareNoCase( CPN_MLGI_SIGN ) == 0 )
|
{
|
strNodeValue.Replace( _T("]]>"), _T("]]>") );
|
|
pUser->m_strSign= strNodeValue;
|
break;
|
}
|
ptrNode->get_nextSibling( &ptrNext);
|
ptrNode = ptrNext;
|
}
|
}
|
else
|
{
|
if(pUser->m_nLevel < 0 )
|
pUser->m_nLevel = itemUser.m_nLevel;
|
}
|
}
|
|
void CMBOrgListMgr::ParseOrgInfo( IXMLDOMElementPtr ptrItem, CMBOrgMember *pMember, CArrayMember &arParentMember, int nSortLevel)
|
{
|
IXMLDOMNodePtr ptrNode,ptrNext;
|
CString strNodeName,strNodeValue;
|
CString strAttrValue;
|
int nAttrValue;
|
CMBOrgGroup *pGroup = NULL;
|
CMBOrgView *pView = NULL;
|
CString strCode = _T("");
|
CString strType = _T("");
|
int bIsUnit = false;
|
int nMemUsers = 0;
|
int bHasSub = false;
|
POSITION pos = NULL;
|
int nMemOrgs = 0;
|
if ( !ptrItem )
|
return ;
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_NAME,strAttrValue ))
|
{
|
pMember->m_strName = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_SNAME,strAttrValue ))
|
{
|
pMember->m_strSName = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_ID,strAttrValue ))
|
{
|
pMember->m_strID = strAttrValue;
|
}
|
COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_HASSUB,bHasSub );
|
COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_ISUNIT,bIsUnit );
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_MEMUSERS,nAttrValue ))
|
{
|
nMemUsers = nAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_UNITTYPE,strAttrValue ))
|
{
|
pMember->m_strGener = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_SUBORGS,nAttrValue ))
|
{
|
nMemOrgs = nAttrValue;
|
}
|
pMember->m_nSortLevel = nSortLevel;
|
if(bIsUnit)
|
{
|
if ( !LookupView( pMember->m_strID ,pView ) )
|
{
|
pView = new CMBOrgView;
|
m_mapView.SetAt(pMember->m_strID ,pView);
|
}
|
pMember->m_nType = AM_VIEWITEMTYPE_VIEW ;
|
pView->m_strID = pMember->m_strID;
|
pView->m_strSName = pMember->m_strSName;
|
pView->m_strName = pMember->m_strName;
|
pView->m_strGener = pMember->m_strGener;
|
pView->m_nMemOrgs = nMemOrgs;
|
pView->m_nMemUsers = nMemUsers;
|
pView->m_nLevel = pMember->m_nSortLevel;
|
pView->m_bHasSub = bHasSub;
|
if(nMemUsers > 0 || nMemOrgs > 0)
|
pView->m_bHasSub = TRUE;
|
pView->m_arParentMember.RemoveAll();
|
pView->m_arParentMember.Copy(arParentMember);
|
}
|
else
|
{
|
if ( !LookupGroup( pMember->m_strID,pGroup ) )
|
{
|
pGroup = new CMBOrgGroup;
|
m_mapGroup.SetAt(pMember->m_strID,pGroup);
|
}
|
pMember->m_nType = AM_VIEWITEMTYPE_GROUP;
|
pGroup->m_nLevel = pMember->m_nSortLevel;
|
pGroup->m_strSName = pMember->m_strSName;
|
pGroup->m_strID = pMember->m_strID;
|
pGroup->m_strName = pMember->m_strName;
|
pGroup->m_nMUserCount = nMemUsers;
|
pGroup->m_nMemOrgs = nMemOrgs;
|
pGroup->m_bHasSub = bHasSub;
|
if(nMemUsers > 0 || nMemOrgs > 0)
|
pGroup->m_bHasSub = TRUE;
|
pGroup->m_arParentMember.RemoveAll();
|
pGroup->m_arParentMember.Copy(arParentMember);
|
|
}
|
|
}
|
BOOL CMBOrgListMgr::ParseContactGroupInfo(int nMemberType, CString strMemberID,IXMLDOMElementPtr ptrBody, bool bCover )
|
{
|
IXMLDOMNodePtr ptrNode,ptrNext;
|
CString strNodeName,strNodeValue,strAttrValue;
|
CMBOrgGroup *pGroup = NULL;
|
CMBOrgView *pView = NULL;
|
|
if ( ptrBody == NULL )
|
return FALSE;
|
if(nMemberType == AM_VIEWITEMTYPE_GROUP || nMemberType == AM_VIEWITEMTYPE_CUSTGROUP)
|
{
|
LookupGroup(strMemberID, pGroup);
|
}
|
else if(nMemberType == AM_VIEWITEMTYPE_VIEW)
|
{
|
LookupView(strMemberID, pView);
|
}
|
ptrBody->get_firstChild( &ptrNode);
|
while(ptrNode)
|
{
|
COIXMLParser::GetNodeContent(ptrNode, strNodeName, strNodeValue);
|
if ( strNodeName.CompareNoCase(CPN_NODE_GROUP ) == 0 )
|
{
|
CMBOrgMember itemMember;
|
itemMember.m_nSortLevel = 1;
|
COIXMLParser::GetNodeAttrValue(ptrNode, CPN_ORG_ID,itemMember.m_strID );
|
COIXMLParser::GetNodeAttrValue(ptrNode, CPN_ORG_NAME,itemMember.m_strName );
|
itemMember.m_nType = AM_VIEWITEMTYPE_CUSTGROUP;
|
if(itemMember.m_strID == _T("{00000000-0000-0000-0000-000000000000}"))
|
{
|
itemMember.m_nSortLevel = 0;
|
itemMember.m_strID = SUBVIEW_TOPCONTACTS;
|
}
|
|
if( !itemMember.m_strName.IsEmpty()&& !itemMember.m_strID.IsEmpty())
|
{
|
AddMember(itemMember.m_nType ,itemMember.m_strID,itemMember.m_strName,itemMember.m_nSortLevel );
|
if(nMemberType == AM_VIEWITEMTYPE_GROUP || nMemberType == AM_VIEWITEMTYPE_CUSTGROUP)
|
{
|
if(pGroup)
|
{
|
POSITION pos2;
|
CMBOrgMember *pMember2 = NULL;
|
pos2 = pGroup->FindMember( itemMember.m_nType, itemMember.m_strID );
|
if ( pos2 )
|
{
|
pMember2 = (CMBOrgMember *)pGroup->m_listMember.GetAt( pos2 );
|
*pMember2 = itemMember;
|
}
|
else
|
{
|
pMember2 = new CMBOrgMember;
|
*pMember2 = itemMember;
|
pGroup->m_listMember.AddTail( pMember2 );
|
}
|
pGroup->SetLoaded();
|
}
|
}
|
else if(nMemberType == AM_VIEWITEMTYPE_VIEW)
|
{
|
if(pView)
|
{
|
POSITION pos2;
|
CMBOrgMember *pMember2 = NULL;
|
pos2 = pView->FindMember( itemMember.m_nType, itemMember.m_strID );
|
if ( pos2 )
|
{
|
pMember2 = (CMBOrgMember *)pView->m_listMember.GetAt( pos2 );
|
*pMember2 = itemMember;
|
}
|
else
|
{
|
pMember2 = new CMBOrgMember;
|
*pMember2 = itemMember;
|
pView->m_listMember.AddTail( pMember2 );
|
}
|
pView->SetLoaded();
|
}
|
}
|
pGroup = NULL;
|
LookupGroup(itemMember.m_strID, pGroup);
|
if(pGroup)
|
pGroup->m_bHasSub = true;
|
}
|
|
}
|
ptrNode->get_nextSibling( &ptrNext);
|
ptrNode = ptrNext;
|
}
|
|
return TRUE;
|
}
|
|
CString CMBOrgListMgr::GetUserMobile( CString strLoginName)
|
{
|
CMBOrgUser *pUser = NULL;
|
if ( strLoginName.IsEmpty() )
|
return _T("");
|
if ( !LookupUser( strLoginName, pUser ) )
|
return _T("");
|
if ( !pUser)
|
return _T("");
|
return pUser->m_strMobileNO;
|
}
|
|
bool CMBOrgListMgr::ParseParentInfo(CString strBuff, CMBOrgMember *pMember )
|
{
|
CString strData;
|
CString strItem;
|
CString strName;
|
CString strValue;
|
CString strTemp;
|
|
strData = strBuff;
|
strData.TrimLeft();
|
strData.TrimRight();
|
strData.TrimLeft(_T("{"));
|
strData.TrimRight(_T("}"));
|
while( CMBOrgFunc::GetElementItem(strData,strItem, _T(",") ))
|
{
|
if( !strItem.IsEmpty() )
|
{
|
strName = _T("");
|
strValue = _T("");
|
CMBOrgFunc::GetElementItem(strItem,strTemp, _T(":") );
|
if(strTemp.GetLength() > 2)
|
{
|
if(strTemp.Left(1) != _T("\""))
|
continue;
|
if(strTemp.Right(1) != _T("\""))
|
continue;
|
strName = strTemp.Mid(1,strTemp.GetLength() - 2);
|
}
|
if( strName.IsEmpty() )
|
continue;
|
|
|
CMBOrgFunc::GetElementItem(strItem,strTemp, _T(":") );
|
|
if(strTemp.GetLength() > 2)
|
{
|
if(strTemp.Left(1) != _T("\""))
|
continue;
|
if(strTemp.Right(1) != _T("\""))
|
continue;
|
strValue = strTemp.Mid(1,strTemp.GetLength() - 2);
|
}
|
pMember->m_nType =AM_VIEWITEMTYPE_GROUP;
|
if( strName.CompareNoCase(CPN_ORG_NAME)== 0 )
|
{
|
pMember->m_strName = strValue;
|
}
|
else if( strName.CompareNoCase(CPN_ORG_SNAME)== 0 )
|
{
|
pMember->m_strSName = strValue;
|
}
|
else if( strName.CompareNoCase(CPN_ORG_ISUNIT)== 0 )
|
{
|
if(_tstol(strValue))
|
pMember->m_nType =AM_VIEWITEMTYPE_VIEW;
|
}
|
else if( strName.CompareNoCase(CPN_ORG_UNITTYPE)== 0 )
|
{
|
pMember->m_strGener = strValue;
|
}
|
}
|
}
|
return true;
|
}
|
|
void CMBOrgListMgr::ParseOrgRoleInfo( IXMLDOMElementPtr ptrItem, CMBOrgMember *pMember)
|
{
|
IXMLDOMNodePtr ptrNode,ptrNext;
|
CString strNodeName,strNodeValue;
|
CString strAttrValue;
|
if ( !ptrItem )
|
return ;
|
if ( !pMember )
|
return ;
|
|
pMember->m_nType = AM_VIEWITEMTYPE_ROLE;
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_ID,strAttrValue ))
|
{
|
pMember->m_strID = strAttrValue;
|
}
|
if( COIXMLParser::GetNodeAttrValue(ptrItem, CPN_ORG_NAME,strAttrValue ))
|
{
|
pMember->m_strName = strAttrValue;
|
}
|
}
|
|
|
CString CMBOrgListMgr::GetUserLogins( )
|
{
|
CString strUsers = _T("");
|
CMBOrgUser *pUser = NULL;
|
CString strKey = _T("");
|
POSITION pos;
|
for ( pos = m_mapUser.GetStartPosition(); pos; )
|
{
|
m_mapUser.GetNextAssoc( pos,strKey,pUser );
|
if ( pUser )
|
strUsers += pUser->m_strLoginName + _T(";");
|
}
|
return strUsers;
|
}
|
void CMBOrgListMgr::SetUserAliasName( CString strLoginName,CString strAliasName)
|
{
|
if(strAliasName.IsEmpty() || strLoginName.IsEmpty())
|
return;
|
m_mapUserAliasName.SetAt(strAliasName, strLoginName);
|
}
|
|
void CMBOrgListMgr::RemoveAllUserRemarks( )
|
{
|
m_mapUserReamrksName.RemoveAll();
|
}
|
CString CMBOrgListMgr::GetUserRemarksName( CString strLoginName)
|
{
|
CString strRemarksName = _T("");
|
if ( strLoginName.IsEmpty() )
|
return strRemarksName;
|
strLoginName.MakeLower();
|
m_mapUserReamrksName.Lookup(strLoginName,strRemarksName );
|
return strRemarksName;
|
}
|
void CMBOrgListMgr::SetUserRemarksName( CString strLoginName,CString strRemarksName )
|
{
|
if ( strLoginName.IsEmpty() )
|
return;
|
strLoginName.MakeLower();
|
if ( strRemarksName.IsEmpty() )
|
{
|
m_mapUserReamrksName.RemoveKey(strLoginName);
|
}
|
else
|
m_mapUserReamrksName.SetAt(strLoginName,strRemarksName);
|
}
|
CString CMBOrgListMgr::GetUserShowName( CString strLoginName)
|
{
|
CString strName = _T("");
|
if ( strLoginName.IsEmpty() )
|
return strName;
|
strLoginName.MakeLower();
|
m_mapUserReamrksName.Lookup(strLoginName,strName );
|
if ( !strName.IsEmpty() )
|
return strName;
|
CMBOrgUser *pUser = NULL;
|
if ( m_mapUser.Lookup( strLoginName,pUser ) )
|
{
|
if( !pUser)
|
return strName;
|
if(strName.IsEmpty())
|
strName = pUser->m_strDispName;
|
if(strName.IsEmpty())
|
strName= pUser->m_strUserName;
|
}
|
return strName;
|
}
|
|
CString CMBOrgListMgr::GetUserListShowName( CString strLoginName)
|
{
|
CString strName = _T("");
|
if ( strLoginName.IsEmpty() )
|
return strName;
|
strLoginName.MakeLower();
|
m_mapUserReamrksName.Lookup(strLoginName,strName );
|
if ( !strName.IsEmpty() )
|
return strName;
|
CMBOrgUser *pUser = NULL;
|
if ( m_mapUser.Lookup( strLoginName,pUser ) )
|
{
|
if( !pUser)
|
return strName;
|
if(strName.IsEmpty())
|
strName= pUser->m_strUserName;
|
}
|
return strName;
|
}
|