| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #include "StdAfx.h"
- #include "ExtenCtrl.h"
- #include "Exten.h"
- CExtenCtrl::CExtenCtrl(void)
- {
- }
- CExtenCtrl::~CExtenCtrl(void)
- {
- }
- /*****************************************************************
- **【函数名称】 removeExten
- **【函数功能】 删除所有分机
- **【参数】
- **【返回值】
- ****************************************************************/
- void CExtenCtrl::removeExten( void )
- {
- // 清除所有分机
- POSITION pos = m_ExtenMap.GetStartPosition();
- while(pos != NULL)
- {
- UINT ExtId = 0;
- CExten* pExt = NULL;
-
- m_ExtenMap.GetNextAssoc(pos, ExtId, pExt);
- ASSERT(pExt != NULL);
- pExt->release();
- delete pExt;
- } // end while
- m_ExtenMap.RemoveAll();
- }
- /*****************************************************************
- **【函数名称】 removeExten
- **【函数功能】 清除指定分机
- **【参数】 a_Exten: 分机ID
- **【返回值】
- ****************************************************************/
- void CExtenCtrl::removeExten( UINT a_Exten )
- {
- CExten* pExt = NULL;
- // 查找是否存在当前分机
- if(m_ExtenMap.Lookup(a_Exten, pExt))
- {
- pExt->release();
- m_ExtenMap.RemoveKey(a_Exten);
- delete pExt;
- pExt = NULL;
- } // end if
- }
- /*****************************************************************
- **【函数名称】 onExtenStateUpdated
- **【函数功能】 分机状态变化事件处理
- **【参数】 a_pCmd: PDU命令内容
- **【返回值】
- ****************************************************************/
- void CExtenCtrl::onExtenStateUpdated( CPduEntity* a_pCmd )
- {
- CExten* pExt = NULL;
- UINT ExtId = a_pCmd->GetDataUInt(0);
- // 查找是否存在当前分机
- if(!m_ExtenMap.Lookup(ExtId, pExt))
- {
- pExt = new CExten(ExtId);
- m_ExtenMap.SetAt(ExtId, pExt);
- } // end if
- // 刷新状态
- pExt->setState(a_pCmd);
- }
- /*****************************************************************
- **【函数名称】 getExten
- **【函数功能】 获取指定分机
- **【参数】 a_Exten: 要查找的分机号
- **【返回值】
- ****************************************************************/
- CExten* CExtenCtrl::getExten( UINT a_Exten )
- {
- CExten* pPhoneExt = NULL;
- m_ExtenMap.Lookup(a_Exten, pPhoneExt);
- return pPhoneExt;
- }
- /*****************************************************************
- **【函数名称】 isExtenExisted
- **【函数功能】 指定的分机是否存在
- **【参数】 a_Exten: 要查找的分机号
- **【返回值】
- ****************************************************************/
- bool CExtenCtrl::isExtenExisted( UINT a_Exten )
- {
- return getExten(a_Exten) != NULL;
- }
- /*****************************************************************
- **【函数名称】 isExtenUsed
- **【函数功能】 指定的分机是否已被占用
- **【参数】 a_Exten: 要查找的分机号
- **【返回值】
- ****************************************************************/
- bool CExtenCtrl::isExtenUsed( UINT a_Exten )
- {
- CExten* pPhoneExt = NULL;
- m_ExtenMap.Lookup(a_Exten, pPhoneExt);
- ASSERT(pPhoneExt != NULL);
- return pPhoneExt->assoAgent() == 0 ? false : true;
- }
- /*****************************************************************
- **【函数名称】 setAssoAgent
- **【函数功能】 设置分机关联的座席
- **【参数】
- **【返回值】
- ****************************************************************/
- void CExtenCtrl::setAssoAgent( UINT a_Exten, UINT a_AgentId )
- {
- CExten* pExt = NULL;
- if(m_ExtenMap.Lookup(a_Exten, pExt))
- pExt->setAssoAgent(a_AgentId);
- }
- /*****************************************************************
- **【函数名称】 getAssoAgent
- **【函数功能】 查找关联的座席工号
- **【参数】 a_Exten: 要查找的分机号
- **【返回值】 当前分机关联的座席工号,0 -> 未关联座席
- ****************************************************************/
- UINT CExtenCtrl::getAssoAgent( UINT a_Exten )
- {
- CExten* pExt = NULL;
- if(!m_ExtenMap.Lookup(a_Exten, pExt))
- return 0;
- return pExt->assoAgent();
- }
- /*****************************************************************
- **【函数名称】 getExtenState
- **【函数功能】 得到指定分机的当前状态
- **【参数】
- **【返回值】
- ****************************************************************/
- INNER_STATE CExtenCtrl::getExtenState( UINT a_Exten )
- {
- CExten* pExt = NULL;
- m_ExtenMap.Lookup(a_Exten, pExt);
- if(pExt != NULL)
- return pExt->state();
- else
- return INNER_STATE_DISABLED;
- }
|