コード例 #1
0
        /// <summary>
        /// 获取所有队列,dbid>0时会带入查询条件
        /// </summary>
        public static List <Skill> GetSkills(int?dbid = null, string name = null)
        {
            var result = new List <Skill>();
            var dns    = new List <SwitcheVQ>();

            if (name == null)
            {
                dns = GetSwitcheDNs(name);
            }
            else
            {
                dns = GetSwitcheDNs("V" + name);
            }
            var icfg = OpenCfg();

            try
            {
                CfgSkillQuery query = new CfgSkillQuery(icfg);
                query.State = CfgObjectState.CFGEnabled;
                if (dbid.HasValue)
                {
                    query.Dbid = dbid.Value;
                }
                var skills = query.Execute();
                foreach (var item in skills.ToList())
                {
                    var info = new Skill()
                    {
                        DBID       = item.DBID,
                        Name       = item.Name,
                        ObjectPath = item.ObjectPath,
                        LastDate   = DateTime.Now,
                        LastValue  = 0,
                    };

                    if (info.Name.StartsWith("Q"))
                    {
                        var dn = dns.Where(x => x.DnName.ToLower() == ("V" + info.Name).ToLower()).FirstOrDefault();
                        if (dn != null)
                        {
                            info.Number     = dn.Number;
                            info.SwitchName = dn.SwitchName;
                            result.Add(info);
                        }
                    }
                    else if (info.Name.StartsWith("VQ"))
                    {
                        var dn = dns.Where(x => x.DnName.ToLower() == (info.Name).ToLower()).FirstOrDefault();
                        if (dn != null)
                        {
                            info.Number     = dn.Number;
                            info.SwitchName = dn.SwitchName;
                            result.Add(info);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                CloseCfg(icfg);
            }
            return(result);
        }
コード例 #2
0
ファイル: ComClass.cs プロジェクト: jkaran/ela_aid
        internal static OutputValues AddUpdateSkillToAgent(string operationType, string userName, string skillName, Int32 skillLevel)
        {
            OutputValues output = new OutputValues();

            try
            {
                CfgPersonQuery queryPerson = new CfgPersonQuery();
                queryPerson.UserName   = userName;
                queryPerson.TenantDbid = _configContainer.TenantDbId;

                CfgPerson person = _configContainer.ConfServiceObject.RetrieveObject <CfgPerson>(queryPerson);
                if (operationType == "Add")
                {
                    if (person != null)
                    {
                        ICollection <CfgSkillLevel> agentSkills = person.AgentInfo.SkillLevels;
                        bool flag = false;
                        foreach (CfgSkillLevel checkSkill in agentSkills)
                        {
                            if (checkSkill.Skill.Name == skillName)
                            {
                                flag = true;
                                break;
                            }
                        }
                        if (!flag)
                        {
                            CfgSkillQuery querySkill = new CfgSkillQuery();
                            querySkill.TenantDbid = _configContainer.TenantDbId;
                            querySkill.Name       = skillName;

                            CfgSkill skill = _configContainer.ConfServiceObject.RetrieveObject <CfgSkill>(querySkill);

                            CfgSkillLevel skillToAdd = new CfgSkillLevel(_configContainer.ConfServiceObject, person);
                            skillToAdd.Skill = skill;
                            skillToAdd.Level = Convert.ToInt32(skillLevel);

                            person.AgentInfo.SkillLevels.Add(skillToAdd);
                            person.Save();
                        }
                    }
                }
                else if (operationType == "Edit")
                {
                    if (person != null)
                    {
                        ICollection <CfgSkillLevel> agentSkills = person.AgentInfo.SkillLevels;
                        foreach (CfgSkillLevel editingSkill in agentSkills)
                        {
                            if (editingSkill.Skill.Name == skillName)
                            {
                                editingSkill.Level = Convert.ToInt32(skillLevel);
                                person.Save();
                                break;
                            }
                        }
                    }
                }
                output.MessageCode = "200";
                output.Message     = "Skill " + operationType + "ed Successfully.";
                person             = _configContainer.ConfServiceObject.RetrieveObject <CfgPerson>(queryPerson);

                if (person != null)
                {
                    //Update the skill level to MySkills
                    if (person.AgentInfo.SkillLevels != null && person.AgentInfo.SkillLevels.Count > 0)
                    {
                        Datacontext.GetInstance().MySkills.Clear();
                        foreach (CfgSkillLevel skill in person.AgentInfo.SkillLevels)
                        {
                            Datacontext.GetInstance().MySkills.Add(new Agent.Interaction.Desktop.Helpers.MySkills(skill.Skill.Name.ToString(), skill.Level));
                        }
                    }
                    else
                    {
                        Datacontext.GetInstance().MySkills.Clear();
                    }
                }
            }
            catch (Exception commonException)
            {
                output.MessageCode = "2001";
                output.Message     = (commonException.InnerException == null ? commonException.Message : commonException.InnerException.Message);
            }
            return(output);
        }