public List <ScreenPopOptions> GetReasonByCode(int profileID, ReasonCodes reasoncode)
        {
            ScreenPopConfig         wrapupreason = GetScreenConfigByProfileId(profileID);
            List <ScreenPopOptions> opts         = new List <ScreenPopOptions>();

            if (wrapupreason.ScreenPopOptionsList != null)
            {
                switch (reasoncode)
                {
                case ReasonCodes.AUXReason:
                    if (wrapupreason.AUXReasonEnabled)
                    {
                        opts = wrapupreason.ScreenPopOptionsList.Where(reason => reason.Type == (int)reasoncode).ToList();
                    }
                    break;

                case ReasonCodes.LogoutReason:
                    if (wrapupreason.LogoutReasonEnabled)
                    {
                        opts = wrapupreason.ScreenPopOptionsList.Where(reason => reason.Type == (int)reasoncode).ToList();
                    }
                    break;

                case ReasonCodes.WrapupReason:
                    if (wrapupreason.WrapupReasonEnabled)
                    {
                        opts = wrapupreason.ScreenPopOptionsList.Where(reason => reason.Type == (int)reasoncode).ToList();
                    }
                    break;
                }
            }
            return(opts);
        }
        public ScreenPopConfig GetScreenConfigByProfileId(int profileid)
        {
            ScreenPopConfig list = GetScreenConfigByProfile(profileid);

            if (list != null)
            {
                list.ScreenPopOptionsList = new List <ScreenPopOptions>(GetObjects <ScreenPopOptions>(string.Format("where ScreenPopConfigID={0}", list.ID))).ToList();
            }
            else
            {
                list = new ScreenPopConfig();
                list.CanScreenPop             = false;
                list.DefaultWorkSpace         = "";
                list.ChatDefaultWorkspace     = "";
                list.IncidentDefaultWorkspace = "";
                list.ProfileId            = profileid;
                list.IsDefault            = true;
                list.ScreenPopOptionsList = null;
                list.AutoRecieve          = false;
                list.VoiceScreenPop       = false;
                list.ChatScreenPop        = false;
                list.IncidentScreenPop    = false;
            }
            return(list);
        }
Exemple #3
0
        public void SaveAgentConfigData(ScreenPopConfig screenPopConfigData)
        {
            try
            {
                Logger.Logger.Log.Debug(string.Format("ScreenPopProviders: {0}", screenPopConfigData));
                if (screenPopConfigData.ProfileId == 0 || (screenPopConfigData.ProfileId > 0 && !screenPopConfigData.IsDefault))
                {
                    ScreenPopConfig screenPopConfiguration = _rightNowObjectProvider.GetObject <ScreenPopConfig>(string.Format("where ProfileID={0}", screenPopConfigData.ProfileId));
                    CreateResponse  createResponse         = null;
                    UpdateResponse  updateResponse         = null;
                    long            screenPopConfigId      = 0;
                    if (screenPopConfiguration == null)
                    {
                        createResponse = _rightNowObjectProvider.CreateObject <ScreenPopConfig>(screenPopConfigData);
                        RNObject[] results = createResponse.RNObjectsResult;
                        if (results.Count() > 0)
                        {
                            screenPopConfigId = results[0].ID.id;
                        }
                    }
                    else
                    {
                        updateResponse    = _rightNowObjectProvider.UpdateObject <ScreenPopConfig>(screenPopConfigData, screenPopConfiguration.ID);
                        screenPopConfigId = screenPopConfiguration.ID;
                    }

                    if (screenPopConfigId > 0)
                    {
                        this.Destroy(screenPopConfigId, false);
                        //foreach (ScreenPopOptions config in screenPopConfigData.ScreenPopOptionsList)
                        //{
                        //    config.ScreenPopConfigID = screenPopConfigId;
                        //    CreateResponse entityCreateResponse = _rightNowObjectProvider.CreateObject<ScreenPopOptions>(config);
                        //    RNObject[] rnObject = entityCreateResponse.RNObjectsResult;
                        //}

                        screenPopConfigData.ScreenPopOptionsList.ForEach(x => x.ScreenPopConfigID = screenPopConfigId);

                        CreateResponse entityCreateResponse = _rightNowObjectProvider.CreateObjects <ScreenPopOptions>(screenPopConfigData.ScreenPopOptionsList);
                    }
                }
                else if (screenPopConfigData.ProfileId > 0 && screenPopConfigData.IsDefault)
                {
                    ScreenPopConfig profile = _rightNowObjectProvider.GetObject <ScreenPopConfig>(string.Format("where ProfileID={0}", screenPopConfigData.ProfileId));
                    if (profile != null)
                    {
                        this.Destroy(profile.ID);
                    }
                }
                Logger.Logger.Log.Info(string.Format("ScreenPopProviders successfully Saved: {0}", screenPopConfigData));
            }
            catch (Exception ex)
            {
                Logger.Logger.Log.Error("Saving Screen Pop Settings :" + ex.StackTrace);
                Logger.Logger.Log.Error("Saving Screen Pop Settings", ex);
            }
        }
