public async Task Seed(WwwContext context, WwwCreate NewRun = null) { Random rng = new Random(); List <DateTime> dates = new List <DateTime>(); DateTime edate = DateTime.Today; for (int i = 0; i < 60; i++) { dates.Add(edate); edate.AddDays(-1); } for (int i = 0; i < 1000; i++) { EntityRunFormData data = new EntityRunFormData(); WwwWalk walk = context.wwwWalks.Include(i => i.WwwSchools).First(f => f.isActive == true); data.Walk = walk.Name; data.School = walk.WwwSchools.First().Name; int index = rng.Next(WwwData.s_classes.Length); data.SchoolClass = WwwData.s_classes[index]; data.Distance = (float)rng.Next(1, 41); data.Identifier = Guid.NewGuid().ToString("N"); index = rng.Next(dates.Count); data.Time = dates[index]; var ent = await Submit(context, data, true); } await context.SaveChangesAsync(); }
public async Task <WwwFeedback> GetFeedback(WwwContext context, WwwWalk walk, WwwSchool school, WwwClass wwwclass, WwwEntity entity) { WwwFeedback feedback = new WwwFeedback(); feedback.SchoolPosition = (await context.wwwSchools.AsNoTracking().OrderByDescending(o => o.TotalRuns).ToListAsync()).FindIndex(f => f.ID == school.ID) + 1; feedback.SchoolPercentage = MathF.Round(school.TotalRuns * 100 / walk.TotalRuns, 2); feedback.SchoolTotal = MathF.Round(school.TotalRuns, 2); feedback.ClassPosition = (await context.wwwClasses.AsNoTracking().OrderByDescending(o => o.TotalRuns).ToListAsync()).FindIndex(f => f.ID == wwwclass.ID) + 1; feedback.ClassPercentage = MathF.Round(wwwclass.TotalRuns * 100 / walk.TotalRuns, 2); feedback.ClassTotal = MathF.Round(wwwclass.TotalRuns, 2); feedback.EntPosition = (await context.wwwEntities.AsNoTracking().OrderByDescending(o => o.TotalRuns).ToListAsync()).FindIndex(f => f.ID == entity.ID) + 1; feedback.EntPercentage = MathF.Round(entity.TotalRuns * 100 / walk.TotalRuns, 2); feedback.EntTotal = MathF.Round(entity.TotalRuns, 2); var years = await context.wwwClasses.AsNoTracking().Select(s => s.Year).Distinct().ToArrayAsync(); List <KeyValuePair <int, float> > YearList = new List <KeyValuePair <int, float> >(); foreach (var year in years) { float sum = await context.wwwClasses.AsNoTracking().Where(x => x.Year == year).SumAsync(s => s.TotalRuns); YearList.Add(new KeyValuePair <int, float>(year, sum)); if (year == wwwclass.Year) { feedback.YearTotal = sum; } } feedback.YearPosition = YearList.Select(s => s.Value).OrderByDescending(o => o).ToList().FindIndex(f => f == feedback.YearTotal) + 1; feedback.YearPercentage = MathF.Round(feedback.YearTotal * 100 / walk.TotalRuns, 2); return(feedback); }
public async Task Delete(WwwContext context, WwwWalk walk) { var schools = await context.wwwSchools.Where(x => x.WwwWalk == walk).ToListAsync(); foreach (var school in schools) { await Delete(context, school, true); } context.wwwWalks.Remove(walk); await context.SaveChangesAsync(); }
public void Init(WwwContext context) { WwwCounter c1 = context.wwwCounters.FirstOrDefault(f => f.Name == "GetCurrent"); if (c1 == null) { c1 = new WwwCounter() { Name = "GetCurrent" }; WwwCounter c2 = new WwwCounter() { Name = "Years" }; WwwCounter c3 = new WwwCounter() { Name = "Classes" }; context.wwwCounters.AddRange(new WwwCounter[] { c1, c2, c3 }); context.SaveChanges(); } var walk = context.wwwWalks.FirstOrDefault(f => f.Name == WwwData.s_walk); if (walk != null) { return; } walk = new WwwWalk() { Name = WwwData.s_walk, TotalDistance = WwwData.TotalDistance, isActive = true }; var school = new WwwSchool() { Name = WwwData.s_school, WwwWalk = walk }; context.wwwSchools.Add(school); context.SaveChanges(); }
public async Task Create(WwwContext context, WwwCreate Create) { WwwWalk walk = new WwwWalk(); walk = new WwwWalk(); walk.isActive = true; walk.Name = Create.Name; walk.Start = DateTime.UtcNow; walk.TotalDistance = Create.TotalDistance; context.wwwWalks.Add(walk); WwwSchool school = new WwwSchool(); school.WwwWalk = walk; school.Name = Create.SchoolName; context.wwwSchools.Add(school); await context.SaveChangesAsync(); }
public async Task <float> GetCurrent(WwwContext context) { WwwWalk walk = await context.wwwWalks.FirstAsync(f => f.Name == WwwData.s_walk); return(walk.TotalRuns); }