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); }
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); }
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); }
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); }