/// <summary> /// Schedules an agent using agent container iterator /// </summary> /// <param name="leadDetails">The lead to be given to an agent.</param> /// <param name="agentContainerIterator">Agent Container iterator.</param> /// <returns></returns> public IAgentDTO ScheduleAgent(ILeadDTO leadDetails, INodeContainerIterator<IAgentDTO> agentContainerIterator) { IAgentDTO assignedAgent = null; if (agentContainerIterator.HasNodes()) { ///Fetch the next available node assignedAgent = agentContainerIterator.PeekCurrent(); ///Assign lead to the agent in Datastore IAgentDataManager agentDataManager = new LeadDistributionDataFactory().GetAgentDataManager(DataComponentType.InMemoryData); agentDataManager.AssignLeadToAgent(leadDetails, assignedAgent); ///Move the iterator to the next node. agentContainerIterator.MoveNext(); } return assignedAgent; }
public void Initialize() { agentContainerIterator = new LIFONodeContainerIterator<AgentDTO>(); AgentDTO newAgent = new AgentDTO() { ID = 1, Name = "NAgent1", Territory = "North" }; agentContainerIterator.AddNode(newAgent); }
public void CleanUp() { agentContainerIterator = null; }