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); } }
/// <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); } }
/// <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); }
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); }