public void NotifyAgentLogin(bool isLogedin, int?proxyId = null)
 {
     Application.Current.Dispatcher.BeginInvoke((Action)(delegate
     {
         try
         {
             if (proxyId != null)
             {
                 WorkbinUtility.Instance().IxnProxyID = (int)proxyId;
             }
             //WorkbinUtility.Instance().IsAgentLoginIXN = isLogedin;
             if (!isLogedin)
             {
                 return;
             }
             ApplicationDetails.ApplicationDetails.LoadWorkbin();
             if (WorkbinService.InteractionServerLoginNotification != null)
             {
                 WorkbinService.InteractionServerLoginNotification.Invoke();
             }
         }
         catch (Exception ex)
         {
             logger.Error("Error occurred as " + ex.Message);
         }
     }), DispatcherPriority.ContextIdle, new object[0]);
 }
 public void UpdateSelectedWorkbin()
 {
     try
     {
         if (ConfigContainer.Instance().AllKeys.Contains("CfgPerson"))
         {
             CfgPerson person = ConfigContainer.Instance().GetValue("CfgPerson") as CfgPerson;
             if (!person.UserProperties.ContainsKey("agent.ixn.desktop"))
             {
                 person.UserProperties.Add("agent.ixn.desktop", new KeyValueCollection());
             }
             KeyValueCollection option = person.UserProperties["agent.ixn.desktop"] as KeyValueCollection;
             if (!string.IsNullOrEmpty(WorkbinUtility.Instance().SelectedWorkbinName))
             {
                 if (!option.ContainsKey("workbins.workbin-selected"))
                 {
                     option.Add("workbins.workbin-selected", WorkbinUtility.Instance().SelectedWorkbinName);
                 }
                 else
                 {
                     option["workbins.workbin-selected"] = WorkbinUtility.Instance().SelectedWorkbinName;
                 }
             }
             person.UserProperties["agent.ixn.desktop"] = option;
             person.Save();
             person = null;
         }
     }
     catch (Exception ex)
     {
         logger.Error("Error when updating selected workbin " + ex.ToString());
     }
 }
 public void NotifyContactServerState(bool isOpen = false)
 {
     Application.Current.Dispatcher.BeginInvoke((Action)(delegate
     {
         WorkbinUtility.Instance().IsContactServerActive = isOpen;
         if (WorkbinService.ContactServerNotificationHandler != null)
         {
             WorkbinService.ContactServerNotificationHandler.Invoke();
         }
     }), DispatcherPriority.ContextIdle, new object[0]);
 }
 public void InitializeWorkBin(string placeId, int proxyId, IPluginCallBack listener)
 {
     try
     {
         logger.Info("**********************************************************************************************************************");
         logger.Info("Pointel.Interaction.Workbin :" + Assembly.GetExecutingAssembly().GetName().Version);
         logger.Info("***********************************************************************************************************************");
         logger.Info("Retrieving Values from Application Email in AID Start");
         WorkbinUtility.Instance().PlaceID              = placeId;
         WorkbinUtility.Instance().IxnProxyID           = proxyId;
         WorkbinUtility.Instance().configListener       = listener;
         WorkbinUtility.Instance().messageToClientEmail = listener;
         Pointel.Interaction.Workbin.ApplicationDetails.ApplicationDetails.LoadWorkbin();
         InteractionService.InteractionServerNotifier += InteractionService_InteractionServerNotifier;
     }
     catch (Exception exception)
     {
         logger.Error("StartEmailService" + exception.ToString());
     }
 }
        /// <summary>
        /// The Will Retrieve the Pperson Id of which group the login agent is superadmin.
        /// If the User is Agent Means it will not Performed.
        /// </summary>
        public static List <string> GetMyTeamAgentId()
        {
            List <string>      empId           = new List <string>();
            CfgAgentGroupQuery agentGroupQuery = new CfgAgentGroupQuery();

            agentGroupQuery.TenantDbid = ConfigContainer.Instance().TenantDbId;
            ICollection <CfgAgentGroup> agentGroups = ConfigContainer.Instance().ConfServiceObject.RetrieveMultipleObjects <CfgAgentGroup>(agentGroupQuery);

            if (agentGroups != null && agentGroups.Count > 0)
            {
                //this is added by sakthikumar to determine the age is admin or not.
                WorkbinUtility.Instance().AgentGroup   = agentGroups.Where(x => x != null && x.GroupInfo != null && x.GroupInfo.Managers != null && x.GroupInfo.Managers.Where(y => y.EmployeeID.Equals(ConfigContainer.Instance().AgentId)).ToList().Count > 0).ToList();
                WorkbinUtility.Instance().IsSuperadmin = WorkbinUtility.Instance().AgentGroup.Count > 0;
                foreach (CfgAgentGroup agentgroup in WorkbinUtility.Instance().AgentGroup)
                {
                    foreach (CfgPerson person in agentgroup.Agents)
                    {
                        empId.Add(person.EmployeeID);
                    }
                }
            }
            return(empId);
        }
 /// <summary>
 /// Workbins the flag.
 /// </summary>
 /// <param name="isEnableWorkbin">if set to <c>true</c> [is enable workbin].</param>
 public void WorkbinFlag(bool isEnableWorkbin)
 {
     WorkbinUtility.Instance().IsWorkbinEnable = isEnableWorkbin;
 }
 public bool NotifyEmailOpen(string interactionId)
 {
     try
     {
         KeyValueCollection kvpInteractionId = new KeyValueCollection();
         kvpInteractionId.Add("id", interactionId);
         InteractionService interactionServices = new InteractionService();
         Pointel.Interactions.Core.Common.OutputValues result = interactionServices.PullInteraction(ConfigContainer.Instance().TenantDbId, WorkbinUtility.Instance().IxnProxyID, kvpInteractionId);
         if (result.MessageCode.Equals("200"))
         {
             if (Pointel.Interactions.IPlugins.PluginCollection.GetInstance().PluginCollections.ContainsKey(Pointel.Interactions.IPlugins.Plugins.Email))
             {
                 ((IEmailPlugin)Pointel.Interactions.IPlugins.PluginCollection.GetInstance().PluginCollections[Pointel.Interactions.IPlugins.Plugins.Email]).NotifyEmailInteraction(result.IMessage);
                 return(true);
             }
         }
     }
     catch (Exception ex)
     {
         logger.Error("Error occurred as " + ex.Message);
     }
     return(false);
 }
 public List <string> GetTeamWorkbinList()
 {
     return(new List <string>(WorkbinUtility.Instance().TeamWorkbinList.Keys));
 }
 public List <string> GetPersonalWorkbinList()
 {
     return(new List <string>(WorkbinUtility.Instance().PersonalWorkbinList.Keys));
 }
        /// <summary>
        /// The method will used to Read the Workbin name of the Agent and Team Workbin
        /// </summary>
        public static void LoadWorkbin()
        {
            Pointel.Logger.Core.ILog logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
                                                                                       "AID");
            try
            {
                //Added by sakthi to load workbins.
                List <string> interactionWorkbin = WorkbinConverter.GetWorkbinList();
                WorkbinUtility.Instance().TeamWorkbinList.Clear();
                WorkbinUtility.Instance().PersonalWorkbinList.Clear();
                if (interactionWorkbin != null && interactionWorkbin.Count > 0)
                {
                    string[] listofKeys = ConfigContainer.Instance().AllKeys.Where(x => x.ToLower().StartsWith("workbin.") &&
                                                                                   x.ToCharArray().Where(y => y.Equals('.')).ToList().Count == 2 && !x.Contains("..")).ToArray <string>();

                    foreach (string keys in listofKeys)
                    {
                        string workbinName = ConfigContainer.Instance().GetValue(keys);
                        if (interactionWorkbin.Where(x => x.Equals(workbinName)).ToList().Count > 0 && !WorkbinUtility.Instance().PersonalWorkbinList.ContainsKey(workbinName))
                        {
                            WorkbinUtility.Instance().PersonalWorkbinList.Add(workbinName, "From,To,Subject,Received");
                            if (ConfigContainer.Instance().AllKeys.Contains(keys + ".displayed-columns") && !string.IsNullOrEmpty(((string)ConfigContainer.Instance().GetValue(keys + ".displayed-columns"))))
                            {
                                WorkbinUtility.Instance().PersonalWorkbinList[workbinName] = (string)ConfigContainer.Instance().GetValue(keys + ".displayed-columns");
                            }
                            //workbin.email.in-progress
                            else if (ConfigContainer.Instance().AllKeys.Contains("workbin.email.in-progress") &&
                                     string.Compare((string)ConfigContainer.Instance().GetValue("workbin.email.in-progress"), workbinName) == 0)
                            {
                                WorkbinUtility.Instance().PersonalWorkbinList[workbinName] = "From,Subject,Received";
                            }
                            else if (ConfigContainer.Instance().AllKeys.Contains("workbin.email.draft") &&
                                     string.Compare((string)ConfigContainer.Instance().GetValue("workbin.email.draft"), workbinName) == 0)
                            {
                                WorkbinUtility.Instance().PersonalWorkbinList[workbinName] = "To,Subject,Submitted";
                            }
                        }
                    }

                    string key = "workbin.teamworkbin";
                    if (ConfigContainer.Instance().AllKeys.Contains(key) && !string.IsNullOrEmpty(ConfigContainer.Instance().GetValue(key)))
                    {
                        foreach (string workbinName in ConfigContainer.Instance().GetValue(key).Split(','))
                        {
                            if (interactionWorkbin.Where(x => x.Equals(workbinName)).ToList().Count > 0)
                            {
                                WorkbinUtility.Instance().TeamWorkbinList.Add(workbinName, "From,To,Subject,Received");
                            }
                            if (ConfigContainer.Instance().AllKeys.Contains(key + ".displayed-columns") && !string.IsNullOrEmpty(((string)ConfigContainer.Instance().GetValue(key + ".displayed-columns"))))
                            {
                                WorkbinUtility.Instance().PersonalWorkbinList[workbinName] = (string)ConfigContainer.Instance().GetValue(key + ".displayed-columns");
                            }
                            //workbin.email.in-progress
                            else if (ConfigContainer.Instance().AllKeys.Contains("workbin.email.in-progress") &&
                                     string.Compare((string)ConfigContainer.Instance().GetValue("workbin.email.in-progress"), workbinName) == 0)
                            {
                                WorkbinUtility.Instance().TeamWorkbinList[workbinName] = "From,Subject,Received";
                            }
                            else if (ConfigContainer.Instance().AllKeys.Contains("workbin.email.draft") &&
                                     string.Compare((string)ConfigContainer.Instance().GetValue("workbin.email.draft"), workbinName) == 0)
                            {
                                WorkbinUtility.Instance().TeamWorkbinList[workbinName] = "To,Subject,Submitted";
                            }
                        }
                    }
                    else if (ConfigContainer.Instance().AllKeys.Contains("workbin.email.in-progress"))
                    {
                        WorkbinUtility.Instance().TeamWorkbinList.Add((string)ConfigContainer.Instance().GetValue("workbin.email.in-progress"), "From,Subject,Received");
                        if (ConfigContainer.Instance().AllKeys.Contains("workbin.email.in-progress.displayed-columns") && !string.IsNullOrEmpty(((string)ConfigContainer.Instance().GetValue("workbin.email.in-progress.displayed-columns"))))
                        {
                            WorkbinUtility.Instance().PersonalWorkbinList[(string)ConfigContainer.Instance().GetValue("workbin.email.in-progress")] = (string)ConfigContainer.Instance().GetValue("workbin.email.in-progress.displayed-columns");
                        }
                    }
                    WorkbinUtility.Instance().IsAgentLoginIXN = true;
                }
                else
                {
                    string[] listofKeys = ConfigContainer.Instance().AllKeys.Where(x => x.ToLower().StartsWith("workbin.") &&
                                                                                   x.ToCharArray().Where(y => y.Equals('.')).ToList().Count == 2 && !x.Contains("..")).ToArray <string>();
                    WorkbinUtility.Instance().Workbins = new Dictionary <string, string>();
                    foreach (string keys in listofKeys)
                    {
                        string workbinName = ConfigContainer.Instance().GetValue(keys);
                        WorkbinUtility.Instance().Workbins.Add(keys, workbinName);
                    }
                    WorkbinUtility.Instance().IsAgentLoginIXN = false;
                }
            }
            catch (Exception ex)
            {
                logger.Error("Error occurred as " + ex.Message);
            }
        }