コード例 #1
0
 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");
         }
 }
コード例 #2
0
        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
        }
コード例 #3
0
        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");
            }
        }
コード例 #4
0
 public void Unload()
 {
     try
     {
         if (_skillConfigurationList.IsWatching)
         {
             _skillConfigurationList.StopWatching();
         }
     }
     catch (Exception)
     {
     }
     _skillConfigurationList = null;
     _configurationManager   = null;
 }
コード例 #5
0
        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)));
        }
コード例 #6
0
        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)));
        }
コード例 #7
0
ファイル: Skill.cs プロジェクト: gildas/DialerNetAPIDemo
        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
        }
コード例 #8
0
ファイル: Skill.cs プロジェクト: gildas/DialerNetAPIDemo
        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));
        }
コード例 #9
0
ファイル: Skill.cs プロジェクト: gildas/DialerNetAPIDemo
        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));
        }