Как автоматически назначить сделку списку пользователей в pipedrive с помощью round robin C# ?
таким образом,в основном клиент вводит сделку в форме, и она должна быть отправлена в Api и из Api в PipeDrive, поэтому у нас есть список агентов в PipeDrive, и каждая сделка должна быть назначена агентам, таким как round robin.
например:у нас есть 3 агента в учетной записи PipeDrive. таким образом , первая сделка должна перейти к первому агенту, вторая сделка-ко второму агенту, третья сделка-к третьему агенту, а четвертая сделка должна вернуться к первому агенту.
поэтому я использую кэш памяти для хранения последнего назначенного агента и следующего назначенного агента. ниже приведен код .
Вопрос в том, что я ищу другой способ хранения последнего назначенного и следующего назначенного вместо кэша .
Я был бы очень благодарен, если бы кто-нибудь помог мне с кодом C# .
<pre>
Что я уже пробовал:
<pre>
List<Agents> AgentsList = GetAgents();
string CacheKey = "LAST_ASSIGNED_AGENT";
var lastAssignedAgent = GetItemFromCache
var nextAssignedAgent = NextOf(AgentList, lastAssignedAgent);
if (nextAssignedAgent == null)
throw new ApplicationException ("не удается найти следующего назначенного агента");
AddItemToCache(AgentCacheKey, nextAssigned);
private User NextOf(List<User> list, User agent) { if (agent == null) return list[0]; var pair = list.Select((value, indx) => new { Value = value, indx }) .Single(u => u.Value.Id == agent.Id); int index = pair.indx; if (index == -1) return list[0]; return list[(index + 1) == list.Count ? 0 : (index + 1)]; } public static T GetItemFromCache<T>(string key) where T : class { try { return (T)Cache[key]; } catch { return null; } } public static void AddItemToCache(string key, object objectToCache) { Cache.Set(key, objectToCache, DateTime.Now.AddDays(1)); }
Patrice T
И у вас есть какой-то код ?