コード例 #1
0
        /// <summary>
        /// schließt Frontend ab
        /// </summary>
        public void Terminate()
        {
            // alle zugeordneten Kampagnen freigeben
            for (int i = 0; i < _campaignSessions.Count; i++)
            {
                // Kampagnenanmeldung referenzieren
                CampaignSession campaignSession = _campaignSessions[i];

                // wenn Kampagne zugeordnet, freigeben
                if (campaignSession.Campaign != null)
                {
                    campaignSession.Campaign.RemoveFrontend(this);
                    campaignSession.Campaign = null;
                }
            }

            // wenn Device zugeordnet, freigeben
            if (_device != null)
            {
                _device.UnassignFrontend();
                _device = null;
            }

            // Frontend aus Frontendverwaltung entfernen
            _frontendControl.RemoveFrontend(this);
            _frontendControl = null;
        }
コード例 #2
0
        /// <summary>
        /// hebt Kampagnenzuweisung auf
        /// </summary>
        public void UnassignCampaign(Campaign campaign)
        {
            // Kampagnenanmeldung ermitteln
            CampaignSession campaignSession = _campaignSessions[campaign.Code];

            // Kampagne freigeben
            campaignSession.Campaign.RemoveFrontend(this);
            campaignSession.Campaign = null;

            // Frontendverwaltung aktualisieren
            _frontendControl.RefreshFrontend(this);

            // wenn Device zugeordnet, aktualisieren
            if (_device != null)
            {
                _device.RefreshFrontend();
            }
        }
コード例 #3
0
 /// <summary>
 /// entfernt Kampagnenanmeldung aus Liste
 /// </summary>
 public void RemoveCampaignSession(CampaignSession campaignSession)
 {
     // Kampagne aus Liste und Index entfernen
     _campaignSessions.Remove(campaignSession);
     _campaignSessionsHash.Remove(campaignSession.CampaignCode);
 }
コード例 #4
0
 /// <summary>
 /// fügt Kampagnenanmeldung zu Liste hinzu
 /// </summary>
 public void AddCampaignSession(CampaignSession campaignSession)
 {
     // Kampagnenanmeldung zu Liste und Index hinzufügen
     _campaignSessions.Add(campaignSession);
     _campaignSessionsHash.Add(campaignSession.CampaignCode, campaignSession);
 }
コード例 #5
0
        /// <summary>
        /// aktualisiert Kampagnenanmeldungen
        /// </summary>
        private void RefreshCampaignSessions(
            itCampus.bb.Monitor.CampaignSessionList campaignSessions)
        {
            // Kampagnenanmeldungen abgleichen
            for (int i = 0; i < campaignSessions.Count; i++)
            {
                // Parameter für aktuelle Kampagnenanmeldung ermitteln
                string    campaignCode  = campaignSessions[i].CampaignCode;
                AgentMode agentMode     = campaignSessions[i].AgentMode;
                int       agentPriority = campaignSessions[i].AgentPriority;

                // Kampagnenanmeldung an aktueller Position ermitteln
                CampaignSession campaignSession = GetCampaignSession(i);

                // solange Kampagnenanmeldung an aktueller Position vorhanden und veraltet
                while ((campaignSession != null) &&
                       ((campaignSession.CampaignCode != campaignCode) ||
                        (campaignSession.AgentMode != agentMode) ||
                        (campaignSession.AgentPriority != agentPriority)))
                {
                    // wenn Kampagne zugeordnet, freigeben
                    if (campaignSession.Campaign != null)
                    {
                        UnassignCampaign(campaignSession.Campaign);
                    }

                    // Kampagnenanmeldung entfernen
                    _campaignSessions.RemoveCampaignSession(campaignSession);

                    // nächste Kampagnenanmeldung ermitteln
                    campaignSession = GetCampaignSession(i);
                }

                // wenn keine Kampagnenanmeldung mit übereinstimmenden Parametern gefunden
                if (campaignSession == null)
                {
                    // neue Kampagnenanmeldung initialisieren
                    campaignSession = new CampaignSession(campaignCode, agentMode, agentPriority);

                    // Kampagnenanmeldung zu Liste hinzufügen
                    _campaignSessions.AddCampaignSession(campaignSession);

                    // Kampagne suchen
                    Campaign campaign = _frontendControl.MainControl.CampaignControl.GetCampaign(
                        campaignCode);

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

            // alle übrigen Kampagnenanmeldungen entfernen
            while (_campaignSessions.Count > campaignSessions.Count)
            {
                // nächste Kampagnenanmeldung ermitteln
                CampaignSession campaignSession = GetCampaignSession(campaignSessions.Count);

                // wenn Kampagne zugeordnet, freigeben
                if (campaignSession.Campaign != null)
                {
                    UnassignCampaign(campaignSession.Campaign);
                }

                // Kampagnenanmeldung entfernen
                _campaignSessions.RemoveCampaignSession(campaignSession);
            }
        }