public void Bcm_PresenceChanged(ObiUser usr, Bcm_to_Lync_Rule rule) { lock (this) { try { m_log.Log("BCM presence changed: " + usr.logId + " - rule:" + rule.rId); if (usr.LS.Sticky) { m_log.Log("User " + usr.logId + " lync state sticky, ignoring bcm state"); return; } if (usr.LS.LoginState) { if (rule.LyncOnline != null) { if (usr.LS.IsDifferent(rule.LyncOnline)) { //m_Lync.SetPresence(usr, rule.LyncOnline, rule); m_Lync.SetPresence(usr, rule.LyncOnline, rule); } else { m_log.Log("BCM change - no state change in Lync for " + usr.logId); } } else { m_log.Log("BCM change - no rule for online lync " + usr.logId); } } else { if (rule.LyncOffline != null) { if (usr.LS.IsDifferent(rule.LyncOffline)) { m_Lync.SetPresence(usr, rule.LyncOffline, rule); } else { m_log.Log("BCM change - no state change in Lync"); } } else { m_log.Log("BCM change - no rule for offline lync"); } } } catch (Exception e) { m_log.Log("Exception in Bcm_PresenceChanged: " + e); } } }
public ObiUser getUser(string sId) { ObiUser u = getUserBCM(sId); if (u == null) { u = getUserLync(sId); } return(u); }
public ObiUser getUserLync(string sUri) { ObiUser u = null; lock (this) { if (m_UsersLync.TryGetValue(sUri, out u) == false) { u = null; } } return(u); }
/////////////////////////////////////////////// // PresenceListener methods public ObiUser getUserBCM(string sBcmId) { ObiUser u = null; lock (this) { if (m_UsersBcm.TryGetValue(sBcmId, out u) == false) { u = null; } } return(u); }
public void removeUser(ObiUser u) { lock (this) { if (m_UsersBcm.ContainsKey(u.UserId)) { m_UsersBcm.Remove(u.UserId); } if (m_UsersLync.ContainsKey(u.Uri)) { m_UsersLync.Remove(u.Uri); } } }
public void addUser(ObiUser u) { lock (this) { if (m_UsersBcm.ContainsKey(u.UserId)) { m_UsersBcm.Remove(u.UserId); } m_UsersBcm[u.UserId] = u; if (m_UsersLync.ContainsKey(u.Uri)) { m_UsersLync.Remove(u.Uri); } m_UsersLync[u.Uri] = u; } }
public void Bcm_UserPresenceTerminated(ObiUser usr) { }
public void Bcm_UserPresenceStarted(ObiUser usr) { }
public void Lync_UserPresenceTerminated(ObiUser usr) { m_log.Log("Presence terminated:" + usr.logId); }
public void Lync_UserPresenceStarted(ObiUser usr) { m_log.Log("Presence started:" + usr.logId); }
public void Bcm_PresenceUpdated(ObiUser usr) { m_log.Log("Bcm presence updated:" + usr.logId); }
public void Bcm_PresenceChanged(ObiUser usr) { m_log.Log("BCM_PresenceChanged - no rule, unimplemented"); }
public void Lync_PresenceUpdated(ObiUser usr) { m_log.Log("Lync presence updated:" + usr.logId); }
public void Lync_PresenceChanged(ObiUser usr) { lock (this) { m_log.Log("Lync presence changed: " + usr.logId + " - " + usr.LS.BaseString); if (m_sync_direction == SyncDirection.BCM_2_Lync) // only BCM->Lync used { return; } if (usr.LS != null) { try { Lync_to_Bcm_Rule rule = null; if (usr.BS.Sticky) { m_log.Log("User " + usr.logId + " lync state change, sticky bcm state on, ignoring"); return; } // TOCHECK: PROFILE GROUP BASED SETTING ??? if (m_use_bcm_directory > 0) { rule = usr.ProfileGroup.findLync2BcmRule(usr.LS); if (rule != null) { m_BCM.SetPresenceDirectory(usr, rule.BcmOnline.Name); } return; } if (usr.ProfileGroup != null) { rule = usr.ProfileGroup.findLync2BcmRule(usr.LS); if (rule != null) { string sBcmPro = null; if (usr.BS.LoginState) { if (rule.BcmOnline != null) { m_log.Log("user " + usr.logId + " changing online profile to " + rule.BcmOnline.BcmID + "," + rule.BcmOnline.Name); sBcmPro = rule.BcmOnline.BcmID; } } else { if (rule.BcmOffline != null) { m_log.Log("user " + usr.logId + " changing offline profile to " + rule.BcmOffline.BcmID + "," + rule.BcmOffline.Name); sBcmPro = rule.BcmOffline.BcmID; } } if (Util.IsNullOrEmpty(sBcmPro)) { m_log.Log("User " + usr.logId + " bcm rule empty - ignoring"); } else { // check internal rules switch (sBcmPro) { case "_Talking": // future: PSI call state m_log.Log("User " + usr.logId + " bcm rule _Talking"); break; case "_EndCall": // future: PSI call state m_log.Log("User " + usr.logId + " bcm rule _CallEnd"); break; case "_PaperWork": m_log.Log("User " + usr.logId + " bcm rule _PaperWork"); if (usr.BS.ServiceState != BcmServiceState.Paperwork) { m_BCM.SetPresence(usr, BcmServiceState.Paperwork); } else { m_log.Log("User " + usr.logId + " bcm already paperwork"); } break; case "_Working": m_log.Log("User " + usr.logId + " bcm rule _Working"); if (usr.BS.ServiceState != BcmServiceState.Working) { m_BCM.SetPresence(usr, BcmServiceState.Working); } else { m_log.Log("User " + usr.logId + " bcm already working"); } break; case "_LateAdmin": case "_WrapUp": m_log.Log("User " + usr.logId + " bcm rule _WrapUp"); if (usr.BS.ServiceState != BcmServiceState.WrapUp) { m_BCM.SetPresence(usr, BcmServiceState.WrapUp); } else { m_log.Log("User " + usr.logId + " bcm already wrapup"); } break; case "_Previous": if (usr.prevBS != null) { if (usr.prevBS.Profile != null) { if (usr.prevBS.Profile.Type == BcmStateOption.Profile) { m_BCM.SetPresence(usr, usr.prevBS.Profile.BcmID); } } } break; default: if (usr.BS.Profile != null && usr.BS.Profile.BcmID == sBcmPro) { m_log.Log("User " + usr.logId + " bcm profile already on, ignoring"); } else { m_BCM.SetPresence(usr, sBcmPro); } break; } } } else { m_log.Log("User " + usr.logId + " no bcm rule - ignoring"); } } else { m_log.Log("User " + usr.logId + " has no profilegroup, ignoring"); } } catch (Exception ex) { m_log.Log("Exception in Lync_PresenceChanged", ex); } } } }
public void Lync_PresenceChanged(ObiUser usr, Lync_to_Bcm_Rule rule) { m_log.Log("Unimplemented - Lync_PresenceChanged:" + usr.logId + " - rule " + rule.rId); }