Пример #1
0
        public CfgEnumeratorValue GetBusinessAttribute(string bussinessAttributeName, string attributeValueName)
        {
            if (string.IsNullOrEmpty(bussinessAttributeName))
            {
                throw new Exception("The business attribute name is null or empty.");
            }

            CfgEnumeratorValue objBusinessAttribute = null;

            try
            {
                if (ConfigContainer.Instance().ConfServiceObject != null)
                {
                    CfgEnumeratorQuery enumQuery = new CfgEnumeratorQuery();
                    enumQuery.TenantDbid = ConfigContainer.Instance().TenantDbId;
                    enumQuery.Name       = bussinessAttributeName;
                    CfgEnumerator enumarator = ConfigContainer.Instance().ConfServiceObject.RetrieveObject <CfgEnumerator>(enumQuery);
                    if (enumarator != null)
                    {
                        CfgEnumeratorValueQuery enumaeratorValueQuery = new CfgEnumeratorValueQuery();
                        enumaeratorValueQuery.EnumeratorDbid = enumarator.DBID;
                        enumaeratorValueQuery.Name           = attributeValueName;
                        objBusinessAttribute = ConfigContainer.Instance().ConfServiceObject.RetrieveObject <CfgEnumeratorValue>(enumaeratorValueQuery);
                    }
                }
            }
            catch (Exception generalException)
            {
                _logger.Error("Error occurred as " + generalException.Message);
            }
            return(objBusinessAttribute);
        }
Пример #2
0
        public KeyValueCollection ReadBusinessAttribuiteConfig(IConfService configService, int tenantDBID, string attributeName, string attributeValueName)
        {
            try
            {
                logger.Info("ReadBusinessAttribuiteConfig : Reading Business Attribute Configurations.............");
                logger.Info("ReadBusinessAttribuiteConfig : Business Attribute Name : " + attributeName);
                logger.Info("ReadBusinessAttribuiteConfig : Business Attribute Value Name : " + attributeValueName);
                logger.Info("ReadBusinessAttribuiteConfig : Tenant DBID : " + tenantDBID.ToString());

                if (configService != null)
                {
                    CfgEnumeratorQuery enumeratorQuery = new CfgEnumeratorQuery();
                    enumeratorQuery.TenantDbid = tenantDBID;
                    enumeratorQuery.Name       = attributeName;

                    CfgEnumerator _cfgEnumerator = configService.RetrieveObject <CfgEnumerator>(enumeratorQuery);

                    if (_cfgEnumerator != null)
                    {
                        CfgEnumeratorValueQuery enumeratorValueQuery = new CfgEnumeratorValueQuery();
                        enumeratorValueQuery.EnumeratorDbid = _cfgEnumerator.DBID;
                        enumeratorValueQuery.Name           = attributeValueName;
                        CfgEnumeratorValue _cfgEnumeratorValue = configService.RetrieveObject <CfgEnumeratorValue>(enumeratorValueQuery);
                        if (_cfgEnumeratorValue != null)
                        {
                            logger.Info("ReadBusinessAttribuiteConfig : Configuration Data : " + Convert.ToString(_cfgEnumeratorValue.UserProperties));
                            return(_cfgEnumeratorValue.UserProperties);
                        }
                        else
                        {
                            logger.Info("ReadBusinessAttribuiteConfig : Reading Business Attribute Value " + attributeValueName + " Failed ");
                        }
                    }
                    else
                    {
                        logger.Info("ReadBusinessAttribuiteConfig : Reading Business Attribute " + attributeName + " Failed ");
                    }
                }
                else
                {
                    logger.Info("ReadBusinessAttribuiteConfig : Can not read Business Attribute " + attributeName + ", because ConfService Object is null ");
                }
            }
            catch (Exception generalException)
            {
                this.logger.Error("ReadBusinessAttribuiteConfig : Error occurred while reading Business Attribute Configuration :" + generalException.ToString());
            }
            return(null);
        }
