/// <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; }
/// <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(); } }
/// <summary> /// entfernt Kampagnenanmeldung aus Liste /// </summary> public void RemoveCampaignSession(CampaignSession campaignSession) { // Kampagne aus Liste und Index entfernen _campaignSessions.Remove(campaignSession); _campaignSessionsHash.Remove(campaignSession.CampaignCode); }
/// <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); }
/// <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); } }