Exemple #4
0
 public void SaveAgentConfiguration(ScreenPopConfig screenPoptConfig)
 {
     Logger.Logger.Log.Debug("AgentConfigModel >>> save-agent-configuration.");
     try
     {
         _screenConfigProvider.SaveAgentConfigData(screenPoptConfig);
     }
     catch (Exception ex)
     {
         Logger.Logger.Log.Error("ScreenPopConfigModel >>> save-agent-configuration failed.", ex);
     }
 }
Exemple #5
0
        public ScreenPopConfig GetAgentScreenByProfile()
        {
            ScreenPopConfig conf = null;

            try
            {
                Logger.Logger.Log.Debug("RightNowConnectConfigurationProvider Getting ScreenPop ");

                conf = _objectProvider.GetScreenConfigByProfileId(Global.Context.ProfileId);
                if (conf.ScreenPopOptionsList == null)
                {
                    conf = _objectProvider.GetScreenConfigByProfileId(0);
                }

                Logger.Logger.Log.DebugFormat("ScreenPopConfigModel <<< get-agent-configuration-by-profile.");

                if (conf.ScreenPopOptionsList != null && conf.ScreenPopOptionsList.Where(p => p.Type == 0).GroupBy(p => new { p.Type, p.Name }).Count() != conf.ScreenPopOptionsList.Where(p => p.Type == 0).Count())
                {
                    List <ScreenPopOptions> tempdefault = new List <ScreenPopOptions>();
                    foreach (ScreenPopOptions pop in conf.ScreenPopOptionsList.Where(p => p.Type == 0))
                    {
                        ScreenPopOptions val = conf.ScreenPopOptionsList.FirstOrDefault(item => item.Type == 0 && item.Name == pop.Name);
                        if (val == null)
                        {
                            tempdefault.Add(pop);
                        }
                        else if (!tempdefault.Contains(val))
                        {
                            tempdefault.Add(val);
                        }
                    }
                    conf.ScreenPopOptionsList.RemoveAll(rem => rem.Type == 0);
                    tempdefault.ForEach((vap) => conf.ScreenPopOptionsList.Add(vap));
                }
                if (conf.ScreenPopOptionsList != null && conf.ScreenPopOptionsList.Where(p => p.Type == 1).GroupBy(p => new { p.Type, p.Name }).Count() != conf.ScreenPopOptionsList.Where(p => p.Type == 1).Count())
                {
                    List <ScreenPopOptions> tempdefault = new List <ScreenPopOptions>();
                    foreach (ScreenPopOptions pop in conf.ScreenPopOptionsList.Where(item => item.Type == 1))
                    {
                        ScreenPopOptions val = conf.ScreenPopOptionsList.FirstOrDefault(item => item.Type == 1 && item.Name == pop.Name);
                        if (val == null)
                        {
                            tempdefault.Add(pop);
                        }
                        else if (!tempdefault.Contains(val))
                        {
                            tempdefault.Add(val);
                        }
                    }
                    conf.ScreenPopOptionsList.RemoveAll(rem => rem.Type == 1);
                    tempdefault.ForEach((vap) => conf.ScreenPopOptionsList.Add(vap));
                }
                if (conf.ScreenPopOptionsList != null && conf.ScreenPopOptionsList.Where(p => p.Type == 2).GroupBy(p => new { p.Type, p.Name }).Count() != conf.ScreenPopOptionsList.Where(p => p.Type == 2).Count())
                {
                    List <ScreenPopOptions> tempdefault = new List <ScreenPopOptions>();
                    foreach (ScreenPopOptions pop in conf.ScreenPopOptionsList.Where(p => p.Type == 2))
                    {
                        ScreenPopOptions val = conf.ScreenPopOptionsList.FirstOrDefault(item => item.Type == 2 && item.Name == pop.Name);
                        if (val == null)
                        {
                            tempdefault.Add(pop);
                        }
                        else if (!tempdefault.Contains(val))
                        {
                            tempdefault.Add(val);
                        }
                    }
                    conf.ScreenPopOptionsList.RemoveAll(rem => rem.Type == 2);
                    tempdefault.ForEach((vap) => conf.ScreenPopOptionsList.Add(vap));
                }
                if (conf.ScreenPopOptionsList != null && conf.ScreenPopOptionsList.Where(p => p.Type == 3).GroupBy(p => new { p.Type, p.Name }).Count() != conf.ScreenPopOptionsList.Where(p => p.Type == 3).Count())
                {
                    List <ScreenPopOptions> tempdefault = new List <ScreenPopOptions>();
                    foreach (ScreenPopOptions pop in conf.ScreenPopOptionsList.Where(p => p.Type == 3))
                    {
                        ScreenPopOptions val = conf.ScreenPopOptionsList.FirstOrDefault(item => item.Type == 3 && item.Name == pop.Name);
                        if (val == null)
                        {
                            tempdefault.Add(pop);
                        }
                        else if (!tempdefault.Contains(val))
                        {
                            tempdefault.Add(val);
                        }
                    }
                    conf.ScreenPopOptionsList.RemoveAll(rem => rem.Type == 3);
                    tempdefault.ForEach((vap) => conf.ScreenPopOptionsList.Add(vap));
                }
            }
            catch (Exception ex)
            {
                Logger.Logger.Log.Error(ex);
                return(conf);
            }
            finally {
            }
            return(conf);
        }
        private void ExecuteSaveScreentSettings(object obj)
        {
            ProgressInfo  = "Saving " + SelectedProfile.Name + "...";
            ShowAll       = Visibility.Collapsed;
            ShowConfigAll = Visibility.Collapsed;
            ShowProgress  = Visibility.Visible;
            System.Threading.Tasks.Task.Factory.StartNew(() =>
            {
                screenpopConfigs = new ScreenPopConfig();
                screenpopConfigs.AUXReasonEnabled    = this.IsAUXReason;
                screenpopConfigs.CanScreenPop        = this.CanScreenPop;
                screenpopConfigs.AutoRecieve         = this.AutoRecieve;
                screenpopConfigs.VoiceScreenPop      = this.VoiceScreenPop;
                screenpopConfigs.ChatScreenPop       = this.ChatScreenPop;
                screenpopConfigs.IncidentScreenPop   = this.IncidentScreenPop;
                screenpopConfigs.WrapupReasonEnabled = this.IsWrapup;
                screenpopConfigs.DefaultWorkSpace    = SelectedWorkSpaceList;

                screenpopConfigs.IsEnhanced = this.Enhanced;

                screenpopConfigs.ChatDefaultWorkspace     = SelectedChatWorkSpaceList;
                screenpopConfigs.IncidentDefaultWorkspace = SelectedIncidentWorkSpaceList;

                screenpopConfigs.CanOpen         = IsDontOpen;
                screenpopConfigs.CanOpenChat     = IsDontOpenChat;
                screenpopConfigs.CanOpenIncident = IsDontOpenIncident;

                screenpopConfigs.IsDefault            = this.IsDefaultConfig;
                screenpopConfigs.LogoutReasonEnabled  = this.IsLogout;
                screenpopConfigs.ProfileId            = (int)SelectedProfile.Value;
                screenpopConfigs.PrimaryCTIEngine     = (string.IsNullOrEmpty(PrimaryCTIEngine) ? " " : PrimaryCTIEngine);
                screenpopConfigs.SecondaryCTIEngine   = (string.IsNullOrEmpty(SecondaryCTIEngine) ? " " : SecondaryCTIEngine);
                screenpopConfigs.IsQueueEnabled       = this.IsQueueEnabled;
                screenpopConfigs.ScreenPopOptionsList = new List <ScreenPopOptions>();
                SearchPopOptions.ToList().ForEach(p =>
                {
                    screenpopConfigs.ScreenPopOptionsList.Add(new ScreenPopOptions()
                    {
                        Name = p.Name, Pop_Label = p.Pop_Label, Type = p.Type, Description = p.Description
                    });
                });

                WrapupReasoncodes.ToList().ForEach(p =>
                {
                    screenpopConfigs.ScreenPopOptionsList.Add(new ScreenPopOptions()
                    {
                        Name = p.Name, Pop_Label = p.Pop_Label, Type = p.Type, Description = p.Description
                    });
                });

                LogoutReasonCodes.ToList().ForEach(p =>
                {
                    screenpopConfigs.ScreenPopOptionsList.Add(new ScreenPopOptions()
                    {
                        Name = p.Name, Pop_Label = p.Pop_Label, Type = p.Type, Description = p.Description
                    });
                });

                AUXReasonCodes.ToList().ForEach(p =>
                {
                    screenpopConfigs.ScreenPopOptionsList.Add(new ScreenPopOptions()
                    {
                        Name = p.Name, Pop_Label = p.Pop_Label, Type = p.Type, Description = p.Description
                    });
                });

                ScreenPopConfigModel.Instance.SaveAgentConfiguration(screenpopConfigs);

                BindData();
            }).ContinueWith((s) =>
            {
                ShowConfigAll = Visibility.Visible;
                ShowProgress  = Visibility.Collapsed;
                ShowAll       = Visibility.Visible;
            });
        }
        private void BindData()
        {
            try
            {
                this.SearchPopOptions.Clear();
                this.LogoutReasonCodes.Clear();
                this.AUXReasonCodes.Clear();
                this.WrapupReasoncodes.Clear();
                this.Wrapup             = "";
                this.LogoutReason       = "";
                this.NotReadyReason     = "";
                screenpopConfigs        = ScreenPopConfigModel.Instance.GetAgentConfigurationByProfile(Int32.Parse(SelectedProfile.Value.ToString()));
                this.CanScreenPop       = screenpopConfigs.CanScreenPop;
                this.AutoRecieve        = screenpopConfigs.AutoRecieve;
                this.VoiceScreenPop     = screenpopConfigs.VoiceScreenPop;
                this.ChatScreenPop      = screenpopConfigs.ChatScreenPop;
                this.IncidentScreenPop  = screenpopConfigs.IncidentScreenPop;
                this.IsDefaultConfig    = screenpopConfigs.IsDefault;
                this.IsDontOpen         = screenpopConfigs.CanOpen;
                this.IsDontOpenIncident = screenpopConfigs.CanOpenIncident;
                this.IsDontOpenChat     = screenpopConfigs.CanOpenChat;
                this.IsWrapup           = screenpopConfigs.WrapupReasonEnabled;
                this.IsLogout           = screenpopConfigs.LogoutReasonEnabled;
                this.IsAUXReason        = screenpopConfigs.AUXReasonEnabled;
                this.PrimaryCTIEngine   = screenpopConfigs.PrimaryCTIEngine;
                this.SecondaryCTIEngine = screenpopConfigs.SecondaryCTIEngine;
                this.IsQueueEnabled     = screenpopConfigs.IsQueueEnabled;
                this.AutoRecieve        = screenpopConfigs.AutoRecieve;
                this.Enhanced           = screenpopConfigs.IsEnhanced;

                if (!IsDontOpen)
                {
                    SelectedWorkSpaceList = WorkSpaceList.FirstOrDefault(p => p.ToString() == screenpopConfigs.DefaultWorkSpace);
                }
                if (!IsDontOpenChat)
                {
                    SelectedChatWorkSpaceList = WorkSpaceList.FirstOrDefault(p => p.ToString() == screenpopConfigs.ChatDefaultWorkspace);
                }
                if (!IsDontOpenIncident)
                {
                    SelectedIncidentWorkSpaceList = WorkSpaceList.FirstOrDefault(p => p.ToString() == screenpopConfigs.IncidentDefaultWorkspace);
                }

                if (screenpopConfigs.ScreenPopOptionsList != null)
                {
                    foreach (ScreenPopOptions opt in screenpopConfigs.ScreenPopOptionsList.Where(opt => opt.Type == (int)ScreenOptions.ScreenSearch))
                    {
                        SearchPopOptions.Add(new ScreenPopUpEntity()
                        {
                            ID = opt.ID, Pop_Label = opt.Pop_Label, Type = opt.Type, Description = opt.Description, Name = opt.Name
                        });
                    }

                    foreach (ScreenPopOptions opt in screenpopConfigs.ScreenPopOptionsList.Where(opt => opt.Type == (int)ScreenOptions.WrapupReasonCodes))
                    {
                        WrapupReasoncodes.Add(new ScreenPopUpEntity()
                        {
                            ID = opt.ID, Pop_Label = opt.Pop_Label, Type = opt.Type, Description = opt.Description, Name = opt.Name
                        });
                    }
                    foreach (ScreenPopOptions opt in screenpopConfigs.ScreenPopOptionsList.Where(opt => opt.Type == (int)ScreenOptions.LogoutReasonCodes))
                    {
                        LogoutReasonCodes.Add(new ScreenPopUpEntity()
                        {
                            ID = opt.ID, Pop_Label = opt.Pop_Label, Type = opt.Type, Description = opt.Description, Name = opt.Name
                        });
                    }

                    foreach (ScreenPopOptions opt in screenpopConfigs.ScreenPopOptionsList.Where(opt => opt.Type == (int)ScreenOptions.AUXReasonCodes))
                    {
                        AUXReasonCodes.Add(new ScreenPopUpEntity()
                        {
                            ID = opt.ID, Pop_Label = opt.Pop_Label, Type = opt.Type, Description = opt.Description, Name = opt.Name
                        });
                    }
                }
                SetReasonCodeLabel();
            }
            catch (Exception ex)
            {
                Logger.Logger.Log.Error("ScreenpopConfigurationViewModel: ", ex);
            }
        }
