private void LogOffAgentStat()
 {
     if (Session["AgentStat"] != null && Session["Campaign"] != null) // agent is already logged in campaign
     {
         Campaign  objCampaign  = (Campaign)Session["Campign"];
         AgentStat objAgentStat = (AgentStat)Session["AgentStat"];
         LogOffAgentStat(objCampaign, objAgentStat);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Get all currently Logged in Agent Stat
        /// </summary>
        /// <param name="campaignDBConnString"></param>
        /// <returns></returns>
        public static List <AgentStat> GetAgentStat(string campaignDBConnString, long campaignId)
        {
            List <AgentStat> agentStatList = new List <AgentStat>();
            AgentStat        agentStat;
            CampaignService  objCampService = null;
            DataSet          dsAgentStat    = null;

            try
            {
                objCampService = new CampaignService();
                dsAgentStat    = objCampService.GetAgentStat(campaignDBConnString, campaignId);

                foreach (DataRow drAgent in dsAgentStat.Tables[0].Rows)
                {
                    try
                    {
                        if (Convert.ToInt32(drAgent["StatusID"]) != (int)AgentLoginStatus.Pause)
                        {
                            if (drAgent["WrapTime"] != DBNull.Value)
                            {
                                agentStat          = new AgentStat();
                                agentStat.AgentID  = Convert.ToInt64(drAgent["AgentID"]);
                                agentStat.WrapTime = Convert.ToDecimal(drAgent["WrapTime"] != DBNull.Value ? drAgent["WrapTime"] : "0");
                                agentStat.TalkTime = Convert.ToDecimal(drAgent["TalkTime"] != DBNull.Value ? drAgent["TalkTime"] : "0");
                                agentStat.Calls    = Convert.ToInt32(drAgent["Calls"] != DBNull.Value ? drAgent["Calls"] : "0");
                                agentStatList.Add(agentStat);
                            }
                        }
                    }
                    catch (Exception ee)
                    {
                        if (!(ee is System.Threading.ThreadAbortException))
                        {
                            DialerEngine.Log.WriteException(ee, "Error in GetAgentStat1");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (!(ex is System.Threading.ThreadAbortException))
                {
                    DialerEngine.Log.WriteException(ex, "Error in GetAgentStat");
                }
                throw ex;
            }
            finally
            {
                dsAgentStat.Dispose();
                objCampService.Dispose();
                agentStat = null;
            }
            return(agentStatList);
        }
        private void LogOffAgentStat(Campaign objCampaign, AgentStat objAgentStat)
        {
            if (objAgentStat != null && objCampaign != null) // agent is already logged in campaign
            {
                CampaignService objCampService = new CampaignService();
                XmlDocument     xDocAgentStat  = new XmlDocument();
                XmlDocument     xDocCampaign   = new XmlDocument();

                objAgentStat.LogOffDate = DateTime.Now;
                objAgentStat.LogOffTime = DateTime.Now;

                xDocAgentStat.LoadXml(Serialize.SerializeObject(objAgentStat, "AgentStat"));
                xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign"));

                objAgentStat = (AgentStat)Serialize.DeserializeObject(
                    objCampService.InsertUpdateAgentStat(xDocCampaign, xDocAgentStat), "AgentStat");
            }
        }
        private void SendAgentStatInfo()
        {
            var agentConfig    = TinyIoCContainer.Current.Resolve <AgentConfig>();
            var pinpointConfig = TinyIoCContainer.Current.Resolve <PinpointConfig>();

            while (true)
            {
                IPEndPoint ip     = new IPEndPoint(IPAddress.Parse(pinpointConfig.CollectorIp), pinpointConfig.UdpStatListenPort);
                Socket     server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

                #region assemble agent stat batch entity

                var agentStatBatch = new TAgentStatBatch();
                agentStatBatch.AgentId        = agentConfig.AgentId;
                agentStatBatch.StartTimestamp = agentConfig.AgentStartTime;
                agentStatBatch.AgentStats     = new List <TAgentStat>();

                #endregion

                #region assemble agent stat entity

                var agentStat = new TAgentStat();
                agentStat.AgentId         = agentConfig.AgentId;
                agentStat.StartTimestamp  = agentConfig.AgentStartTime;
                agentStat.Timestamp       = TimeUtils.GetCurrentTimestamp();
                agentStat.CollectInterval = 5000;
                agentStat.Gc = new TJvmGc()
                {
                    Type = TJvmGcType.PARALLEL,
                    JvmMemoryHeapUsed    = 73842768,
                    JvmMemoryHeapMax     = 436207616,
                    JvmMemoryNonHeapUsed = 196555576,
                    JvmMemoryNonHeapMax  = -1,
                    JvmGcOldCount        = 5,
                    JvmGcOldTime         = 945,
                    JvmGcDetailed        = new TJvmGcDetailed()
                    {
                        JvmGcNewCount            = 110,
                        JvmGcNewTime             = 1666,
                        JvmPoolCodeCacheUsed     = 0.22167689005533855,
                        JvmPoolNewGenUsed        = 0.025880894190828566,
                        JvmPoolOldGenUsed        = 0.20353155869704026,
                        JvmPoolSurvivorSpaceUsed = 0.4635740007672991,
                        JvmPoolMetaspaceUsed     = 0.9706939329583961
                    }
                };
                agentStat.CpuLoad = new TCpuLoad()
                {
                    JvmCpuLoad    = 0.002008032128514056,
                    SystemCpuLoad = AgentStat.GetCpuLoad()
                };
                agentStat.Transaction = new TTransaction()
                {
                    SampledNewCount            = 0,
                    SampledContinuationCount   = 0,
                    UnsampledContinuationCount = 0,
                    UnsampledNewCount          = 0
                };
                agentStat.ActiveTrace = new TActiveTrace()
                {
                    Histogram = new TActiveTraceHistogram()
                    {
                        Version             = 0,
                        HistogramSchemaType = 2,
                        ActiveTraceCount    = new List <int>()
                        {
                            0, 0, 0, 0
                        }
                    }
                };
                agentStat.DataSourceList = new TDataSourceList()
                {
                    DataSourceList = new List <TDataSource>()
                    {
                        new TDataSource()
                        {
                            Id                = 1,
                            DatabaseName      = "test",
                            ServiceTypeCode   = 6050,
                            Url               = "jdbc:mysql://192.168.1.1:3306/test",
                            MaxConnectionSize = 8
                        }
                    }
                };

                #endregion

                for (var i = 0; i < 6; i++)
                {
                    agentStat.Timestamp -= 5000;
                    agentStatBatch.AgentStats.Add(agentStat);
                }

                try
                {
                    using (var serializer = new HeaderTBaseSerializer())
                    {
                        var data = serializer.serialize(agentStatBatch);
                        server.SendTo(data, ip);
                    }
                }
                catch (Exception ex)
                {
                    Logger.Current.Error(ex.ToString());
                }

                Thread.Sleep(5 * 60 * 1000);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Saves agent campaignmap details:
        /// Save Agent Stat and Agent Activity if isLogOff is false,
        /// else Update Log out status
        /// </summary>
        /// <returns></returns>
        private bool SaveAgentActivity(bool isLogoff)
        {
            Agent objAgent;

            if (Session["LoggedAgent"] != null)
            {
                objAgent = (Agent)Session["LoggedAgent"];

                if (lbxCampaign.SelectedValue != "")
                {
                    objAgent.CampaignID = Convert.ToInt64(lbxCampaign.SelectedValue);
                }

                AgentService objAgentService = new AgentService();
                XmlDocument  xDocAgent       = new XmlDocument();

                try
                {
                    xDocAgent.LoadXml(Serialize.SerializeObject(objAgent, "Agent"));

                    if (!isLogoff)
                    {
                        string chosenCampaignName = "";
                        if (objAgent.CampaignID != 0)
                        {
                            /*if (Request.QueryString["CampaignID"] != null && Request.QueryString["CampaignID"].ToString() == lbxCampaign.SelectedValue)
                             * {
                             *  if (Session["AgentStat"] != null)
                             *      objAgentStat = (AgentStat)Session["AgentStat"];
                             * }*/



                            // Get selected campaign details and login in agent stat
                            CampaignService objCampService = new CampaignService();

                            Campaign objCampaign = (Campaign)Serialize.DeserializeObject(objCampService.GetCampaignByCampaignID(objAgent.CampaignID), "Campaign");
                            Session["Campaign"] = objCampaign;
                            AgentStat objAgentStat;
                            objAgentStat           = new AgentStat();
                            objAgentStat.AgentID   = objAgent.AgentID;
                            objAgentStat.StatusID  = objAgent.AgentStatusID;
                            objAgentStat.LoginDate = objAgent.LoginTime;
                            objAgentStat.LoginTime = objAgent.LoginTime;

                            chosenCampaignName = objCampaign.Description;

                            XmlDocument xDocAgentStat = new XmlDocument();
                            XmlDocument xDocCampaign  = new XmlDocument();
                            xDocAgentStat.LoadXml(Serialize.SerializeObject(objAgentStat, "AgentStat"));
                            xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign"));

                            objAgentStat         = (AgentStat)Serialize.DeserializeObject(objCampService.InsertUpdateAgentStat(xDocCampaign, xDocAgentStat), "AgentStat");
                            Session["AgentStat"] = objAgentStat;
                        }
                        // change the campaign
                        objAgent = (Agent)Serialize.DeserializeObject(
                            objAgentService.AgentActivityInsertUpdate(xDocAgent), "Agent");
                        ActivityLogger.WriteAgentEntry(objAgent, "Campaign {0} with ID {1} has been chosen.", chosenCampaignName, objAgent.CampaignID);
                    }
                    else
                    {
                        objAgentService.UpdateAgentLogOut(xDocAgent); //Sets LogoutTime to now for specific agent
                        //LogOffAgentStat();
                        Session.Remove("LoggedAgent");
                    }

                    return(true);
                }
                catch (Exception ex)
                {
                    PageMessage = ex.Message;
                }
            }
            return(false);
        }
Ejemplo n.º 6
0
        private static string BuildScoreboardContent(Campaign campaign, long agentID)
        {
            DataSet dsAgentStat;
            string  boardContent = string.Empty;

            try
            {
                CampaignService objCampService = new CampaignService();
                dsAgentStat = objCampService.GetAgentStat(campaign.CampaignDBConnString, campaign.CampaignID);

                SortedList <decimal, AgentStat> lstRankedAgents = new SortedList <decimal, AgentStat>();
                DataRow dr;

                for (int i = 0; i < dsAgentStat.Tables[0].Rows.Count; i++)
                {
                    dr = dsAgentStat.Tables[0].Rows[i];
                    AgentStat tmpAgentStat = new AgentStat();
                    tmpAgentStat.AgentName      = dr["AgentName"].ToString();
                    tmpAgentStat.Status         = dr["Status"].ToString();
                    tmpAgentStat.AgentID        = (dr["AgentID"] == Convert.DBNull) ? 0 : Convert.ToInt64(dr["AgentID"]);
                    tmpAgentStat.LeadsSales     = (dr["LeadsSales"] == Convert.DBNull) ? Convert.ToInt16(0) : Convert.ToInt16(dr["LeadsSales"]);
                    tmpAgentStat.Presentations  = (dr["Presentations"] == Convert.DBNull) ? Convert.ToInt16(0) : Convert.ToInt16(dr["Presentations"]);
                    tmpAgentStat.Calls          = (dr["Calls"] == Convert.DBNull) ? Convert.ToInt16(0) : Convert.ToInt16(dr["Calls"]);
                    tmpAgentStat.LeadSalesRatio = (dr["LeadSalesRatio"] == Convert.DBNull) ? 0 : Convert.ToDecimal(dr["LeadSalesRatio"]);
                    tmpAgentStat.TalkTime       = (dr["TalkTime"] == Convert.DBNull) ? 0 : Convert.ToDecimal(dr["TalkTime"]);
                    tmpAgentStat.WaitingTime    = (dr["WaitingTime"] == Convert.DBNull) ? 0 : Convert.ToDecimal(dr["WaitingTime"]);
                    tmpAgentStat.PauseTime      = (dr["PauseTime"] == Convert.DBNull) ? 0 : Convert.ToDecimal(dr["PauseTime"]);
                    tmpAgentStat.WrapTime       = (dr["WrapTime"] == Convert.DBNull) ? 0 : Convert.ToDecimal(dr["WrapTime"]);
                    tmpAgentStat.LoginDate      = (dr["LoginDate"] == Convert.DBNull) ? DateTime.Now : Convert.ToDateTime(dr["LoginDate"]);

                    lstRankedAgents.Add(tmpAgentStat.LeadsSales, tmpAgentStat);
                }

                // Build HTML for page
                StringBuilder sb = new StringBuilder();
                sb.Append(@"<div>");
                sb.Append(@"<table cellspacing=""1"" cellpadding=""5"" rules=""all"" border=""1"" id=""grdAgent"" style=""border-color:Black;border-width:1px;border-style:solid;width:100%;"">");
                sb.Append(@"<tr align=""center"" style=""color:White;background-color:#333366;font-size:small;font-weight:bold;"">");
                sb.Append(@"<th scope=""col"">Name</th><th scope=""col"">Status</th><th scope=""col"">L/S</th><th scope=""col"">Presentations</th><th scope=""col"">Calls</th><th scope=""col"">Lead Sales Ratio</th><th scope=""col"">Talk Time</th><th scope=""col"">Ready Time</th><th scope=""col"">Pause Time</th><th scope=""col"">Wrap Time</th><th scope=""col"">Logged In</th>");
                sb.Append(@"</tr>");
                for (int i = 0; i < lstRankedAgents.Count; i++)
                {
                    string specialFormatting = "";
                    double rankingPercentile = 0;

                    AgentStat tmpAgentStat = lstRankedAgents.Values[i];

                    if (tmpAgentStat.AgentID == agentID)
                    {
                        // Colors and the like - formatting if the table entry is the active agent
                        switch (lstRankedAgents.Count)
                        {
                        case 1:
                            rankingPercentile = 100;
                            break;

                        default:
                            rankingPercentile = (1 - (i / lstRankedAgents.Count)) * 100;
                            break;
                        }

                        specialFormatting = @" align=""center"" style=""font-weight:bold;";
                        if (rankingPercentile > 66)
                        {
                            specialFormatting = specialFormatting + @"color:#339900;""";
                        }
                        else
                        {
                            if (rankingPercentile > 33)
                            {
                                specialFormatting = specialFormatting + @"color:#CC6600;""";
                            }
                            else
                            {
                                specialFormatting = specialFormatting + @"color:#CC0000;""";
                            }
                        }
                    }

                    sb.AppendFormat(@"<tr{11}><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td><td>{6}</td><td>{7}</td><td>{8}</td><td>{9}</td><td>{10}</td></tr>",
                                    tmpAgentStat.AgentName, tmpAgentStat.Status, tmpAgentStat.LeadsSales, tmpAgentStat.Presentations, tmpAgentStat.Calls, tmpAgentStat.LeadSalesRatio, tmpAgentStat.TalkTime, tmpAgentStat.WaitingTime, tmpAgentStat.PauseTime, tmpAgentStat.WrapTime, tmpAgentStat.LoginDate, specialFormatting);
                }
                sb.Append(@"</table>");
                sb.Append(@"</div>");
                boardContent = sb.ToString();
            }
            catch (Exception ex)
            {
                string strMsg = ex.Message;
                return(string.Empty);
            }
            return(boardContent);
        }