コード例 #1
0
        public void LoadDispostionCodes(string interactionID)
        {
            try
            {
                if (_chatDataContext.LoadDispositionCodes != null && _chatDataContext.LoadSubDispositionCodes != null)
                {
                    _chatDataContext.dicCMEObjects.Clear();
                    _chatDataContext.dicCMEObjects.Add("chat.disposition.codes", _chatDataContext.LoadDispositionCodes);
                    _chatDataContext.dicCMEObjects.Add("chat.subdisposition.codes", _chatDataContext.LoadSubDispositionCodes);
                    if (ConfigContainer.Instance().AllKeys.Contains("interaction.enable.multi-dispositioncode") && (((string)ConfigContainer.Instance().GetValue("interaction.enable.multi-dispositioncode")).ToLower().Equals("true")))
                    {
                        _chatDataContext.dicCMEObjects.Add("enable.multidisposition.enabled", true);
                    }
                    else
                    {
                        _chatDataContext.dicCMEObjects.Add("enable.multidisposition.enabled", false);
                    }
                    _chatDataContext.dicCMEObjects.Add("DispositionCodeKey", _chatDataContext.DisPositionKeyName);
                    if (ConfigContainer.Instance().AllKeys.Contains("interaction.disposition-object-name"))
                    {
                        _chatDataContext.dicCMEObjects.Add("DispositionName", (string)ConfigContainer.Instance().GetValue("interaction.disposition-object-name"));
                    }
                    else
                    {
                        _chatDataContext.dicCMEObjects.Add("DispositionName", string.Empty);
                    }
                    Pointel.Interactions.DispositionCodes.InteractionHandler.Listener _dispositionCodeListener = new Pointel.Interactions.DispositionCodes.InteractionHandler.Listener();
                    _dispositionCodeListener.NotifyCMEObjects(_chatDataContext.dicCMEObjects);
                    DispositionData disData = new DispositionData()
                    {
                        InteractionID = interactionID
                    };
                    _dispositionUC = _dispositionCodeListener.CreateUserControl();
                    _chatDataContext.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.Chat, disData);

                    if (_dispositionUC != null)
                    {
                        if (!_dispositionUserControls.ContainsKey(interactionID))
                        {
                            _dispositionUserControls.Add(interactionID, _dispositionUC);
                        }
                        else
                        {
                            _dispositionUserControls[interactionID] = _dispositionUC;
                        }
                        stpDispCodelist.Children.Add(_dispositionUC);
                    }
                    isFirstTimeCall = false;
                }
            }
            catch (Exception generalException)
            {
                _logger.Error("Error Occurred as LoadDispostionCodes() :" + generalException.Message);
            }
        }
コード例 #2
0
        /// <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());
            }
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
        /// <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;
            }
        }