Пример #3
0
        public List <RequeueSkills> RetrieveRequeueSkillSet(string businessAttributeFullPath)
        {
            var _dataContext      = Datacontext.GetInstance();
            var listRequeueSkills = new List <RequeueSkills>();

            if (businessAttributeFullPath == "$AllSkills$")
            {
                foreach (var item in _dataContext.LoadAllSkills)
                {
                    listRequeueSkills.Add(new RequeueSkills()
                    {
                        Skill = item, Value = item
                    });
                }
            }
            else if (!string.IsNullOrEmpty(businessAttributeFullPath) && businessAttributeFullPath.Contains("/"))
            {
                string[] attribName = businessAttributeFullPath.Split('/');
                if (attribName.Length == 2)
                {
                    ConfigManager      objConfigManager     = new ConfigManager();
                    CfgEnumeratorValue objBusinessAttribute = objConfigManager.GetBusinessAttribute(attribName[0], attribName[1]);
                    if (objBusinessAttribute != null && objBusinessAttribute.UserProperties != null)
                    {
                        foreach (var item in objBusinessAttribute.UserProperties.AllKeys)
                        {
                            var conditionData = objBusinessAttribute.UserProperties.GetAsKeyValueCollection(item.ToString());
                            foreach (var key in conditionData.AllKeys)
                            {
                                var requeueSkills = new RequeueSkills();
                                requeueSkills.Category = item.ToString();
                                requeueSkills.Value    = key.ToString();
                                requeueSkills.Skill    = conditionData[key].ToString();
                                listRequeueSkills.Add(requeueSkills);
                            }
                        }
                        //return listRequeueSkills;
                    }
                }
            }
            if (listRequeueSkills.Count == 0)
            {
                listRequeueSkills.Add(new RequeueSkills()
                {
                    Skill = "None", Value = "None", Category = "None"
                });
            }
            return(listRequeueSkills);
        }
