public Queue BuildQueueFromEndPoint(EndPoint endPoint)
        {
            var name = endPoint.EndPointType + "_" + endPoint.EndpointId;

            var queue = new Queue
            {
                Name = name,
                MaxSize = 50
            };

            return queue;
        }
Пример #2
0
 public Queue Create(EndPoint endPoint)
 {
     var baseQueue = _queueProvider.BuildQueueFromEndPoint(endPoint);
     var queue = _queueProvider.CreateQueue(baseQueue);
     if (queue == null)
     {
         //the queue already exists but isn't assigned to the endpoint
         //probably need to do something here
     }
     queue.Id = _queueRepository.Create(queue);
     return queue;
 }
Пример #3
0
 public void AssignToEndPoint(EndPoint endPoint)
 {
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             db.Execute(new AssignQueueToEndPoint(endPoint));
         }
         catch (Exception ex)
         {
             _logger.Error($"Error occured assigining endpoint {endPoint.EndpointId} to queue {endPoint.QueueId} - {ex}");
         }
     }
 }
 public bool AssignQueueToEndPoint(EndPoint endPoint, int queueId)
 {
     endPoint.QueueId = queueId;
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             db.Execute(new AssignQueueToEndPoint(endPoint));
         }
         catch (Exception ex)
         {
             _logger.Error($"Error assigning queue {endPoint.QueueId} to endpoint {endPoint.EndpointId} - {ex}");
         }
     }
     return false;
 }
 public AssignQueueToEndPoint(EndPoint endPoint)
 {
     _endPoint = endPoint;
 }
 public List<Team> GetTeamsForEndPoint(EndPoint endPoint, int dayOfWeek)
 {
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             return db.Query(new GetTeamsForEndPoint(endPoint, dayOfWeek));
         }
         catch (Exception ex)
         {
             _logger.Error("Error doing something");
             return null;
         }
     }
 }
Пример #7
0
 public Team GetTeamForEndPoint(EndPoint endPoint, int dayOfWeek)
 {
     var teams = _directoryRepository.GetTeamsForEndPoint(endPoint, dayOfWeek);
     int i = Rnd.Next(teams.Count);
     return teams[i];
 }
Пример #8
0
 public void LogEndPointAssignment(string twilioSid, EndPoint endpoint)
 {
     _logger.Debug($"Assigned call {twilioSid} to EndpointType {endpoint.EndPointType}, {endpoint.EndpointId}");
 }
Пример #9
0
 public Queue ResolveByCompanyId(EndPoint endPoint)
 {
     return _queueRepository.GetByCompanyId(endPoint);
 }
Пример #10
0
 public Queue ResolveByAgentId(EndPoint endPoint)
 {
     return _queueRepository.GetByAgentId(endPoint.EndpointId);
 }
Пример #11
0
 public Queue GetByEndPoint(EndPoint endPoint)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             switch (endPoint.EndPointType)
             {
                 case EndPointType.Agent:
                     queue =  db.Query(new GetQueueForAgentByAgentId(endPoint.EndpointId));
                     break;
                 case EndPointType.Team:
                     queue = db.Query(new GetQueueForTeamByTeamId(endPoint.EndpointId));
                     break;
                 case EndPointType.Department:
                     queue = db.Query(new GetQueueForDepartmentByDepartmentId(endPoint));
                     break;
                 case EndPointType.Company:
                     queue = db.Query(new GetQueueForCompanyByCompanyId(endPoint));
                     break;
                 default:
                     return db.Query(new GetQueueForCompanyByCompanyId(endPoint));
             }
         }
         catch (Exception ex)
         {
             _logger.Error($"Exception thrown in QueueRepository - {ex}");
         }
     }
     return queue;
 }
Пример #12
0
 public Queue GetByCompanyId(EndPoint endPoint)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             queue = db.Query(new GetQueueForCompanyByCompanyId(endPoint));
         }
         catch (Exception ex)
         {
             _logger.Error("ANOTHER ERROR!!");
         }
     }
     return queue;
 }
 public Queue CheckQueueExistsForEndPoint(EndPoint endPoint)
 {
     return _queueRepository.GetByAgentId(endPoint.EndpointId);
 }
Пример #14
0
        public string BuildUrlFromEndPoint(EndPoint endPoint, string callSid)
        {
            string url = "api/";
            try
            {
                if (endPoint == null)
                {
                    //closed, redirect to voicemail
                    url += "Directory/Closed";
                    return url;
                }

                switch (endPoint.EndPointType)
                {
                    case EndPointType.Company:
                        url += string.Format("{0}/{1}", Enum.GetName(typeof (EndPointType), endPoint.EndPointType),
                            endPoint.QueueId);
                        break;

                    case EndPointType.Department:
                        url += string.Format("{0}/{1}/{2}/{3}",
                                Enum.GetName(typeof (EndPointType), EndPointType.Company),
                                endPoint.CompanyId,
                                Enum.GetName(typeof (EndPointType), EndPointType.Department),
                                endPoint.QueueId);
                        break;

                    case EndPointType.Team:
                        url += string.Format("{0}/{1}/{2}/{3}/{4}/{5}",
                                Enum.GetName(typeof(EndPointType), EndPointType.Company),
                                endPoint.CompanyId,
                                Enum.GetName(typeof(EndPointType), EndPointType.Department),
                                endPoint.DepartmentId,
                                Enum.GetName(typeof(EndPointType), EndPointType.Team),
                                endPoint.QueueId);
                        break;

                    case EndPointType.Agent:
                        url += string.Format("{0}/{1}/{2}/{3}/{4}/{5}/{6}/{7}",
                                Enum.GetName(typeof(EndPointType), EndPointType.Company),
                                endPoint.CompanyId,
                                Enum.GetName(typeof(EndPointType), EndPointType.Department),
                                endPoint.DepartmentId,
                                Enum.GetName(typeof(EndPointType), EndPointType.Team),
                                endPoint.TeamId,
                                Enum.GetName(typeof(EndPointType), EndPointType.Agent),
                                endPoint.QueueId);
                        break;

                    case EndPointType.Message:
                        url += $"{Enum.GetName(typeof (EndPointType), EndPointType.Company)}/{endPoint.CompanyId}/" +
                               $"{Enum.GetName(typeof (EndPointType), EndPointType.Department)}/{endPoint.DepartmentId}/" +
                               $"{Enum.GetName(typeof (EndPointType), EndPointType.Message)}/{endPoint.EndpointId}";
                        break;
                }

                url += "?callSid=" + callSid;
                _logger.Debug($"Redirecting to directory location {url}");
            }
            catch (Exception ex)
            {
                _logger.Error(
                    string.Format("An error occured building a url for EndPoint of type {0} with id of {1}.  {2}",
                        endPoint.EndPointType, endPoint.EndpointId, ex));
                //TODO: proper url
                return "a failsafe url";
            }
            return url;
        }