升龙物业 老版本 ocx IPO, 加密狗 转值班电话

ExtenCtrl.cpp 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #include "StdAfx.h"
  2. #include "ExtenCtrl.h"
  3. #include "Exten.h"
  4. CExtenCtrl::CExtenCtrl(void)
  5. {
  6. }
  7. CExtenCtrl::~CExtenCtrl(void)
  8. {
  9. }
  10. /*****************************************************************
  11. **【函数名称】 removeExten
  12. **【函数功能】 删除所有分机
  13. **【参数】
  14. **【返回值】
  15. ****************************************************************/
  16. void CExtenCtrl::removeExten( void )
  17. {
  18. // 清除所有分机
  19. POSITION pos = m_ExtenMap.GetStartPosition();
  20. while(pos != NULL)
  21. {
  22. UINT ExtId = 0;
  23. CExten* pExt = NULL;
  24. m_ExtenMap.GetNextAssoc(pos, ExtId, pExt);
  25. ASSERT(pExt != NULL);
  26. pExt->release();
  27. delete pExt;
  28. } // end while
  29. m_ExtenMap.RemoveAll();
  30. }
  31. /*****************************************************************
  32. **【函数名称】 removeExten
  33. **【函数功能】 清除指定分机
  34. **【参数】 a_Exten: 分机ID
  35. **【返回值】
  36. ****************************************************************/
  37. void CExtenCtrl::removeExten( UINT a_Exten )
  38. {
  39. CExten* pExt = NULL;
  40. // 查找是否存在当前分机
  41. if(m_ExtenMap.Lookup(a_Exten, pExt))
  42. {
  43. pExt->release();
  44. m_ExtenMap.RemoveKey(a_Exten);
  45. delete pExt;
  46. pExt = NULL;
  47. } // end if
  48. }
  49. /*****************************************************************
  50. **【函数名称】 onExtenStateUpdated
  51. **【函数功能】 分机状态变化事件处理
  52. **【参数】 a_pCmd: PDU命令内容
  53. **【返回值】
  54. ****************************************************************/
  55. void CExtenCtrl::onExtenStateUpdated( CPduEntity* a_pCmd )
  56. {
  57. CExten* pExt = NULL;
  58. UINT ExtId = a_pCmd->GetDataUInt(0);
  59. // 查找是否存在当前分机
  60. if(!m_ExtenMap.Lookup(ExtId, pExt))
  61. {
  62. pExt = new CExten(ExtId);
  63. m_ExtenMap.SetAt(ExtId, pExt);
  64. } // end if
  65. // 刷新状态
  66. pExt->setState(a_pCmd);
  67. }
  68. /*****************************************************************
  69. **【函数名称】 getExten
  70. **【函数功能】 获取指定分机
  71. **【参数】 a_Exten: 要查找的分机号
  72. **【返回值】
  73. ****************************************************************/
  74. CExten* CExtenCtrl::getExten( UINT a_Exten )
  75. {
  76. CExten* pPhoneExt = NULL;
  77. m_ExtenMap.Lookup(a_Exten, pPhoneExt);
  78. return pPhoneExt;
  79. }
  80. /*****************************************************************
  81. **【函数名称】 isExtenExisted
  82. **【函数功能】 指定的分机是否存在
  83. **【参数】 a_Exten: 要查找的分机号
  84. **【返回值】
  85. ****************************************************************/
  86. bool CExtenCtrl::isExtenExisted( UINT a_Exten )
  87. {
  88. return getExten(a_Exten) != NULL;
  89. }
  90. /*****************************************************************
  91. **【函数名称】 isExtenUsed
  92. **【函数功能】 指定的分机是否已被占用
  93. **【参数】 a_Exten: 要查找的分机号
  94. **【返回值】
  95. ****************************************************************/
  96. bool CExtenCtrl::isExtenUsed( UINT a_Exten )
  97. {
  98. CExten* pPhoneExt = NULL;
  99. m_ExtenMap.Lookup(a_Exten, pPhoneExt);
  100. ASSERT(pPhoneExt != NULL);
  101. return pPhoneExt->assoAgent() == 0 ? false : true;
  102. }
  103. /*****************************************************************
  104. **【函数名称】 setAssoAgent
  105. **【函数功能】 设置分机关联的座席
  106. **【参数】
  107. **【返回值】
  108. ****************************************************************/
  109. void CExtenCtrl::setAssoAgent( UINT a_Exten, UINT a_AgentId )
  110. {
  111. CExten* pExt = NULL;
  112. if(m_ExtenMap.Lookup(a_Exten, pExt))
  113. pExt->setAssoAgent(a_AgentId);
  114. }
  115. /*****************************************************************
  116. **【函数名称】 getAssoAgent
  117. **【函数功能】 查找关联的座席工号
  118. **【参数】 a_Exten: 要查找的分机号
  119. **【返回值】 当前分机关联的座席工号,0 -> 未关联座席
  120. ****************************************************************/
  121. UINT CExtenCtrl::getAssoAgent( UINT a_Exten )
  122. {
  123. CExten* pExt = NULL;
  124. if(!m_ExtenMap.Lookup(a_Exten, pExt))
  125. return 0;
  126. return pExt->assoAgent();
  127. }
  128. /*****************************************************************
  129. **【函数名称】 getExtenState
  130. **【函数功能】 得到指定分机的当前状态
  131. **【参数】
  132. **【返回值】
  133. ****************************************************************/
  134. INNER_STATE CExtenCtrl::getExtenState( UINT a_Exten )
  135. {
  136. CExten* pExt = NULL;
  137. m_ExtenMap.Lookup(a_Exten, pExt);
  138. if(pExt != NULL)
  139. return pExt->state();
  140. else
  141. return INNER_STATE_DISABLED;
  142. }