Exemple #8
0
        /// <summary>
        /// Handle the Screen Pop to the user.
        /// </summary>
        /// <param name="interaction"></param>
        public void HandleInteraction(IInteraction interaction)
        {
            Boolean isChat, isIncident, isVoice = false;

            switch (interaction.Type)
            {
            case MediaType.Voice:

                SynchronizationContext.Current.Post(scree =>
                {
                    try
                    {
                        AsyncObservableCollection <Entities> UUIs = new AsyncObservableCollection <Entities>();
                        ScreenPopConfig screenPopConfigs          = interaction.ScreenPopConfiguration;


                        if (screenPopConfigs.CanScreenPop)
                        {
                            string UUIvalue           = interaction.InteractionData["UUI"];
                            ScreenPopOptions UUIstart = screenPopConfigs.ScreenPopOptionsList.SingleOrDefault(p => p.Type == 0 && p.Name.Equals("UUIStart", StringComparison.OrdinalIgnoreCase));
                            string start             = UUIstart == null ? ";" : UUIstart.Description;
                            ScreenPopOptions UUIstop = screenPopConfigs.ScreenPopOptionsList.SingleOrDefault(p => p.Type == 0 && p.Name.Equals("UUIStop", StringComparison.OrdinalIgnoreCase));
                            string stop             = UUIstop == null ? ":" : UUIstop.Description;
                            ScreenPopOptions UUIsep = screenPopConfigs.ScreenPopOptionsList.SingleOrDefault(p => p.Type == 0 && p.Name.Equals("UUISep", StringComparison.OrdinalIgnoreCase));
                            char seperator          = UUIsep == null ? '!' : UUIsep.Description.ToCharArray()[0];
                            int startindex          = UUIvalue.IndexOf(start, 0) + 1;
                            int lastindex           = UUIvalue.LastIndexOf(stop) == -1 ? UUIvalue.Length : UUIvalue.LastIndexOf(stop);
                            int len         = lastindex - startindex;
                            string[] uuival = UUIvalue.Substring(startindex, len).Split(seperator);

                            isChat     = Array.IndexOf(uuival, InteractionIQAType.FEAT_IQA_ORACLE_CHAT.ToString()) >= 0;
                            isIncident = Array.IndexOf(uuival, InteractionIQAType.FEAT_IQA_ORACLE_EMAIL.ToString()) >= 0;

                            ArrayList uuiCI = new ArrayList();

                            //Namachi
                            Regex UUICIRegex = new Regex("^UUI[1-2]", RegexOptions.IgnoreCase);
                            List <ScreenPopOptions> UUICI = screenPopConfigs.ScreenPopOptionsList.Where(p => p.Type == 0 && UUICIRegex.Matches(p.Name).Count > 0).ToList();
                            Regex UUIRegex = new Regex("^UUI[3-7]", RegexOptions.IgnoreCase);
                            List <ScreenPopOptions> UUI = screenPopConfigs.ScreenPopOptionsList.Where(p => p.Type == 0 && UUIRegex.Matches(p.Name).Count > 0).ToList();

                            //foreach (string filterval in uuival) {
                            //    if (filterval != UUICI[0].Description && filterval != UUICI[1].Description) uuiCI.Add(filterval);
                            //}
                            for (int i = 0; i < uuival.Length; i++)
                            {
                                if (i == 0 || i == 1)
                                {
                                    if ((uuival[i] != UUICI[0].Description && uuival[i] != UUICI[1].Description) && (uuival[i] != null && uuival[i] != ""))
                                    {
                                        uuiCI.Add(uuival[i]);
                                    }
                                }
                                else if (uuival[i] != UUICI[0].Description && uuival[i] != UUICI[1].Description)
                                {
                                    uuiCI.Add(uuival[i]);
                                }
                            }


                            int index          = 1;
                            bool IsMatched     = false;
                            string searchvalue = "";
                            if ((interaction as ICall).CallType == CallType.Inbound)
                            {
                                searchvalue = interaction.Address;
                            }
                            else
                            {
                                string[] address = interaction.InteractionData["Consult"].Split('|');
                                searchvalue      = address[0];
                            }

                            AsyncObservableCollection <Entities> consolidatefilter = CombineEntity((string[])uuiCI.ToArray(typeof(string)), UUI, searchvalue);

                            foreach (Entities filter in consolidatefilter)
                            {
                                string workspace   = filter.Entity;
                                bool found         = false;
                                Entities searchval = SearchEntites(filter);
                                if (searchval.IDs.Count > 0)
                                {
                                    Entities dup = UUIs.FirstOrDefault(p => p.Entity.Equals(searchval.Entity, StringComparison.OrdinalIgnoreCase));
                                    if (dup != null)
                                    {
                                        searchval.IDs.ToList().ForEach(x => dup.IDs.Add(x.ToString()));
                                    }
                                    else
                                    {
                                        UUIs.Add(searchval);
                                    }

                                    found = true;
                                }
                                if (!IsMatched && found)
                                {
                                    IsMatched = found;
                                }
                            }

                            Open(UUIs);
                            UUIs.Clear();


                            if ((interaction as ICall).CallType == CallType.Inbound)
                            {
                                ScreenPopOptions aniscreenpop = screenPopConfigs.ScreenPopOptionsList.SingleOrDefault(p => p.Type == 0 && p.Name.Equals("ANIPop", StringComparison.OrdinalIgnoreCase));
                                if (!IsMatched && aniscreenpop != null && aniscreenpop.Description == "Y")
                                {
                                    bool found = false;    // SearchAndPop("Contact", "Phones.RawNumber", "any_phone", searchvalue);

                                    Entities searchval = SearchEntites("Contact", "Phones.RawNumber", SEARCH_EXPRESSION["contact"].ToString(), searchvalue);
                                    //Entities searchval = SearchEntites("organization", "orgs.org_id", SEARCH_EXPRESSION["organization"].ToString(), searchvalue);
                                    if (searchval.IDs.Count > 0)
                                    {
                                        Entities dup = UUIs.FirstOrDefault(p => p.Entity.Equals(searchval.Entity, StringComparison.OrdinalIgnoreCase));
                                        if (dup != null)
                                        {
                                            searchval.IDs.ToList().ForEach(x => dup.IDs.Add(x.ToString()));
                                        }
                                        else
                                        {
                                            UUIs.Add(searchval);
                                        }

                                        found = true;
                                    }

                                    if (!IsMatched && found)
                                    {
                                        IsMatched = found;
                                    }
                                }
                                //if (!(screenPopConfigs.CanOpen) && !IsMatched && aniscreenpop.Description == "Y")
                                //{
                                //WorkspaceRecordType recordtype;
                                //if (Enum.TryParse<WorkspaceRecordType>(screenPopConfigs.DefaultWorkSpace, out recordtype))
                                //{
                                //    IsMatched = true;
                                //    RightNowGlobalContext.AutomationContext.CreateWorkspaceRecord(recordtype);
                                //}
                                //}

                                WorkspaceRecordType recordtype;
                                if (screenPopConfigs.ChatScreenPop)
                                {
                                    if (isChat && !IsMatched)
                                    {
                                        if (screenPopConfigs.CanOpenChat == false)
                                        {
                                            if (Enum.TryParse <WorkspaceRecordType>(screenPopConfigs.ChatDefaultWorkspace, out recordtype))
                                            {
                                                IsMatched = true;
                                                RightNowGlobalContext.AutomationContext.CreateWorkspaceRecord(recordtype);
                                            }
                                        }
                                    }
                                }
                                if (screenPopConfigs.IncidentScreenPop)
                                {
                                    if (isIncident && !IsMatched)
                                    {
                                        if (screenPopConfigs.CanOpenIncident == false)
                                        {
                                            if (Enum.TryParse <WorkspaceRecordType>(screenPopConfigs.IncidentDefaultWorkspace, out recordtype))
                                            {
                                                IsMatched = true;
                                                RightNowGlobalContext.AutomationContext.CreateWorkspaceRecord(recordtype);
                                            }
                                        }
                                    }
                                }
                                if (screenPopConfigs.VoiceScreenPop)
                                {
                                    if (!isIncident && !isChat && !IsMatched)
                                    {
                                        if (screenPopConfigs.CanOpen == false)
                                        {
                                            if (Enum.TryParse <WorkspaceRecordType>(screenPopConfigs.DefaultWorkSpace, out recordtype))
                                            {
                                                IsMatched = true;
                                                RightNowGlobalContext.AutomationContext.CreateWorkspaceRecord(recordtype);
                                            }
                                        }
                                    }
                                }


                                Logger.Logger.Log.Info(string.Format("ScreenPopHandler: Inbound ScreenPop Address {0}", searchvalue));
                            }
                            else if ((interaction as ICall).CallType == CallType.Consult)
                            {
                                ScreenPopOptions aniscreenpop = screenPopConfigs.ScreenPopOptionsList.SingleOrDefault(p => p.Type == 0 && p.Name.Equals("TranPop", StringComparison.OrdinalIgnoreCase));
                                if (!IsMatched && aniscreenpop != null && (aniscreenpop.Description == "Y" || aniscreenpop.Description == "D"))
                                {
                                    bool found = false;    // SearchAndPop("Contact", "Phones.RawNumber", "any_phone", searchvalue);
                                    //"organization", "orgs.org_id"
                                    Entities searchval = SearchEntites("Contact", "Phones.RawNumber", SEARCH_EXPRESSION["contact"].ToString(), searchvalue);
                                    //Entities searchval = SearchEntites("organization", "organization.org_id", SEARCH_EXPRESSION["organization"].ToString(), searchvalue);
                                    if (searchval.IDs.Count > 0)
                                    {
                                        Entities dup = UUIs.FirstOrDefault(p => p.Entity.Equals(searchval.Entity, StringComparison.OrdinalIgnoreCase));
                                        if (dup != null)
                                        {
                                            searchval.IDs.ToList().ForEach(x => dup.IDs.Add(x.ToString()));
                                        }
                                        else
                                        {
                                            UUIs.Add(searchval);
                                        }

                                        found = true;
                                    }
                                    if (!IsMatched && found)
                                    {
                                        IsMatched = found;
                                    }
                                }

                                if (!(screenPopConfigs.CanOpen) && !IsMatched && (aniscreenpop.Description == "Y" || aniscreenpop.Description == "D"))
                                {
                                    WorkspaceRecordType recordtype;
                                    if (Enum.TryParse <WorkspaceRecordType>(screenPopConfigs.DefaultWorkSpace, out recordtype))
                                    {
                                        IsMatched = true;
                                        RightNowGlobalContext.AutomationContext.CreateWorkspaceRecord(recordtype);
                                    }
                                }
                                Logger.Logger.Log.Info(string.Format("ScreenPopHandler: Consult ScreenPop Address {0}  UUI = {1}", searchvalue, UUIvalue));
                            }
                            Open(UUIs);

                            UUIs.Clear();
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Logger.Log.Error("ScreenPopHandler", ex);
                    }
                }, null);

                break;

            case MediaType.Web:
            case MediaType.Email:
                RightNowGlobalContext.AutomationContext.EditWorkspaceRecord(WorkspaceRecordType.Incident, long.Parse(interaction.AdditionalIdentifiers["ReferenceId"]));
                break;

            default:
                return;
            }
        }
Exemple #9
0
        public ScreenPopConfig GetAgentConfigurationByProfile(int profileId)
        {
            Logger.Logger.Log.DebugFormat("ScreenPopConfigModel <<< get-agent-configuration-by-profile. ProfileId:{0}", profileId);
            try
            {
                ScreenPopConfig screepop = _screenConfigProvider.GetScreenPopConfigurationByProfile(profileId);

                if (screepop.ScreenPopOptionsList == null)
                {
                    screepop.ScreenPopOptionsList = new List <ScreenPopOptions>(DefaultSearchOptions.ToList());
                }
                else if (screepop.ScreenPopOptionsList != null && screepop.ScreenPopOptionsList.Where(p => p.Type == 0).Count() != DefaultSearchOptions.Count())
                {
                    List <ScreenPopOptions> tempdefault = new List <ScreenPopOptions>();
                    foreach (ScreenPopOptions pop in DefaultSearchOptions)
                    {
                        ScreenPopOptions val = screepop.ScreenPopOptionsList.FirstOrDefault(item => item.Type == 0 && item.Name == pop.Name);
                        if (val == null)
                        {
                            tempdefault.Add(pop);
                        }
                        else if (!tempdefault.Contains(val))
                        {
                            tempdefault.Add(val);
                        }
                    }
                    screepop.ScreenPopOptionsList.RemoveAll(rem => rem.Type == 0);
                    tempdefault.ForEach((vap) => screepop.ScreenPopOptionsList.Add(vap));
                }

                if (screepop.ScreenPopOptionsList != null && screepop.ScreenPopOptionsList.Where(p => p.Type == 1).GroupBy(p => new { p.Type, p.Name }).Count() != screepop.ScreenPopOptionsList.Where(p => p.Type == 1).Count())
                {
                    List <ScreenPopOptions> tempdefault = new List <ScreenPopOptions>();
                    foreach (ScreenPopOptions pop in screepop.ScreenPopOptionsList.Where(item => item.Type == 1))
                    {
                        ScreenPopOptions val = screepop.ScreenPopOptionsList.FirstOrDefault(item => item.Type == 1 && item.Name == pop.Name);
                        if (val == null)
                        {
                            tempdefault.Add(pop);
                        }
                        else if (!tempdefault.Contains(val))
                        {
                            tempdefault.Add(val);
                        }
                    }
                    screepop.ScreenPopOptionsList.RemoveAll(rem => rem.Type == 1);
                    tempdefault.ForEach((vap) => screepop.ScreenPopOptionsList.Add(vap));
                }
                if (screepop.ScreenPopOptionsList != null && screepop.ScreenPopOptionsList.Where(p => p.Type == 2).GroupBy(p => new { p.Type, p.Name }).Count() != screepop.ScreenPopOptionsList.Where(p => p.Type == 2).Count())
                {
                    List <ScreenPopOptions> tempdefault = new List <ScreenPopOptions>();
                    foreach (ScreenPopOptions pop in screepop.ScreenPopOptionsList.Where(p => p.Type == 2))
                    {
                        ScreenPopOptions val = screepop.ScreenPopOptionsList.FirstOrDefault(item => item.Type == 2 && item.Name == pop.Name);
                        if (val == null)
                        {
                            tempdefault.Add(pop);
                        }
                        else if (!tempdefault.Contains(val))
                        {
                            tempdefault.Add(val);
                        }
                    }
                    screepop.ScreenPopOptionsList.RemoveAll(rem => rem.Type == 2);
                    tempdefault.ForEach((vap) => screepop.ScreenPopOptionsList.Add(vap));
                }
                if (screepop.ScreenPopOptionsList != null && screepop.ScreenPopOptionsList.Where(p => p.Type == 3).GroupBy(p => new { p.Type, p.Name }).Count() != screepop.ScreenPopOptionsList.Where(p => p.Type == 3).Count())
                {
                    List <ScreenPopOptions> tempdefault = new List <ScreenPopOptions>();
                    foreach (ScreenPopOptions pop in screepop.ScreenPopOptionsList.Where(p => p.Type == 3))
                    {
                        ScreenPopOptions val = screepop.ScreenPopOptionsList.FirstOrDefault(item => item.Type == 3 && item.Name == pop.Name);
                        if (val == null)
                        {
                            tempdefault.Add(pop);
                        }
                        else if (!tempdefault.Contains(val))
                        {
                            tempdefault.Add(val);
                        }
                    }
                    screepop.ScreenPopOptionsList.RemoveAll(rem => rem.Type == 3);
                    tempdefault.ForEach((vap) => screepop.ScreenPopOptionsList.Add(vap));
                }

                return(screepop);
            }
            catch (Exception ex)
            {
                Logger.Logger.Log.Error("ScreenPopConfigModel <<< get-agent-configuration failed.", ex);
                return(null);
            }
        }
Exemple #10
0
        public static MediaType cIInfoType(IInteraction interaction)
        {
            MediaType cInfoState = MediaType.Voice;

            try
            {
                //IInteraction cIInteraction = InteractionProvider.Interactions.FirstOrDefault(p => p.CallId == callIdNode.Value);
                if (interaction != null)
                {
                    ScreenPopConfig screenPopConfigs = interaction.ScreenPopConfiguration;
                    if (screenPopConfigs.CanScreenPop)
                    {
                        string           UUIValue  = interaction.InteractionData["UUI"];
                        ScreenPopOptions UUIstart  = screenPopConfigs.ScreenPopOptionsList.SingleOrDefault(p => p.Type == 0 && p.Name.Equals("UUIStart", StringComparison.OrdinalIgnoreCase));
                        string           start     = UUIstart == null ? ";" : UUIstart.Description;
                        ScreenPopOptions UUIstop   = screenPopConfigs.ScreenPopOptionsList.SingleOrDefault(p => p.Type == 0 && p.Name.Equals("UUIStop", StringComparison.OrdinalIgnoreCase));
                        string           stop      = UUIstop == null ? ":" : UUIstop.Description;
                        ScreenPopOptions UUIsep    = screenPopConfigs.ScreenPopOptionsList.SingleOrDefault(p => p.Type == 0 && p.Name.Equals("UUISep", StringComparison.OrdinalIgnoreCase));
                        char             seperator = UUIsep == null ? '!' : UUIsep.Description.ToCharArray()[0];
                        int      startindex        = UUIValue.IndexOf(start, 0) + 1;
                        int      lastindex         = UUIValue.LastIndexOf(stop) == -1 ? UUIValue.Length : UUIValue.LastIndexOf(stop);
                        int      len = lastindex - startindex;
                        string[] uui = UUIValue.Substring(startindex, len).Split(seperator);
                        Regex    chatIncidentRegex             = new Regex("^UUI[1-2]", RegexOptions.IgnoreCase);
                        List <ScreenPopOptions> cINotification = screenPopConfigs.ScreenPopOptionsList.Where(p => p.Type == 0 && chatIncidentRegex.Matches(p.Name).Count > 0).ToList();

                        try
                        {
                            if (uui.Length > 1)
                            {
                                Logger.Logger.Log.Debug(String.Format("AnswerHangupImage cINotifiction Details: {0} {1}: UUI Details: {2} {3} ", cINotification[0].Description, cINotification[1].Description, uui[0], uui[1]));
                                if ((uui[0] == cINotification[0].Description || uui[1] == cINotification[0].Description) && (cINotification[0].Description != null && cINotification[0].Description != ""))
                                {
                                    cInfoState = MediaType.Chat;
                                }
                                else if (uui[0] == cINotification[1].Description || uui[1] == cINotification[1].Description && (cINotification[1].Description != null && cINotification[1].Description != ""))
                                {
                                    cInfoState = MediaType.Incident;
                                }
                            }
                            else if (uui.Length == 1)
                            {
                                if (uui[0] == cINotification[0].Description && (cINotification[0].Description != null && cINotification[0].Description != ""))
                                {
                                    cInfoState = MediaType.Chat;
                                }
                                else if (uui[0] == cINotification[1].Description && (cINotification[1].Description != null && cINotification[1].Description != ""))
                                {
                                    cInfoState = MediaType.Incident;
                                }
                            }
                        }
                        catch (NullReferenceException ex)
                        {
                            Logger.Logger.Log.Error("Interaction null reference." + ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Logger.Log.Debug("Interaction was null" + ex);
            }
            return(cInfoState);
        }
        public ScreenPopConfig GetScreenConfigByProfile(int profileid)
        {
            ScreenPopConfig list = GetObject <ScreenPopConfig>(string.Format("where Profileid={0}", profileid));

            return(list);
        }