public void should_load_registeredSips_if_list_is_non_existing() { A.CallTo(() => _internalRegisteredSipRepository.GetRegisteredUserAgents()).Returns(new List <RegisteredUserAgent> { new RegisteredUserAgent("*****@*****.**", Guid.NewGuid(), null, null, null, null, null, null, null, null, null, null), new RegisteredUserAgent("*****@*****.**", Guid.NewGuid(), null, null, null, null, null, null, null, null, null, null) }); var regSipList = _sut.GetRegisteredUserAgents().ToList(); Assert.IsNotNull(regSipList); Assert.AreEqual(2, regSipList.Count); Assert.AreEqual("*****@*****.**", regSipList.First().SipUri); }
public IEnumerable <CodecStatusViewModel> GetAll() { var registeredUserAgents = _registeredSipRepository.GetRegisteredUserAgents(); var sipDomain = _settingsManager.SipDomain; var ongoingCalls = _callRepository.GetOngoingCalls(true); var userAgentsOnline = registeredUserAgents.Select(regSip => { string displayName = DisplayNameHelper.GetDisplayName(regSip.DisplayName, regSip.UserDisplayName, string.Empty, regSip.Username, regSip.SipUri, "", sipDomain); var result = new CodecStatusViewModel { SipAddress = regSip.SipUri, Id = regSip.Id, PresentationName = displayName, DisplayName = displayName }; var call = ongoingCalls.FirstOrDefault(c => c.FromSip == regSip.SipUri || c.ToSip == regSip.SipUri); bool inCall = call != null; result.InCall = inCall; if (inCall) { var isFromCaller = call.FromSip == regSip.SipUri; result.IsCallingPart = isFromCaller; result.ConnectedToSipAddress = isFromCaller ? call.ToSip : call.FromSip; result.ConnectedToPresentationName = isFromCaller ? DisplayNameHelper.GetDisplayName(call.ToDisplayName, null, null, "", call.ToSip, "", sipDomain) : DisplayNameHelper.GetDisplayName(call.FromDisplayName, null, null, "", call.FromSip, "", sipDomain); result.ConnectedToLocation = isFromCaller ? call.ToLocationName : call.FromLocationName; result.CallStartedAt = call.Started; } // TODO: In Call with DisplayName is lacking the actual Display name (on user) entered in CCM. Not sure the importance. result.State = regSip.Id == Guid.Empty ? CodecState.NotRegistered : (inCall ? CodecState.InCall : CodecState.Available); return(result); }).ToList(); return(userAgentsOnline); }
public SipEventHandlerResult RegisterCall(SipDialogMessage sipMessage) { log.Debug("Register call from {0} to {1}, call id \"{2}\", hash id:\"{3}\", hash entry:\"{4}\"", sipMessage.FromSipUri.UserAtHost, sipMessage.ToSipUri.UserAtHost, sipMessage.CallId, sipMessage.HashId, sipMessage.HashEntry); if (_callRepository.CallExists(sipMessage.CallId, sipMessage.HashId, sipMessage.HashEntry)) { // TODO: Find out what HashId and HashEntry is and if they are both needed log.Debug("Call with id {0}, hash id:{1}, hash entry:{2} already exists", sipMessage.CallId, sipMessage.HashId, sipMessage.HashEntry); return(NothingChangedResult); } var call = new Call(); // If the user-part is numeric, we make the assumption // that it is a phone number (even though sip-address // can be of the numeric kind) var fromSip = sipMessage.FromSipUri.User.IsNumeric() ? sipMessage.FromSipUri.User : sipMessage.FromSipUri.UserAtHost; var from = _sipRepository.GetRegisteredUserAgents().SingleOrDefault(x => x.SipUri == fromSip); call.FromSip = fromSip; call.FromDisplayName = sipMessage.FromDisplayName; call.FromId = from?.Id ?? Guid.Empty; var toSip = sipMessage.ToSipUri.User.IsNumeric() ? sipMessage.ToSipUri.User : sipMessage.ToSipUri.UserAtHost; var to = _sipRepository.GetRegisteredUserAgents().SingleOrDefault(x => x.SipUri == toSip); call.ToSip = toSip; call.ToDisplayName = sipMessage.ToDisplayName; call.ToId = to?.Id ?? Guid.Empty; call.Started = DateTime.UtcNow; call.CallId = sipMessage.CallId; call.DlgHashId = sipMessage.HashId; call.DlgHashEnt = sipMessage.HashEntry; call.Updated = DateTime.UtcNow; call.ToTag = sipMessage.ToTag; call.FromTag = sipMessage.FromTag; call.IsPhoneCall = sipMessage.FromSipUri.User.IsNumeric() || sipMessage.ToSipUri.User.IsNumeric(); _callRepository.UpdateCall(call); return(SipMessageResult(SipEventChangeStatus.CallStarted, call.Id)); }
public IEnumerable <RegisteredUserAgentViewModel> GetAll() { var registeredUserAgents = _registeredSipRepository.GetRegisteredUserAgents(); var sipDomain = _settingsManager.SipDomain; var calls = _callRepository.GetOngoingCalls(true); var userAgentsOnline = registeredUserAgents.Select(regSip => { var result = new RegisteredUserAgentViewModel { Sip = regSip.SipUri, Id = regSip.Id, DisplayName = DisplayNameHelper.GetDisplayName(regSip.DisplayName, regSip.UserDisplayName, string.Empty, regSip.Username, regSip.SipUri, "", sipDomain), Location = regSip.Location, LocationShortName = regSip.LocationShortName, Image = regSip.Image, CodecTypeName = regSip.CodecTypeName, CodecTypeColor = regSip.CodecTypeColor, UserName = regSip.Username, UserComment = regSip.UserComment, RegionName = regSip.RegionName }; var call = calls.FirstOrDefault(c => c.FromSip == regSip.SipUri || c.ToSip == regSip.SipUri); bool inCall = call != null; result.InCall = inCall; if (inCall) { var isFromCaller = call.FromSip == regSip.SipUri; result.InCallWithId = isFromCaller ? call.ToId : call.FromId; result.InCallWithSip = isFromCaller ? call.ToSip : call.FromSip; result.InCallWithName = isFromCaller ? call.ToDisplayName : call.FromDisplayName; } return(result); }).ToList(); return(userAgentsOnline); }
public IEnumerable <RegisteredUserAgent> GetRegisteredUserAgents() { return(_lazyCache.GetOrAddRegisteredUserAgents(() => _internalRepository.GetRegisteredUserAgents())); }