public void Should_check_if_closed(ConferenceState state, bool isClosed)
        {
            var conference = new ConferenceBuilder()
                             .WithConferenceStatus(state).Build();

            conference.IsClosed().Should().Be(isClosed);
        }
Exemple #2
0
        private void c_OnChannelEnteredBridgeEvent(object sender, ChannelEnteredBridgeEvent e)
        {
            ConferenceUser confUser = ConferenceUsers.SingleOrDefault(x => x.Channel.Id == e.Channel.Id);

            if (confUser == null)
            {
                return;
            }

            confUser.State = ConferenceUserState.InConf;

            if (ConferenceUsers.Count(x => x.State == ConferenceUserState.InConf) > 1) // are we the only ones here
            {
                // stop moh
                _client.Bridges.StopMoh(Confbridge.Id);

                // change state
                State = ConferenceState.Ready;

                // announce new user
                _client.Bridges.Play(Confbridge.Id, "recording:" + confUser.CurrentRecodingId, "en", 0, 0, Guid.NewGuid().ToString());
                _client.Bridges.Play(Confbridge.Id, "sound:conf-hasjoin", "en", 0, 0, Guid.NewGuid().ToString());
            }
            else
            {
                // only caller in conf
                _client.Channels.Play(e.Channel.Id, "sound:conf-onlyperson", "en", 0, 0, Guid.NewGuid().ToString());
            }
        }
Exemple #3
0
 private void c_OnBridgeDestroyedEvent(object sender, BridgeDestroyedEvent e)
 {
     if (e.Bridge.Id == Id.ToString())
     {
         State = ConferenceState.Destroyed;
     }
 }
Exemple #4
0
        public bool StartConference()
        {
            // TODO: fix this, .Connected returning false all the time
            //if (!client.Connected)
            //    return false;

            // Create the conference bridge
            Debug.Print("Requesting new bridge {0} for {1}", Id, ConferenceName);
            Bridge bridge = _client.Bridges.Create("mixing", Id.ToString(), ConferenceName);

            if (bridge == null)
            {
                return(false);
            }


            Debug.Print("Subscribing to events on bridge {0} for {1}", Id, ConferenceName);
            _client.Applications.Subscribe(AppConfig.AppName, "bridge:" + bridge.Id);

            // Start MOH on conf bridge
            _client.Bridges.StartMoh(bridge.Id, "default");

            // Default state is ReadyWaiting until MOH is turned off
            State      = ConferenceState.ReadyWaiting;
            Confbridge = bridge;

            // Conference ready to accept calls
            State = ConferenceState.Ready;

            return(true);
        }
Exemple #5
0
 public IEnumerable <ConferenceDTO> GetFilteredConferences(ConferenceState conferenceState)
 {
     using (var uow = new UnitOfWork())
     {
         var conferenceRepo = uow.getRepository <Conference>();
         return(converter.convertToDTOList(conferenceRepo.getAll().Where(conference => conference.State == conferenceState)));
     }
 }
        private static ConferenceStatus GetStatus(ConferenceState state)
        {
            if (!Enum.TryParse(state.ToString(), true, out ConferenceStatus status))
            {
                status = ConferenceStatus.NotStarted;
            }

            return(status);
        }
        public void ThenTheHearingStatusChanges(ConferenceState state)
        {
            var conferenceState = new PollForConferenceStatus(_c.Apis.TestApi)
                                  .WithConferenceId(_c.Test.Conference.Id)
                                  .WithExpectedState(state)
                                  .Retries(MaxRetries)
                                  .Poll();

            conferenceState.Should().Be(state);
        }
Exemple #8
0
 private void ChangeConferenceState(int idConference, ConferenceState conferenceState)
 {
     using (var uow = new UnitOfWork())
     {
         var conferenceRepo     = uow.getRepository <Conference>();
         var conferenceFromRepo = conferenceRepo.get(idConference);
         conferenceFromRepo.State = conferenceState;
         uow.saveChanges();
     }
 }
        /// <summary>
        /// aktualisiert Parameter
        /// </summary>
        public void RefreshParameters(itCampus.bb.Monitor.Conference conference)
        {
            // Parameter aktualisieren
            _state           = conference.State;
            _lastStateChange = conference.LastStateChange;
            _initiator       = conference.Initiator;
            _confereeCount   = conference.ConfereeCount;

            // Konferenzverwaltung aktualisieren
            _conferenceControl.RefreshConference(this);
        }
