/// <summary>
 /// Removes the agent.
 /// </summary>
 /// <param name="agentDetails">The agent details.</param>
 /// <returns></returns>
 public bool RemoveAgent(IAgentDTO agentDetails)
 {
     return ApplicationDataStore.TerritoryAgentDictionary[agentDetails.Territory].RemoveNode(agentDetails);
 }
 /// <summary>
 /// Assigns the lead to agent.
 /// </summary>
 /// <param name="leadDetails">The lead details.</param>
 /// <param name="agentDTO">The agent DTO.</param>
 public void AssignLeadToAgent(ILeadDTO leadDetails, IAgentDTO agentDTO)
 {
     ApplicationDataStore.LeadAgentDictionary.Add(leadDetails.ID, agentDTO);
 }
 /// <summary>
 /// Adds the agent for territory.
 /// </summary>
 /// <param name="agentDetails">The agent details.</param>
 public void AddAgent(IAgentDTO agentDetails)
 {
     ApplicationDataStore.TerritoryAgentDictionary[agentDetails.Territory].AddNode(agentDetails);
 }
 /// <summary>
 /// Creates the operation result.
 /// </summary>
 /// <param name="validateLead">The validate lead.</param>
 /// <param name="assignedAgent">The assigned agent.</param>
 /// <returns></returns>
 private OperationResult<IAgentDTO> CreateOperationResult(IValidateLead validateLead, IAgentDTO assignedAgent)
 {
     OperationResult<IAgentDTO> result = new OperationResult<IAgentDTO>();
     if (validateLead.IsValid)
     {
         if (assignedAgent != null)///Create operation result with agent details
         {
             result.Result = OperationResultType.Success;
             result.Data = assignedAgent;
             result.Message = AgentAssigned;
         }
         else///Create operation result for: No Agent available
         {
             result.Result = OperationResultType.Failure;
             result.Message = AgentNotAssigned;
         }
     }
     else///Create operation result for invalid data
     {
         result.Result = OperationResultType.Failure;
         result.Message = validateLead.Message;
     }
     return result;
 }
 /// <summary>
 /// Removes the agent.
 /// </summary>
 /// <param name="agentDetails">The agent details.</param>
 /// <returns></returns>
 public bool RemoveAgent(IAgentDTO agentDetails)
 {
     IAgentDataManager agentDataManager = new LeadDistributionDataFactory().GetAgentDataManager(DataComponentType.InMemoryData);
     return agentDataManager.RemoveAgent(agentDetails);
 }
 /// <summary>
 /// Adds the agent for territory.
 /// </summary>
 /// <param name="agentDetails">The agent details.</param>
 public void AddAgent(IAgentDTO agentDetails)
 {
     IAgentDataManager agentDataManager = new LeadDistributionDataFactory().GetAgentDataManager(DataComponentType.InMemoryData);
     agentDataManager.AddAgent(agentDetails);
 }