public Workgroup() { id = string.Empty; DisplayName = string.Empty; Agents = new List <Agent>(); configuration = null; }
public Workgroup(WorkgroupConfiguration ic_configuration, bool resolve_members = true) { id = ic_configuration.ConfigurationId.Id; DisplayName = ic_configuration.ConfigurationId.DisplayName; Agents = new List<Agent>(); if (resolve_members) { foreach(var ic_member in ic_configuration.Members.Value) { try { Agents.Add(Agent.find(ic_member)); } catch(KeyNotFoundException) { //TODO: Trace/Warn? } } } }
public Workgroup(WorkgroupConfiguration ic_configuration, bool resolve_members = true) { id = ic_configuration.ConfigurationId.Id; DisplayName = ic_configuration.ConfigurationId.DisplayName; Agents = new List <Agent>(); if (resolve_members) { foreach (var ic_member in ic_configuration.Members.Value) { try { Agents.Add(Agent.find(ic_member)); } catch (KeyNotFoundException) { //TODO: Trace/Warn? } } } }
private void CreateWorkgroup(WorkgroupConfiguration workgroupConfiguration, bool hasChanges = false) { //_logging.LogNote("CreateWorkgroup"); try { using (var repository = Repository) { var exist = repository.Workgroups.Any(w => w.ConfigId == workgroupConfiguration.ConfigurationId.Id); if (!exist) { //_logging.LogNote("No Workgroups Exists"); var isActive = workgroupConfiguration.IsActive.Value; var isAcd = workgroupConfiguration.QueueType.Value == WorkgroupQueueType.Acd || workgroupConfiguration.QueueType.Value == WorkgroupQueueType.Custom; var hasQueue = workgroupConfiguration.HasQueue.Value; var utilizations = workgroupConfiguration.Utilizations; var val = String.Join(",", utilizations.Value.Select(i => "MediaType:" + i.MediaType + " Percent:" + i.Utilization + " Max:" + i.MaxAssignable)); //_logging.LogNote(String.Format("Workgroup: {0} {1}", workgroupConfiguration.ConfigurationId.DisplayName, val)); var utils = utilizations.Value; var u = utils.Select(utilizationSettings => new Utilization { MediaType = GetMediaType(utilizationSettings.MediaType), MaxAssignable = utilizationSettings.MaxAssignable, UtilizationPercent = utilizationSettings.Utilization }).ToList(); var workgroup = new Workgroup() { ConfigId = workgroupConfiguration.ConfigurationId.Id, DisplayName = workgroupConfiguration.ConfigurationId.DisplayName, IsAcd = isAcd, IsActive = isActive, HasQueue = hasQueue, MarkedForDeletion = false, IsAssignable = false, Utilizations = u }; repository.Workgroups.Add(workgroup); repository.SaveChanges(); } else { if (_firstRunAfterStart || hasChanges) { //_logging.LogNote("First Run After Start"); var workgroup = repository.Workgroups.FirstOrDefault( w => w.ConfigId == workgroupConfiguration.ConfigurationId.Id); var utilizations = workgroupConfiguration.Utilizations; var val = String.Join(",", utilizations.Value.Select(i => "MediaType:" + i.MediaType + " Percent:" + i.Utilization + " Max:" + i.MaxAssignable)); //_logging.LogNote(String.Format("Workgroup: {0} {1}", workgroupConfiguration.ConfigurationId.DisplayName, val)); var utils = utilizations.Value; var u = utils.Select(utilizationSettings => new Utilization { MediaType = GetMediaType(utilizationSettings.MediaType), MaxAssignable = utilizationSettings.MaxAssignable, UtilizationPercent = utilizationSettings.Utilization }).ToList(); if (workgroup != null) { var isActive = workgroupConfiguration.IsActive.Value; var isAcd = workgroupConfiguration.QueueType.Value == WorkgroupQueueType.Acd || workgroupConfiguration.QueueType.Value == WorkgroupQueueType.Custom; var hasQueue = workgroupConfiguration.HasQueue.Value; workgroup.ConfigId = workgroupConfiguration.ConfigurationId.Id; workgroup.DisplayName = workgroupConfiguration.ConfigurationId.DisplayName; workgroup.IsAcd = isAcd; workgroup.IsActive = isActive; workgroup.HasQueue = hasQueue; workgroup.MarkedForDeletion = false; var utilList = workgroup.Utilizations.ToList(); workgroup.Utilizations.Clear(); foreach (var utilization in utilList) { repository.Utilizations.Remove(utilization); } workgroup.Utilizations = u; //workgroup.IsAssignable = true; repository.SaveChanges(); } } } } } catch (Exception e) { _logging.LogException(e); _logging.TraceException(e, "WorkgroupConfigurations Error"); } }