Russ63 Ответов: 1

Как автоматически назначить сделку списку пользователей в 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

И у вас есть какой-то код ?

1 Ответов

Рейтинг:
0

Garth J Lancaster

я что-то упускаю ? - если у вас есть фиксированное количество агентов (в определенный момент времени), и у вас есть последовательный индекс/счетчик вашей "сделки", то,

nextAgent = dealIndex % numberOfAgents; 


по своим собственным правилам

Цитата:
например:у нас есть 3 агента в учетной записи PipeDrive. таким образом , первая сделка должна перейти к первому агенту, вторая сделка-ко второму агенту, третья сделка-к третьему агенту, а четвертая сделка должна вернуться к первому агенту.


вам нужно только отслеживать последовательность/индекс / количество сделок, так как назначение агенту - это операция "модуль"