/// <summary>
        /// startet Coaching in Abhängigkeit von aktuellem Status
        /// </summary>
        public void StartCoaching(string agentCode, CoachingMode coachingMode)
        {
            // Status prüfen
            if ((_monitor.State != MonitorState.Assigned) &&
                (_monitor.State != MonitorState.Coaching))
            {
                return;
            }

            // je nach aktuellem Status
            switch (_monitor.State)
            {
            case MonitorState.Assigned:
                // Coaching starten
                MonitorStartCoaching(agentCode, coachingMode);
                break;

            case MonitorState.Coaching:
                // Coaching anpassen
                if (agentCode != _currentAgentCode)
                {
                    MonitorStopCoaching();
                    MonitorStartCoaching(agentCode, coachingMode);
                }
                else if (coachingMode != _currentCoachingMode)
                {
                    MonitorChangeCoaching(coachingMode);
                }
                break;
            }

            // Coachingparameter aktualisieren
            _currentAgentCode    = agentCode;
            _currentCoachingMode = coachingMode;
        }
        /// <summary>
        /// ändert Coachingmodus
        /// </summary>
        private void MonitorChangeCoaching(CoachingMode coachingMode)
        {
            // Methodenaufruf protokollieren
            Logger.Log.Info("[Monitor] <- [ChangeCoaching] CoachingMode: " + coachingMode);

            // Coachingmodus ändern
            _monitor.ChangeCoaching(coachingMode);

            // Methodenabschluss protokollieren
            Logger.Log.Info("[Monitor] -> [ChangeCoaching]");
        }
        /// <summary>
        /// startet Coaching
        /// </summary>
        private void MonitorStartCoaching(string agentCode, CoachingMode coachingMode)
        {
            // Methodenaufruf protokollieren
            Logger.Log.Info("[Monitor] <- [StartCoaching] AgentCode: " + agentCode +
                            ", CoachingMode: " + coachingMode);

            // Coaching starten
            _monitor.StartCoaching(agentCode, coachingMode);

            // Methodenabschluss protokollieren
            Logger.Log.Info("[Monitor] -> [StartCoaching]");
        }
Esempio n. 4
0
        /// <summary>
        /// aktualisiert Parameter
        /// </summary>
        public void RefreshParameters(itCampus.bb.Monitor.Frontend frontend)
        {
            // Parameter aktualisieren
            _remoteAddress      = frontend.RemoteAddress;
            _lastState          = _state;
            _state              = frontend.State;
            _lastStateChange    = frontend.LastStateChange;
            _agentCode          = frontend.AgentCode;
            _deviceCode         = frontend.DeviceCode;
            _campaignCode       = frontend.CampaignCode;
            _agentMode          = frontend.AgentMode;
            _coachingPermission = frontend.CoachingPermission;
            _monitorCode        = frontend.MonitorCode;
            _coachingMode       = frontend.CoachingMode;
            foreach (AgentState agentState in Enum.GetValues(typeof(AgentState)))
            {
                _agentStateTimeAvgTtl[(int)agentState] =
                    frontend.GetAgentStateTimeAvgTtl(agentState);
            }
            foreach (AgentState agentState in Enum.GetValues(typeof(AgentState)))
            {
                _agentStateTimeTtl[(int)agentState] =
                    frontend.GetAgentStateTimeTtl(agentState);
            }

            // wenn Device zugeordnet
            if (_device != null)
            {
                // wenn Devicecode übereinstimmt
                if (_device.Code == _deviceCode)
                {
                    // Device aktualisieren
                    _device.RefreshFrontend();
                }
                else
                {
                    // sonst Device freigeben
                    _device.UnassignFrontend();
                    _device = null;
                }
            }

            // wenn kein Device zugeordnet
            if (_device == null)
            {
                // wenn Devicecode angegeben
                if (_deviceCode != "")
                {
                    // Deviceverwaltung referenzieren
                    DeviceControl deviceControl = _frontendControl.MainControl.DeviceControl;

                    // Device suchen
                    _device = deviceControl[_deviceCode];

                    // wenn Device nicht gefunden, erzeugen
                    if (_device == null)
                    {
                        _device = new Device(_deviceCode, deviceControl);
                    }

                    // Device zuordnen
                    _device.AssignFrontend(this);
                }
            }

            // wenn Kampagne zugeordnet
            if (_campaign != null)
            {
                // wenn Kampagnencode nicht übereinstimmt, Kampagne freigeben
                if (_campaign.Code != _campaignCode)
                {
                    UnassignCampaign();
                }
            }

            // wenn keine Kampagne zugeordnet
            if (_campaign == null)
            {
                // wenn Kampagnencode angegeben
                if (_campaignCode != "")
                {
                    // Kampagnenverwaltung referenzieren
                    CampaignControl campaignControl = _frontendControl.MainControl.CampaignControl;

                    // Kampagne suchen
                    Campaign campaign = campaignControl.GetCampaign(_campaignCode);

                    // wenn Kampagne gefunden, zuordnen
                    if (campaign != null)
                    {
                        AssignCampaign(campaign);
                    }
                }
            }

            // Frontendverwaltung aktualisieren
            _frontendControl.RefreshFrontend(this);
        }