//Get an aggregate of all of the dashboard data public IActionResult Get() { List<DashboardData> ddList = _context.DashboardData.ToList(); DashboardData agg = new DashboardData(); agg.AssignmentGrades = ddList.SelectMany(x => x.AssignmentGrades) .GroupBy(x => x.Grade) .Select(x => new AssignmentGrade() { Grade = x.Key, RecordCount = x.Sum(y => y.RecordCount) }) .ToList(); agg.Attendance = ddList.SelectMany(x => x.Attendance) .GroupBy(x => x.Day) .Select(x => new AttendanceCount() { Day = x.Key, Count = x.Sum(y => y.Count) }) .ToList(); agg.ReferralCounts = ddList.SelectMany(x => x.ReferralCounts) .GroupBy(x => x.GradeLevel) .Select(x => new ReferralCount() { GradeLevel = x.Key, NumberOfReferrals = x.Sum(y => y.NumberOfReferrals) }) .ToList(); return Ok(agg); }
public void Main(string[] args) { IServiceCollection collection = new ServiceCollection(); collection.AddTransient(typeof(IModelCreator), typeof(ModelCreator)); collection.AddSingleton(typeof(SchoolDataContext)); collection.AddTransient(typeof(IDocumentProvider), x => { return new MongoDBDocumentProvider("mongodb://localhost"); }); collection.AddTransient(typeof(IEncryption), typeof(Encryption)); collection.AddTransient(typeof(User)); collection.AddTransient(typeof(School)); IServiceProvider provider = collection.BuildServiceProvider(); IModelCreator creator = provider.GetService<IModelCreator>(); SchoolDataContext context = provider.GetService<SchoolDataContext>(); User l = context.Users.FirstOrDefault(x => x.UserName == "admin"); if(l == null) { User user = creator.LoadModel<User>(); //Setup user user.Id = Guid.NewGuid(); user.FirstName = "Admin"; user.LastName = "User"; user.Email = "*****@*****.**"; user.ScopeLevel = ScopeLevel.SuperUser; user.UserName = "******"; user.SetPassword("password"); context.Create(user); Console.WriteLine("User/Login created successfully!"); } else { Console.WriteLine("Login already created"); } IEnumerable<School> schools = context.Schools; foreach(School sc in schools) { DashboardData dd = context.DashboardData.FirstOrDefault(x => x.SchoolId == sc.Id); if(dd == null) { //Generate random dashboard data for each school dd = new DashboardData(); dd.AssignmentGrades = new List<AssignmentGrade>(); Random rnd = new Random(); foreach (string grd in new string[] { "A", "B", "C", "D", "F" }) { dd.AssignmentGrades.Add(new AssignmentGrade() { Grade = grd, RecordCount = rnd.Next(100) }); } dd.Attendance = new List<AttendanceCount>(); foreach(string day in new string[] { "1/2/2015", "1/3/2015", "1/4/2015" }) { dd.Attendance.Add(new AttendanceCount() { Day = day, Count = rnd.Next(100) }); } dd.ReferralCounts = new List<ReferralCount>(); foreach (string grd in new string[] { "9th", "10th", "11th", "12th" }) { dd.ReferralCounts.Add(new ReferralCount() { GradeLevel = grd, NumberOfReferrals = rnd.Next(10) }); } dd.SchoolId = sc.Id; context.Create(dd); } } }