Exemple #10
0
        private void c_OnBridgeCreatedEvent(object sender, BridgeCreatedEvent e)
        {
            // Never gets fired!
            if (e.Bridge.Id != Id.ToString())
            {
                return;
            }

            State = ConferenceState.Ready;
            Debug.Print("Created bridge {0} for {1}", Id, ConferenceName);
        }
Exemple #11
0
        public async Task DestroyConference()
        {
            State = ConferenceState.Destroying;

            ConferenceUsers.ForEach(async x => await RemoveUser(x.Channel.Id));
            if (Confbridge != null)
            {
                await _client.Bridges.DestroyAsync(Confbridge.Id);
            }
            Confbridge = null;

            State = ConferenceState.Destroyed;
        }
Exemple #12
0
        public void DestroyConference()
        {
            State = ConferenceState.Destroying;

            ConferenceUsers.ForEach(x => RemoveUser(x.Channel.Id));
            if (Confbridge != null)
            {
                _client.Bridges.Destroy(Confbridge.Id);
            }
            Confbridge = null;

            State = ConferenceState.Destroyed;
        }
        public static bool HasNotPassed(ConferenceState status, DateTime?closedDateTime)
        {
            if (status != ConferenceState.Closed)
            {
                return(true);
            }

            if (!closedDateTime.HasValue)
            {
                throw new ArgumentNullException(nameof(closedDateTime), "A closed conference must have a closed time");
            }
            // After a conference is closed, VH Officers can still administer conferences until this period of time
            const int postClosedVisibilityTime = 30;
            var       endTime = closedDateTime.Value.AddMinutes(postClosedVisibilityTime);

            return(DateTime.UtcNow < endTime);
        }
Exemple #14
0
        public async Task Should_update_conference_status()
        {
            var seededConference = await TestDataManager.SeedConference();

            TestContext.WriteLine($"New seeded conference id: {seededConference.Id}");
            _newConferenceId = seededConference.Id;
            const ConferenceState state = ConferenceState.Paused;

            var beforeState = seededConference.GetCurrentStatus();

            var command = new UpdateConferenceStatusCommand(_newConferenceId, state);
            await _handler.Handle(command);

            var updatedConference = await _conferenceByIdHandler.Handle(new GetConferenceByIdQuery(_newConferenceId));

            var afterState = updatedConference.GetCurrentStatus();

            afterState.Should().NotBe(beforeState);
            afterState.Should().Be(state);
        }
Exemple #15
0
        protected override async Task PublishStatusAsync(CallbackEvent callbackEvent)
        {
            const ConferenceState conferenceState = ConferenceState.Suspended;

            var command = new UpdateConferenceStatusCommand(SourceConference.Id, conferenceState);

            await CommandHandler.Handle(command);

            var reason = "Hearing suspended";

            if (SourceParticipant == null)
            {
                SourceParticipant = SourceConference.GetJudge();
                reason            = "Technical assistance";
            }

            var taskCommand = new AddTaskCommand(SourceConference.Id, SourceParticipant.Id, reason, TaskType.Hearing);

            await CommandHandler.Handle(taskCommand);
        }
