예제 #1
0
파일: DbService.cs 프로젝트: ipax77/www
        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();
            }
        }
예제 #2
0
파일: DbService.cs 프로젝트: ipax77/www
        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();
        }
예제 #3
0
파일: DbService.cs 프로젝트: ipax77/www
        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();
        }
예제 #4
0
파일: DbService.cs 프로젝트: ipax77/www
        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);
        }