public async Task Delete(WwwContext context, WwwSchool school, bool bulk = false) { var classes = await context.wwwClasses.Where(x => x.WwwSchool == school).ToListAsync(); foreach (var ent in classes) { await Delete(context, ent, true); } context.wwwSchools.Remove(school); if (bulk == false) { 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 <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); }