public static LeaderBoardResponse GetLeaderBoard(string centerId) { List <LeaderBoardItem> leaderBoard = new List <LeaderBoardItem>(); List <AgentInfo> agents = AgentReader.GetAgentsForCenter(centerId); int rank = 0; foreach (AgentInfo agent in agents.OrderByDescending(a => a.Points)) { leaderBoard.Add(new LeaderBoardItem() { Name = agent.AgentName, TotalPoints = agent.Points, PhotoFileName = agent.PhotoFileName, Rank = ++rank }); if (rank >= 10) { break; } } return(new LeaderBoardResponse() { CenterName = AgentReader.GetCenterName(centerId), LeaderBoard = leaderBoard }); }
public static HeatMapViewResponse GetHeatMapView(string supervisorId) { var heatMapItems = new List <Dictionary <string, string> >(); List <KPIInfo> kpis = KPIReader.GetAllKPIInfo(); List <AgentKPIInfo> agentKpis = KPIReader.GetAgentKPI(); List <AgentInfo> agents = AgentReader.GetAgentsForSupervisor(supervisorId); string centerId = AgentReader.GetCenterIdForSupervisor(supervisorId); List <AgentInfo> centerAgents = AgentReader.GetAgentsForCenter(centerId); var result = from k in kpis join ak in agentKpis on k.KpiId equals ak.KpiId join a in agents on ak.AgentId equals a.AgentId orderby k.Category, k.KpiId, a.AgentName select new { a.AgentId, a.AgentName, a.Date, k.KpiId, k.KpiName, ak.KpiValue, k.Category }; var kpiGroups = result.GroupBy(a => a.KpiName).Select(g => g.FirstOrDefault()); foreach (var kpiGroup in kpiGroups) { var kpiRows = from a in result where a.KpiName.Equals(kpiGroup.KpiName) group a by a.AgentName into g select g.OrderByDescending(i => i.Date).FirstOrDefault(); var item = new Dictionary <string, string>(); item.Add("..Category", kpiGroup.Category); item.Add(".Behavior Attribute", kpiGroup.KpiName); var centerResult = from ak in agentKpis join ca in centerAgents on ak.AgentId equals ca.AgentId where ak.KpiId == kpiGroup.KpiId group ak by ak.KpiId into g select new { CenterAverage = g.Average(a => a.KpiValue) }; var sdResult = from ak in agentKpis join ca in centerAgents on ak.AgentId equals ca.AgentId where ak.KpiId == kpiGroup.KpiId select new { ak.KpiValue }; List <double> sdList = new List <double>(); foreach (var row in sdResult) { sdList.Add(row.KpiValue); } double centerAverage = Convert.ToInt32(centerResult.First().CenterAverage); item.Add(".Center Average", centerAverage.ToString("F")); double standardDeviation = StatisticsHelper.GetStandardDeviation(sdList); item.Add(".Standard Deviation", standardDeviation.ToString("F")); foreach (var row in kpiRows) { item.Add(row.AgentName, row.KpiValue.ToString("F")); } heatMapItems.Add(item); } return(new HeatMapViewResponse() { SupervisorName = AgentReader.GetSupervisorName(supervisorId), HeatMapView = heatMapItems }); }