/// <summary> /// Loads the dispostion codes. /// </summary> /// <param name="interactionID">The interaction identifier.</param> public void LoadDispostionCodes(string interactionID) { try { if (ConfigContainer.Instance().AllKeys.Contains("email.disposition.codes") && ConfigContainer.Instance().GetValue("email.disposition.codes") != null) //if (EmailDataContext.GetInstance().DispositonCodes != null && EmailDataContext.GetInstance().LoadSubDispositionCodes != null) { Dictionary <string, object> dicCMEObjects = new Dictionary <string, object>(); Dictionary <string, string> tempDisposition = new Dictionary <string, string>(); Dictionary <string, Dictionary <string, string> > subDisposition = new Dictionary <string, Dictionary <string, string> >(); dicCMEObjects.Clear(); if (ConfigContainer.Instance().AllKeys.Contains("email.subdisposition.codes") && ConfigContainer.Instance().GetValue("email.subdisposition.codes") != null) { subDisposition = (Dictionary <string, Dictionary <string, string> >)ConfigContainer.Instance().GetValue("email.subdisposition.codes"); } tempDisposition = (Dictionary <string, string>)ConfigContainer.Instance().GetValue("email.disposition.codes"); dicCMEObjects.Add("email.disposition.codes", tempDisposition); dicCMEObjects.Add("email.subdisposition.codes", subDisposition); dicCMEObjects.Add("enable.multidisposition.enabled", (ConfigContainer.Instance().AllKeys.Contains("interaction.enable.multi-dispositioncode") && ((string)ConfigContainer.Instance().GetValue("interaction.enable.multi-dispositioncode")).ToLower().Equals("true")) ? true : false); dicCMEObjects.Add("DispositionCodeKey", (ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty)); dicCMEObjects.Add("DispositionName", (ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-object-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-object-name") : string.Empty)); stpDispCodelist.Children.Clear(); if (tempDisposition.Count <= 0) { tabitemDisposition.Visibility = Visibility.Collapsed; return; } Pointel.Interactions.DispositionCodes.InteractionHandler.Listener _dispositionCodeListener = new Pointel.Interactions.DispositionCodes.InteractionHandler.Listener(); _dispositionCodeListener.NotifyCMEObjects(dicCMEObjects); DispositionData disData = new DispositionData() { InteractionID = interactionID }; _dispositionUC = _dispositionCodeListener.CreateUserControl(); DispositionObjCollection = new KeyValuePair <string, object>("DispositionObj", _dispositionUC); stpDispCodelist.Children.Clear(); _dispositionUC.NotifyDispositionCodeEvent += new Pointel.Interactions.DispositionCodes.UserControls.Disposition.NotifyDispositionCode(NotifyDispositionCodeEvent); _dispositionUC.Dispositions(Pointel.Interactions.IPlugins.MediaTypes.Email, disData); if (_dispositionUC != null) { if (!_dispositionUserControls.ContainsKey(interactionID)) { _dispositionUserControls.Add(interactionID, _dispositionUC); } else { _dispositionUserControls[interactionID] = _dispositionUC; } stpDispCodelist.Children.Add(_dispositionUC); //Reload selected disposition code if (CurrentData.ContainsKey((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty)) || CurrentData.ContainsKey((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty))) { Dictionary <string, string> dispositionTree = new Dictionary <string, string>(); //if (DispositionObjCollection.Value != null) //{ // var dispositionObject = (Pointel.Interactions.DispositionCodes.UserControls.Disposition) // DispositionObjCollection.Value; if (CurrentData.ContainsKey((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty))) { if (!string.IsNullOrEmpty(CurrentData[(ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty)].ToString())) { dispositionTree = CurrentData[(ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty)].ToString().Split(';').Select(s => s.Split(':')).ToDictionary(a => a[0].Trim().ToString(), a => a[1].Trim().ToString()); } } if (CurrentData.ContainsKey((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty))) { if (!string.IsNullOrEmpty(CurrentData[(ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty)].ToString())) { dispositionTree.Add((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty), CurrentData[(ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty)].ToString()); } } if (dispositionTree.Count > 0) { _dispositionUC.ReLoadDispositionCodes(dispositionTree, interactionId); } //} } } } isFirstTimeCall = false; } catch (Exception ex) { logger.Error("LoadDispostionCodes(): " + ex.Message); } }
/// <summary> /// Notifies the disposition code event. /// </summary> /// <param name="mediaType">Type of the media.</param> /// <param name="data">The data.</param> public void NotifyDispositionCodeEvent(MediaTypes mediaType, DispositionData data) { try { if (mediaType == MediaTypes.Email) { if (CurrentData.ContainsKey((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty))) { if (isFirstTimeCall) { isFirstTimeCall = false; Dictionary <string, string> dispositionCode = new Dictionary <string, string>(); dispositionCode.Add(ConfigContainer.Instance().GetValue("interaction.disposition.key-name"), CurrentData[(ConfigContainer.Instance().GetValue("interaction.disposition.key-name"))]); _dispositionUC.ReLoadDispositionCodes(dispositionCode, interactionId); } else { string originalValue = CurrentData[(ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty)].ToString(); if (data.DispostionCode != originalValue) { KeyValueCollection caseData = new KeyValueCollection(); caseData.Add((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty), data.DispostionCode); InteractionService service = new InteractionService(); Pointel.Interactions.Core.Common.OutputValues result = service.UpdateCaseDataProperties(interactionId, EmailDataContext.GetInstance().ProxyClientID, caseData); if (result.MessageCode == "200") { CurrentData[(ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty)] = data.DispostionCode; } caseData.Clear(); } } } else { KeyValueCollection caseData = new KeyValueCollection(); caseData.Add((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty), data.DispostionCode); InteractionService service = new InteractionService(); Pointel.Interactions.Core.Common.OutputValues result = service.AddCaseDataProperties(interactionId, EmailDataContext.GetInstance().ProxyClientID, caseData); if (result.MessageCode == "200") { CurrentData.Add((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition.key-name") : string.Empty), data.DispostionCode); } caseData.Clear(); } if (CurrentData.ContainsKey((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty))) { string originalValue = CurrentData[(ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty)].ToString(); if (data.DispostionCode != originalValue) { string result = string.Join("; ", data.DispostionCollection.Select(x => string.Format("{0}:{1}", x.Key, x.Value)).ToArray()); KeyValueCollection caseData = new KeyValueCollection(); caseData.Add((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty), result); InteractionService service = new InteractionService(); Pointel.Interactions.Core.Common.OutputValues output = service.UpdateCaseDataProperties(interactionId, EmailDataContext.GetInstance().ProxyClientID, caseData); if (output.MessageCode == "200") { CurrentData[(ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty)] = result; } caseData.Clear(); } } else { KeyValueCollection caseData = new KeyValueCollection(); string result = string.Join("; ", data.DispostionCollection.Select(x => string.Format("{0}:{1}", x.Key, x.Value)).ToArray()); caseData.Add((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty), result); InteractionService service = new InteractionService(); Pointel.Interactions.Core.Common.OutputValues output = service.AddCaseDataProperties(interactionId, EmailDataContext.GetInstance().ProxyClientID, caseData); if (output.MessageCode == "200") { CurrentData.Add((ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-collection.key-name") ? (string)ConfigContainer.Instance().GetValue("interaction.disposition-collection.key-name") : string.Empty), result); } caseData.Clear(); } ConvertUserData(); } } catch (Exception generalException) { logger.Error("Error occurred as " + generalException.ToString()); } }
/// <summary> /// Notifies the disposition code event. /// </summary> /// <param name="mediaType">Type of the media.</param> /// <param name="data">The data.</param> public void NotifyDispositionCodeEvent(MediaTypes mediaType, DispositionData data) { var chatMedia = new ChatMedia(); try { if (mediaType == MediaTypes.Chat) { if (_chatUtil.UserData.ContainsKey(_chatDataContext.DisPositionKeyName)) { if (isFirstTimeCall) { isFirstTimeCall = false; Dictionary <string, string> dispositionCode = new Dictionary <string, string>(); dispositionCode.Add(_chatDataContext.DisPositionKeyName, _chatUtil.UserData[_chatDataContext.DisPositionKeyName].ToString()); _dispositionUC.ReLoadDispositionCodes(dispositionCode, _interactionID); } else { string originalValue = string.Empty; if (_chatUtil.UserData.ContainsKey(_chatDataContext.DisPositionKeyName)) { originalValue = _chatUtil.UserData[_chatDataContext.DisPositionKeyName].ToString(); } if (data.DispostionCode != originalValue) { KeyValueCollection caseData = new KeyValueCollection(); caseData.Add(_chatDataContext.DisPositionKeyName, data.DispostionCode); OutputValues output = chatMedia.DoUpdateCaseDataProperties(_interactionID, _chatUtil.ProxyId, caseData); if (output.MessageCode == "200") { _chatUtil.UserData.Remove(_chatDataContext.DisPositionKeyName); _chatUtil.UserData.Add(_chatDataContext.DisPositionKeyName, data.DispostionCode); ObservableCollection <Pointel.Interactions.Chat.Helpers.IChatCaseData> tempCaseData = _chatUtil.NotifyCaseData; int position1 = tempCaseData.IndexOf(tempCaseData.Where(p => p.Key == _chatDataContext.DisPositionKeyName).FirstOrDefault()); _chatUtil.NotifyCaseData.RemoveAt(position1); _chatUtil.NotifyCaseData.Insert(position1, new ChatCaseData(_chatDataContext.DisPositionKeyName, data.DispostionCode)); NotifyDispositionToSFDC(_chatDataContext.DisPositionKeyName, data.DispostionCode); } caseData.Clear(); caseData = null; } } } else { KeyValueCollection caseData = new KeyValueCollection(); caseData.Add(_chatDataContext.DisPositionKeyName, data.DispostionCode); OutputValues output = chatMedia.DoAddCaseDataProperties(_interactionID, _chatUtil.ProxyId, caseData); if (output.MessageCode == "200") { _chatUtil.UserData.Add(_chatDataContext.DisPositionKeyName, data.DispostionCode); _chatUtil.NotifyCaseData.Add(new ChatCaseData(_chatDataContext.DisPositionKeyName, data.DispostionCode)); NotifyDispositionToSFDC(_chatDataContext.DisPositionKeyName, data.DispostionCode); } caseData.Clear(); caseData = null; } if (_chatUtil.UserData.ContainsKey(_chatDataContext.DispositionCollectionKeyName)) { string originalValue = _chatUtil.UserData[_chatDataContext.DispositionCollectionKeyName].ToString(); if (data.DispostionCode != originalValue) { string result = string.Join("; ", data.DispostionCollection.Select(x => string.Format("{0}:{1}", x.Key, x.Value)).ToArray()); if (!string.IsNullOrEmpty(result)) { KeyValueCollection caseData = new KeyValueCollection(); caseData.Add(_chatDataContext.DispositionCollectionKeyName, result); OutputValues output = chatMedia.DoUpdateCaseDataProperties(_interactionID, _chatUtil.ProxyId, caseData); if (output.MessageCode == "200") { _chatUtil.UserData.Remove(_chatDataContext.DispositionCollectionKeyName); _chatUtil.UserData.Add(_chatDataContext.DispositionCollectionKeyName, result); ObservableCollection <Pointel.Interactions.Chat.Helpers.IChatCaseData> tempCaseData = _chatUtil.NotifyCaseData; int position1 = tempCaseData.IndexOf(tempCaseData.Where(p => p.Key == _chatDataContext.DispositionCollectionKeyName).FirstOrDefault()); _chatUtil.NotifyCaseData.RemoveAt(position1); _chatUtil.NotifyCaseData.Insert(position1, new ChatCaseData(_chatDataContext.DispositionCollectionKeyName, result)); } caseData.Clear(); caseData = null; } } } else { KeyValueCollection caseData = new KeyValueCollection(); string result = string.Join("; ", data.DispostionCollection.Select(x => string.Format("{0}:{1}", x.Key, x.Value)).ToArray()); if (!string.IsNullOrEmpty(result)) { caseData.Add(_chatDataContext.DispositionCollectionKeyName, result); OutputValues output = chatMedia.DoAddCaseDataProperties(_interactionID, _chatUtil.ProxyId, caseData); if (output.MessageCode == "200") { _chatUtil.UserData.Add(_chatDataContext.DispositionCollectionKeyName, result); _chatUtil.NotifyCaseData.Add(new ChatCaseData(_chatDataContext.DispositionCollectionKeyName, result)); } caseData.Clear(); caseData = null; } } if (data.DispostionCode == "None") { _chatUtil.IsDispositionSelected = false; } else { _chatUtil.IsDispositionSelected = true; } } } catch (Exception generalException) { _logger.Error("Error occurred while NotifyDispositionCodeEvent(): " + generalException.ToString()); _chatUtil.IsDispositionSelected = false; } finally { chatMedia = null; } }