Exemple #16
0
        public Conference( AriClient c, Guid id, string name)
        {
            _client = c;
            Id = id;
            ConferenceName = name;
            State = ConferenceState.Destroyed;

            c.OnChannelDtmfReceivedEvent += c_OnChannelDtmfReceivedEvent;
            c.OnBridgeCreatedEvent += c_OnBridgeCreatedEvent;
            c.OnChannelEnteredBridgeEvent += c_OnChannelEnteredBridgeEvent;
            c.OnBridgeDestroyedEvent += c_OnBridgeDestroyedEvent;
            c.OnChannelLeftBridgeEvent += c_OnChannelLeftBridgeEvent;
            c.OnRecordingFinishedEvent += c_OnRecordingFinishedEvent;

            // Added support for talk detection
            c.OnChannelTalkingStartedEvent += c_OnChannelTalkingStartedEvent;
            c.OnChannelTalkingFinishedEvent += c_OnChannelTalkingFinishedEvent;

            Debug.Print("Added Conference {0}", ConferenceName);
        }
        public void UpdateConferenceStatus(ConferenceState status)
        {
            if (status == ConferenceState.NotStarted)
            {
                throw new DomainRuleException(nameof(status), "Cannot set conference status to 'Not Started'");
            }

            if (status == ConferenceState.InSession && !ActualStartTime.HasValue)
            {
                ActualStartTime = DateTime.UtcNow;
            }

            if (status == ConferenceState.Closed)
            {
                ClosedDateTime = DateTime.UtcNow;
            }

            State = status;
            ConferenceStatuses.Add(new ConferenceStatus(status));
        }
Exemple #18
0
        public Conference(AriClient c, Guid id, string name)
        {
            _client        = c;
            Id             = id;
            ConferenceName = name;
            State          = ConferenceState.Destroyed;

            c.OnChannelDtmfReceivedEvent  += c_OnChannelDtmfReceivedEvent;
            c.OnBridgeCreatedEvent        += c_OnBridgeCreatedEvent;
            c.OnChannelEnteredBridgeEvent += c_OnChannelEnteredBridgeEvent;
            c.OnBridgeDestroyedEvent      += c_OnBridgeDestroyedEvent;
            c.OnChannelLeftBridgeEvent    += c_OnChannelLeftBridgeEvent;
            c.OnRecordingFinishedEvent    += c_OnRecordingFinishedEvent;

            // Added support for talk detection
            c.OnChannelTalkingStartedEvent  += c_OnChannelTalkingStartedEvent;
            c.OnChannelTalkingFinishedEvent += c_OnChannelTalkingFinishedEvent;

            Debug.Print("Added Conference {0}", ConferenceName);
        }
Exemple #19
0
        public async Task should_set_start_time_when_status_moves_from_not_started_to_in_session()
        {
            var conference = new ConferenceBuilder(true)
                             .Build();
            var seededConference = await TestDataManager.SeedConference(conference);

            TestContext.WriteLine($"New seeded conference id: {seededConference.Id}");
            _newConferenceId = seededConference.Id;
            const ConferenceState state = ConferenceState.InSession;

            var beforeState = seededConference.GetCurrentStatus();

            var command = new UpdateConferenceStatusCommand(_newConferenceId, state);
            await _handler.Handle(command);

            var updatedConference = await _conferenceByIdHandler.Handle(new GetConferenceByIdQuery(_newConferenceId));

            var afterState = updatedConference.GetCurrentStatus();

            afterState.Should().NotBe(beforeState);
            afterState.Should().Be(state);
            updatedConference.ActualStartTime.Should().HaveValue();
        }
        public void should_set_start_time_when_status_changes_to_in_session_first_time(ConferenceState status,
                                                                                       bool startTimeSet)
        {
            var conference = new ConferenceBuilder().Build();

            conference.UpdateConferenceStatus(status);
            conference.ActualStartTime.HasValue.Should().Be(startTimeSet);
        }
Exemple #21
0
 public PollForConferenceStatus WithExpectedState(ConferenceState expectedState)
 {
     _expectedState = expectedState;
     return(this);
 }
 public ConferenceStatus(ConferenceState conferenceState)
 {
     ConferenceState = conferenceState;
     TimeStamp       = DateTime.UtcNow;
 }
Exemple #23
0
        private void c_OnChannelEnteredBridgeEvent(object sender, ChannelEnteredBridgeEvent e)
        {
            ConferenceUser confUser = ConferenceUsers.SingleOrDefault(x => x.Channel.Id == e.Channel.Id);
            if (confUser == null) return;

            confUser.State = ConferenceUserState.InConf;

            if (ConferenceUsers.Count(x => x.State == ConferenceUserState.InConf) > 1) // are we the only ones here
            {
                // stop moh
                _client.Bridges.StopMoh(Confbridge.Id);

                // change state
                State = ConferenceState.Ready;

                // announce new user
                _client.Bridges.Play(Confbridge.Id, "recording:" + confUser.CurrentRecodingId, "en", 0, 0, Guid.NewGuid().ToString());
                _client.Bridges.Play(Confbridge.Id, "sound:conf-hasjoin", "en", 0, 0, Guid.NewGuid().ToString());
            }
            else
            {
                // only caller in conf
                _client.Channels.Play(e.Channel.Id, "sound:conf-onlyperson", "en", 0, 0, Guid.NewGuid().ToString());
            }
        }
