public Queue BuildQueueFromEndPoint(EndPoint endPoint) { var name = endPoint.EndPointType + "_" + endPoint.EndpointId; var queue = new Queue { Name = name, MaxSize = 50 }; return queue; }
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; }
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; } } }
public Team GetTeamForEndPoint(EndPoint endPoint, int dayOfWeek) { var teams = _directoryRepository.GetTeamsForEndPoint(endPoint, dayOfWeek); int i = Rnd.Next(teams.Count); return teams[i]; }
public void LogEndPointAssignment(string twilioSid, EndPoint endpoint) { _logger.Debug($"Assigned call {twilioSid} to EndpointType {endpoint.EndPointType}, {endpoint.EndpointId}"); }
public Queue ResolveByCompanyId(EndPoint endPoint) { return _queueRepository.GetByCompanyId(endPoint); }
public Queue ResolveByAgentId(EndPoint endPoint) { return _queueRepository.GetByAgentId(endPoint.EndpointId); }
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; }
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); }
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; }