private void ProcessSkillConfigurations(SkillConfigurationList skillConfigurationList) { lock (ProcessingLock) try { if (skillConfigurationList != null) { var skills = skillConfigurationList.GetConfigurationList(); if (!_skills.Any() && skills.Any()) { foreach (var skillConfiguration in skills) { CreateSkill(skillConfiguration.ConfigurationId.Id, skillConfiguration.ConfigurationId.DisplayName); } _skills = skills; CheckForDeleted(); } else if (SkillsChanged(skills)) { foreach (var skillConfiguration in skills) { CreateSkill(skillConfiguration.ConfigurationId.Id, skillConfiguration.ConfigurationId.DisplayName); } _skills = skills; CheckForDeleted(); } } } catch (Exception exception) { _logging.TraceException(exception, "SkillConfigurations Error"); } }
public static void upload(string filepath) { var data = Helpers.LoadCSV(filepath); // Map columns var mapper = new CSVMapper { DataTable = data }; if (mapper.map("name", new[] { "NAME", "ID", "DISPLAYNAME", "SKILL" }) == -1) { throw new ArgumentException("Name column not found", "name"); } mapper.map("workgroups", new[] { "WORKGROUP", "WORKGROUPS", "GROUP", "GROUPS" }); mapper.map("users", new[] { "USER", "USERS", "AGENT", "AGENTS" }); var configurations = new SkillConfigurationList(ConfigurationManager.GetInstance(Application.ICSession)); foreach (DataRow row in data.Rows) { SkillConfiguration skill = null; var name = row.Field <string>(mapper["name"]); if (string.IsNullOrWhiteSpace(name)) { continue; } if (!SkillConfigurations.Any(item => item.ConfigurationId.DisplayName == name)) { skill = configurations.CreateObject(); skill.SetConfigurationId(name); skill.SetDisplayName(name); } else { skill = SkillConfigurations.First(item => item.ConfigurationId.DisplayName == name); skill.PrepareForEdit(); } if (mapper["workgroups"] > -1) { skill.WorkgroupAssignments.Value.Clear(); Helpers.ParseManySkillSettings(row.Field <string>(mapper["workgroups"])).ForEach(x => skill.WorkgroupAssignments.Value.Add(x)); } if (mapper["users"] > -1) { skill.UserAssignments.Value.Clear(); Helpers.ParseManySkillSettings(row.Field <string>(mapper["users"])).ForEach(x => skill.UserAssignments.Value.Add(x)); } skill.Commit(); } _SkillConfigurations = null; // So the list is fetched again }
private void StartWatchingSkills() { try { if (_configurationManager != null && _configurationManager.Session != null && _configurationManager.Session.ConnectionState == ConnectionState.Up) { _skillConfigurationList = new SkillConfigurationList(_configurationManager); var querySettings = _skillConfigurationList.CreateQuerySettings(); querySettings.SetResultCountLimit(QueryResultLimit.Unlimited); //var properties = new List<SkillConfiguration.Property> //{ // SkillConfiguration.Property.Id, // SkillConfiguration.Property.DisplayName, // SkillConfiguration.Property.UserAssignments, // SkillConfiguration.Property.WorkgroupAssignments //}; //querySettings.SetPropertiesToRetrieve(properties); using (var repository = Repository) { if (!repository.Skills.Any()) { _skillConfigurationList.StartCaching(querySettings); var skills = _skillConfigurationList.GetConfigurationList(); _skillConfigurationList.StopCaching(); if (skills.Any()) { foreach (var skillConfiguration in skills) { CreateSkill(skillConfiguration.ConfigurationId.Id, skillConfiguration.ConfigurationId.DisplayName); } _skills = skills; } } } _skillConfigurationList.ConfigurationObjectsRemoved += Skills_ConfigurationObjectsRemoved; _skillConfigurationList.StartWatchingAsync(querySettings, Skills_StartOrRefreshWatchingCompleted, null); } } catch (Exception e) { _logging.TraceException(e, "SkillConfigurations Error"); } }
public void Unload() { try { if (_skillConfigurationList.IsWatching) { _skillConfigurationList.StopWatching(); } } catch (Exception) { } _skillConfigurationList = null; _configurationManager = null; }
public static Skill find_or_create(string name) { if (!SkillConfigurations.Any(item => item.ConfigurationId.DisplayName == name)) { try { var configurations = new SkillConfigurationList(ConfigurationManager.GetInstance(Application.ICSession)); var skill = configurations.CreateObject(); skill.SetConfigurationId(name); skill.SetDisplayName(name); skill.Commit(); _SkillConfigurations = null; // So the list is fetched again } catch (Exception e) { throw e; } } return(new Skill(SkillConfigurations.First(item => item.ConfigurationId.DisplayName == name))); }
public static Skill create(string name) { if (SkillConfigurations.Any(item => item.ConfigurationId.DisplayName == name)) { throw new DuplicateKeyException(name, string.Format("Skill {0} already exists", name)); } try { var configurations = new SkillConfigurationList(ConfigurationManager.GetInstance(Application.ICSession)); var skill = configurations.CreateObject(); skill.SetConfigurationId(name); skill.SetDisplayName(name); skill.Commit(); _SkillConfigurations = null; // So the list is fetched again } catch (Exception e) { throw e; } return(new Skill(SkillConfigurations.First(item => item.ConfigurationId.DisplayName == name))); }
public static void upload(string filepath) { var data = Helpers.LoadCSV(filepath); // Map columns var mapper = new CSVMapper { DataTable = data }; if (mapper.map("name", new[] { "NAME", "ID", "DISPLAYNAME", "SKILL" }) == -1) throw new ArgumentException("Name column not found", "name"); mapper.map("workgroups", new[] { "WORKGROUP", "WORKGROUPS", "GROUP", "GROUPS" }); mapper.map("users", new[] { "USER", "USERS", "AGENT", "AGENTS" }); var configurations = new SkillConfigurationList(ConfigurationManager.GetInstance(Application.ICSession)); foreach (DataRow row in data.Rows) { SkillConfiguration skill = null; var name = row.Field<string>(mapper["name"]); if (string.IsNullOrWhiteSpace(name)) continue; if (! SkillConfigurations.Any(item => item.ConfigurationId.DisplayName == name)) { skill = configurations.CreateObject(); skill.SetConfigurationId(name); skill.SetDisplayName(name); } else { skill = SkillConfigurations.First(item => item.ConfigurationId.DisplayName == name); skill.PrepareForEdit(); } if (mapper["workgroups"] > -1) { skill.WorkgroupAssignments.Value.Clear(); Helpers.ParseManySkillSettings(row.Field<string>(mapper["workgroups"])).ForEach(x => skill.WorkgroupAssignments.Value.Add(x)); } if (mapper["users"] > -1) { skill.UserAssignments.Value.Clear(); Helpers.ParseManySkillSettings(row.Field<string>(mapper["users"])).ForEach(x => skill.UserAssignments.Value.Add(x)); } skill.Commit(); } _SkillConfigurations = null; // So the list is fetched again }
public static Skill find_or_create(string name) { if (! SkillConfigurations.Any(item => item.ConfigurationId.DisplayName == name)) { try { var configurations = new SkillConfigurationList(ConfigurationManager.GetInstance(Application.ICSession)); var skill = configurations.CreateObject(); skill.SetConfigurationId(name); skill.SetDisplayName(name); skill.Commit(); _SkillConfigurations = null; // So the list is fetched again } catch(Exception e) { throw e; } } return new Skill(SkillConfigurations.First(item => item.ConfigurationId.DisplayName == name)); }
public static Skill create(string name) { if (SkillConfigurations.Any(item => item.ConfigurationId.DisplayName == name)) { throw new DuplicateKeyException(name, string.Format("Skill {0} already exists", name)); } try { var configurations = new SkillConfigurationList(ConfigurationManager.GetInstance(Application.ICSession)); var skill = configurations.CreateObject(); skill.SetConfigurationId(name); skill.SetDisplayName(name); skill.Commit(); _SkillConfigurations = null; // So the list is fetched again } catch(Exception e) { throw e; } return new Skill(SkillConfigurations.First(item => item.ConfigurationId.DisplayName == name)); }