Exemple #24
0
 private void c_OnBridgeDestroyedEvent(object sender, BridgeDestroyedEvent e)
 {
     if (e.Bridge.Id == Id.ToString())
         State = ConferenceState.Destroyed;
 }
Exemple #25
0
        private void c_OnBridgeCreatedEvent(object sender, BridgeCreatedEvent e)
        {
            // Never gets fired!
            if (e.Bridge.Id != Id.ToString()) return;

            State = ConferenceState.Ready;
            Debug.Print("Created bridge {0} for {1}", Id, ConferenceName);
        }
Exemple #26
0
 public UpdateConferenceStatusCommand(Guid conferenceId, ConferenceState conferenceState)
 {
     ConferenceId    = conferenceId;
     ConferenceState = conferenceState;
 }
Exemple #27
0
        public bool StartConference()
        {
            // TODO: fix this, .Connected returning false all the time
            //if (!client.Connected)
            //    return false;

            // Create the conference bridge
            Debug.Print("Requesting new bridge {0} for {1}", Id, ConferenceName);
            Bridge bridge = _client.Bridges.Create("mixing", Id.ToString(), ConferenceName);

            if (bridge == null)
            {
                return false;
            }


            Debug.Print("Subscribing to events on bridge {0} for {1}", Id, ConferenceName);
            _client.Applications.Subscribe(AppConfig.AppName, "bridge:" + bridge.Id);

            // Start MOH on conf bridge
            _client.Bridges.StartMoh(bridge.Id, "default");

            // Default state is ReadyWaiting until MOH is turned off
            State = ConferenceState.ReadyWaiting;
            Confbridge = bridge;

            // Conference ready to accept calls
            State = ConferenceState.Ready;

            return true;
        }
Exemple #28
0
        public void DestroyConference()
        {
            State = ConferenceState.Destroying;

            ConferenceUsers.ForEach(x => RemoveUser(x.Channel.Id));
            if (Confbridge != null)
                _client.Bridges.Destroy(Confbridge.Id);
            Confbridge = null;

            State = ConferenceState.Destroyed;
        }
 public ConferenceBuilder WithConferenceStatus(ConferenceState conferenceState)
 {
     _conference.UpdateConferenceStatus(conferenceState);
     return(this);
 }
 private void SelectStartHearing()
 {
     _conferenceState = ConferenceState.InSession;
     _commonSharedSteps.WhenTheUserSelectsTheOptionFromTheDropdown(_browser.Driver, EventsPage.HearingEventDropdown, "Start");
     _browser.Click(EventsPage.SendHearingEventButton);
 }
Exemple #31
0
        private Domain.Conference GetTestDataConference(DateTime startTime, bool audioRecording, ConferenceState conferenceStatus)
        {
            var conference = new ConferenceBuilder(true, scheduledDateTime: startTime)
                             .WithParticipant(UserRole.Representative, "Respondent")
                             .WithParticipant(UserRole.Judge, null)
                             .WithConferenceStatus(conferenceStatus)
                             .WithAudioRecordingRequired(audioRecording)
                             .Build();

            return(conference);
        }
Exemple #32
0
 public IEnumerable <ConferenceDTO> GetFilteredConferences(ConferenceState conferenceState)
 {
     return(_adminConferenceService.GetFilteredConferences(conferenceState));
 }
Exemple #33
0
        public IEnumerable <ConferenceDTO> getFilteredConferences(string conferenceState)
        {
            ConferenceState state = (ConferenceState)Enum.Parse(typeof(ConferenceState), conferenceState);

            return(_server.GetFilteredConferences(state));
        }