// MBRole.cpp : implementation file // #include "stdafx.h" #include "mborg.h" #include "MBOrgRole.h" // CMBRole IMPLEMENT_DYNAMIC(CMBOrgRole, CObject) CMBOrgRole::CMBOrgRole() { m_strName = _T(""); m_strID = _T(""); m_bIsLoaded = FALSE; } CMBOrgRole::~CMBOrgRole() { DetachList(); } // CMBRole member functions void CMBOrgRole::operator = ( const CMBOrgRole &Item ) { POSITION pos; CMBOrgMember *pMember = NULL; CMBOrgMember *pNewMember = NULL; m_strID = Item.m_strID; m_strName = Item.m_strName; m_bIsLoaded = Item.m_bIsLoaded; // Copy User List DetachList(); for ( pos = Item.m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)Item.m_listMember.GetNext( pos ); pNewMember = new CMBOrgMember; *pNewMember = *pMember; m_listMember.AddTail( pNewMember ); } } ///////////////////////////////////////////////////////////////////////////// // CMBOrgRole message handlers void CMBOrgRole::DetachList() { POSITION pos; CMBOrgMember *pMember = NULL; for ( pos = m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)m_listMember.GetNext( pos ); if ( pMember ) delete pMember; } m_listMember.RemoveAll(); } POSITION CMBOrgRole::FindUser( CString strLoginName ) { POSITION pos = NULL; POSITION posOld = NULL; CMBOrgMember *pMember = NULL; if ( strLoginName.IsEmpty() ) return NULL; for ( pos = m_listMember.GetHeadPosition(); pos; pos ) { posOld = pos; pMember = (CMBOrgMember *)m_listMember.GetNext( pos ); if ( pMember->m_strID.CompareNoCase( strLoginName ) == 0 ) return posOld; } return NULL; } POSITION CMBOrgRole::AddMember( CString strUser, CString strName,int nLevel /*= 0*/ ) { POSITION pos; CMBOrgMember *pMember = NULL; if ( strUser.IsEmpty() || strName.IsEmpty() ) return NULL; pos = FindUser( strUser ); if ( pos ) pMember = (CMBOrgMember *)m_listMember.GetAt( pos ); else { pMember = new CMBOrgMember; pMember->m_nType = AM_VIEWITEMTYPE_USER; pMember->m_strID = strUser; pos = m_listMember.AddTail( pMember ); } pMember->m_bIsDelete = FALSE; pMember->m_strName = strName; pMember->m_nSortLevel = nLevel; return pos; }