Пример #4
0
        public List <IQMenuItem> LoadIQ()
        {
            List <IQMenuItem> lstIQ = new List <IQMenuItem>();
            bool isSelected         = false;

            try
            {
                //Getting filter names
                string[] filters = ConfigContainer.Instance().GetAsString("interaction-management.filters").Split(',');

                foreach (var filter in filters)
                {
                    // Read the filter section and add it in ConfigContainer(CME)
                    if (!ConfigContainer.Instance().AllKeys.Contains(filter))
                    {
                        ConfigContainer.Instance().ReadSection(filter);
                    }

                    // Add the filter if it has display name, proper condition and category
                    if (ConfigContainer.Instance().AllKeys.Contains(filter) && ConfigContainer.Instance().GetValue(filter) != null)
                    {
                        var readSection = (KeyValueCollection)ConfigContainer.Instance().GetValue(filter);

                        // Check category is empty or not
                        if (readSection.AllKeys.Contains("category") && !string.IsNullOrEmpty(readSection.GetAsString("category")))
                        {
                            bool isAddCategoryinList = true;
                            // Check Category is already exist or not
                            var categoryMenu = lstIQ.Where(x => x.DisplayName == readSection["category"].ToString() &&
                                                           x.IQTYPE == Pointel.Interaction.Workbin.Helpers.IQTYPES.Category).FirstOrDefault();

                            if (categoryMenu == null)
                            {
                                //Add new Category menu item
                                categoryMenu = new IQMenuItem()
                                {
                                    DisplayName = readSection["category"].ToString(),
                                    IQTYPE      = Pointel.Interaction.Workbin.Helpers.IQTYPES.Category,
                                    ImagePath   = "/Agent.Interaction.Desktop;component/Images/DefaultFolder.png"
                                };
                            }
                            else
                            {
                                isAddCategoryinList = false;
                            }


                            // Check display name is empty or not
                            if (readSection.AllKeys.Contains("display-name") && readSection["display-name"] != null && !string.IsNullOrEmpty(readSection["display-name"].ToString()))
                            {
                                // Check condition is empty or not
                                if (readSection.AllKeys.Contains("condition") && readSection["condition"] != null && !string.IsNullOrEmpty(readSection["condition"].ToString()))
                                {
                                    // Check queues is empty or not
                                    if (readSection.AllKeys.Contains("queues") && readSection["queues"] != null && !string.IsNullOrEmpty(readSection["queues"].ToString()))
                                    {
                                        bool isAddConditioninList = true;
                                        // Check condition menu is already exist or not
                                        IQMenuItem conditionMenu = null;
                                        if (lstIQ.Count > 0 && !isAddCategoryinList)
                                        {
                                            conditionMenu = categoryMenu.Items.Where(x => x.DisplayName == readSection["display-name"].ToString() &&
                                                                                     x.IQTYPE == Pointel.Interaction.Workbin.Helpers.IQTYPES.Condition &&
                                                                                     x.ImagePath == "/Agent.Interaction.Desktop;component/Images/DefaultFolder.png" &&
                                                                                     x.Category == readSection["category"].ToString())
                                                            .FirstOrDefault();
                                        }
                                        if (conditionMenu == null)
                                        {
                                            //Add new condition menu item
                                            conditionMenu = new IQMenuItem()
                                            {
                                                DisplayName = readSection["display-name"].ToString(),
                                                IQTYPE      = Pointel.Interaction.Workbin.Helpers.IQTYPES.Condition,
                                                ImagePath   = "/Agent.Interaction.Desktop;component/Images/DefaultFolder.png",
                                                Category    = readSection["category"].ToString()
                                            };
                                        }
                                        else
                                        {
                                            isAddConditioninList = false;
                                        }

                                        string[] queues = readSection["queues"].ToString().Split(',');
                                        foreach (var queue in queues)
                                        {
                                            if (!string.IsNullOrEmpty(queue.Trim()) && IsValidQueue(queue))
                                            {
                                                if (lstIQ.Count > 0)
                                                {
                                                    // Check the condition is already exist or not
                                                    bool IsIQConditionAlreadyExist = lstIQ.Where(
                                                        x => x.Items.Where(y => y.Items.Where(z => z.Condition == readSection.GetAsString("condition") + " AND Queue='" + queue + "'"
                                                                                              ).ToList().Count > 0).ToList().Count > 0).ToList().Count > 0;


                                                    if (IsIQConditionAlreadyExist)
                                                    {
                                                        continue;
                                                    }
                                                }

                                                //Add new queue menu item
                                                IQMenuItem queueMenu = new IQMenuItem()
                                                {
                                                    DisplayName = queue,
                                                    IQTYPE      = Pointel.Interaction.Workbin.Helpers.IQTYPES.Queue,
                                                    ImagePath   = "/Agent.Interaction.Desktop;component/Images/Queue.png",
                                                    Condition   = readSection["condition"].ToString() + " AND Queue='" + queue + "'"
                                                };

                                                // Add Displayed Coloumns to queue if exist
                                                if (readSection.AllKeys.Contains("displayed-columns") && readSection["displayed-columns"] != null && !string.IsNullOrEmpty(readSection["displayed-columns"].ToString()))
                                                {
                                                    queueMenu.DisplayedColoumns = readSection["displayed-columns"].ToString();
                                                }

                                                // Add Bussiness Attribute name for filtering case data to queue if exist
                                                if (readSection.AllKeys.Contains("case-data.business-attribute") && !string.IsNullOrEmpty(readSection["case-data.business-attribute"].ToString()))
                                                {
                                                    queueMenu.CaseDataBussinessAttribute = readSection["case-data.business-attribute"].ToString();
                                                    queueMenu.CaseDataToFilter           = new List <string>();
                                                    ConfigManager objConfigManager = new ConfigManager();
                                                    if (ConfigContainer.Instance().AllKeys.Contains("interaction.casedata-object-name"))
                                                    {
                                                        CfgEnumeratorValue objBusinessAttribute = objConfigManager.GetBusinessAttribute(
                                                            ConfigContainer.Instance().GetAsString("interaction.casedata-object-name"), queueMenu.CaseDataBussinessAttribute);
                                                        if (objBusinessAttribute != null && objBusinessAttribute.UserProperties.ContainsKey("case-data-filter"))
                                                        {
                                                            foreach (string value in objBusinessAttribute.UserProperties.GetAsKeyValueCollection("case-data-filter").AllValues)
                                                            {
                                                                queueMenu.CaseDataToFilter.Add(value);
                                                            }
                                                        }
                                                    }
                                                }
                                                else // Suppose the case data not configured need to read from parent business attribute key.
                                                {
                                                }

                                                // Add Quick Search Attributes to queue if exist
                                                if (readSection.AllKeys.Contains("quick-search-attributes") && readSection["quick-search-attributes"] != null && !string.IsNullOrEmpty(readSection["quick-search-attributes"].ToString()))
                                                {
                                                    queueMenu.QuickSearchAttributes = readSection["quick-search-attributes"].ToString();
                                                }

                                                if (!isSelected)
                                                {
                                                    queueMenu.IsSelected = true;
                                                }

                                                conditionMenu.Items.Add(queueMenu);
                                            }
                                        }
                                        if (isAddConditioninList && conditionMenu.Items != null && conditionMenu.Items.Count > 0)
                                        {
                                            if (!isSelected)
                                            {
                                                categoryMenu.IsExpanded  = true;
                                                conditionMenu.IsExpanded = true;
                                                isSelected = true;
                                            }
                                            categoryMenu.Items.Add(conditionMenu);
                                        }
                                    }
                                    else
                                    {
                                        if (lstIQ.Count > 0)
                                        {
                                            // Check the condition is already exist or not
                                            bool IsIQItemAlreadyExist = lstIQ.Where(
                                                x => x.Items.Where(
                                                    y => y.Condition == readSection.GetAsString("condition")
                                                    ).ToList().Count > 0).ToList().Count > 0;


                                            if (IsIQItemAlreadyExist)
                                            {
                                                goto NextFilter;
                                            }
                                        }

                                        //Add new condition menu item
                                        IQMenuItem conditionMenu = new IQMenuItem()
                                        {
                                            DisplayName = readSection["display-name"].ToString(),
                                            IQTYPE      = Pointel.Interaction.Workbin.Helpers.IQTYPES.Condition,
                                            Category    = readSection["category"].ToString()
                                        };

                                        conditionMenu.ImagePath = "/Agent.Interaction.Desktop;component/Images/DefaultFile.png";
                                        conditionMenu.Condition = readSection["condition"].ToString();

                                        // Add Displayed Coloumns to condition if exist
                                        if (readSection.AllKeys.Contains("displayed-columns") && readSection["displayed-columns"] != null && !string.IsNullOrEmpty(readSection["displayed-columns"].ToString()))
                                        {
                                            conditionMenu.DisplayedColoumns = readSection["displayed-columns"].ToString();
                                        }

                                        // Add Bussiness Attribute name for filtering case data to condition if exist
                                        if (readSection.AllKeys.Contains("case-data.business-attribute") && readSection["case-data.business-attribute"] != null && !string.IsNullOrEmpty(readSection["case-data.business-attribute"].ToString()))
                                        {
                                            conditionMenu.CaseDataBussinessAttribute = readSection["case-data.business-attribute"].ToString();
                                        }

                                        // Add Quick Search Attributes to condition if exist
                                        if (readSection.AllKeys.Contains("quick-search-attributes") && readSection["quick-search-attributes"] != null && !string.IsNullOrEmpty(readSection["quick-search-attributes"].ToString()))
                                        {
                                            conditionMenu.QuickSearchAttributes = readSection["quick-search-attributes"].ToString();
                                        }

                                        if (!isSelected)
                                        {
                                            conditionMenu.IsSelected = true;
                                            categoryMenu.IsExpanded  = true;
                                            isSelected = true;
                                        }

                                        categoryMenu.Items.Add(conditionMenu);
                                    }
                                    if (isAddCategoryinList && categoryMenu.Items != null && categoryMenu.Items.Count > 0)
                                    {
                                        lstIQ.Add(categoryMenu);
                                    }
                                }
                                else
                                {
                                    goto NextFilter; // No Condition
                                }
                            }
                            else
                            {
                                goto NextFilter; // No Display Name
                            }
                        }
                        else
                        {
                            goto NextFilter;  // No Category
                        }
                    }
NextFilter:
                    continue;
                }
            }
            catch (Exception generalException)
            {
                _logger.Error("Error occurred as :" + generalException.ToString());
            }
            return(lstIQ);
        }
        private static Dictionary <string, string> GetDynamicStatsConfiguration(string businessAttributeName, string dynamicStatName)
        {
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            try
            {
                CfgEnumeratorQuery cfgEnumeratorQuery = new CfgEnumeratorQuery();
                cfgEnumeratorQuery.Name       = businessAttributeName;
                cfgEnumeratorQuery.TenantDbid = ConfigContainer.Instance().TenantDbId;
                CfgEnumerator dynamicStatBusinessAttribute = ConfigContainer.Instance().ConfServiceObject.RetrieveObject <CfgEnumerator>(cfgEnumeratorQuery);
                if (dynamicStatBusinessAttribute == null)
                {
                    return(null);
                }
                CfgEnumeratorValueQuery dynamicStatQuery = new CfgEnumeratorValueQuery();
                dynamicStatQuery.EnumeratorDbid = dynamicStatBusinessAttribute.DBID;
                ICollection <CfgEnumeratorValue> dynamicStats = ConfigContainer.Instance().ConfServiceObject.RetrieveMultipleObjects <CfgEnumeratorValue>(dynamicStatQuery);
                if (dynamicStats == null || dynamicStats.Count <= 0)
                {
                    return(null);
                }


                if (string.IsNullOrEmpty(dynamicStatName))
                {
                    return(null);
                }
                CfgEnumeratorValue teamCommunicatorStatistics = dynamicStats.Where(item => item.Name.Equals(dynamicStatName)).FirstOrDefault();
                if (teamCommunicatorStatistics == null || teamCommunicatorStatistics.UserProperties == null || teamCommunicatorStatistics.UserProperties.Count == 0)
                {
                    return(null);
                }

                string teamCommunicatorStatisticsName = string.Empty;
                if (ConfigContainer.Instance().AllKeys.Contains("teamcommunicator.agent.statistics.name") &&
                    !string.IsNullOrEmpty((string)ConfigContainer.Instance().GetValue("teamcommunicator.agent.statistics.name")))
                {
                    teamCommunicatorStatisticsName = (string)ConfigContainer.Instance().GetValue("teamcommunicator.agent.statistics.name");
                }

                if (!teamCommunicatorStatistics.UserProperties.AllKeys.Contains(teamCommunicatorStatisticsName))
                {
                    return(null);
                }
                KeyValueCollection kvColl = (KeyValueCollection)teamCommunicatorStatistics.UserProperties[teamCommunicatorStatisticsName];

                if (kvColl == null || kvColl.Count <= 0)
                {
                    return(null);
                }
                dictionary.Clear();
                if (kvColl.ContainsKey("Filter"))
                {
                    dictionary.Add("Filter", kvColl["Filter"].ToString());
                }
                if (kvColl.ContainsKey("Category"))
                {
                    dictionary.Add("Category", kvColl["Category"].ToString());
                }
                if (kvColl.ContainsKey("MainMask"))
                {
                    dictionary.Add("MainMask", kvColl["MainMask"].ToString());
                }
                if (kvColl.ContainsKey("RelMask"))
                {
                    dictionary.Add("RelMask", kvColl["RelMask"].ToString());
                }
                if (kvColl.ContainsKey("Subject"))
                {
                    dictionary.Add("Subject", kvColl["Subject"].ToString());
                }
            }
            catch (Exception generalException)
            {
                _logger.Error(((generalException.InnerException == null) ? generalException.Message.ToString() : generalException.InnerException.ToString()));
            }
            return(dictionary);
        }