/// <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;
 }