Esempio n. 1
0
        public async Task Delete(WwwContext context, WwwRun drun, bool bulk = false)
        {
            WwwRun run = await context.wwwRuns.Include(i => i.WwwEntity).ThenInclude(j => j.WwwClass).ThenInclude(k => k.WwwSchool).ThenInclude(l => l.WwwWalk).FirstOrDefaultAsync(f => f.ID == drun.ID);

            float dist = run.Distance;

            run.WwwEntity.TotalRuns                            -= dist;
            run.WwwEntity.WwwClass.TotalRuns                   -= dist;
            run.WwwEntity.WwwClass.WwwSchool.TotalRuns         -= dist;
            run.WwwEntity.WwwClass.WwwSchool.WwwWalk.TotalRuns -= dist;
            run.WwwEntity.Runs--;

            context.wwwRuns.Remove(run);
            if (bulk == false)
            {
                await context.SaveChangesAsync();
            }
        }
Esempio n. 2
0
        public async Task <WwwFeedback> Submit(WwwContext context, EntityRunFormData data, bool bulk = false)
        {
            if (data.Identifier == WwwData.Admin && data.Credential == WwwData.AdminCredential)
            {
                return new WwwFeedback()
                       {
                           EntPosition = 1337,
                           SchoolTotal = 1337
                       }
            }
            ;

            if (data.Credential != WwwData.Credential)
            {
                return new WwwFeedback()
                       {
                           EntPosition = -1
                       }
            }
            ;

            await semaphoreSlim.WaitAsync();

            WwwEntity ent = null;

            try
            {
                var walk = await context.wwwWalks.FirstAsync(f => f.Name == WwwData.s_walk);

                // var school = await context.wwwSchools.FirstAsync(f => f.Name == WwwData.s_school);
                var school = await context.wwwSchools.FirstAsync(f => f.WwwWalk == walk);

                WwwClass wwwClass = await context.wwwClasses.FirstOrDefaultAsync(f => f.Name == data.SchoolClass);

                WwwEntity entity = await context.wwwEntities
                                   .Include(i => i.WwwClass)
                                   .FirstOrDefaultAsync(f => f.Pseudonym == data.Identifier);

                if (wwwClass == null)
                {
                    if (wwwClass == null)
                    {
                        wwwClass           = new WwwClass();
                        wwwClass.WwwSchool = school;
                        wwwClass.Name      = data.SchoolClass;
                        wwwClass.Year      = 0;
                        string year = String.Empty;
                        for (int i = 0; i < wwwClass.Name.Length; i++)
                        {
                            if (Char.IsDigit(wwwClass.Name[i]))
                            {
                                year += wwwClass.Name[i];
                            }
                            else
                            {
                                break;
                            }
                        }
                        int iyear = 0;
                        if (int.TryParse(year, out iyear))
                        {
                            wwwClass.Year = iyear;
                        }
                        context.wwwClasses.Add(wwwClass);
                    }
                    await context.SaveChangesAsync();
                }

                if (entity == null)
                {
                    entity                     = new WwwEntity();
                    wwwClass.WwwSchool         = school;
                    wwwClass.WwwSchool.WwwWalk = walk;
                    entity.WwwClass            = wwwClass;
                    entity.Pseudonym           = data.Identifier;
                    context.wwwEntities.Add(entity);

                    wwwClass.TotalEntities++;
                    school.TotalEntities++;
                    walk.TotalEntities++;
                }

                if (entity.WwwClass == wwwClass)
                {
                    WwwRun run = new WwwRun();
                    run.WwwEntity = entity;
                    run.Time      = data.Time;
                    run.Distance  = data.Distance;

                    context.wwwRuns.Add(run);

                    entity.TotalRuns   += run.Distance;
                    wwwClass.TotalRuns += run.Distance;
                    school.TotalRuns   += run.Distance;
                    walk.TotalRuns     += run.Distance;

                    entity.Runs++;

                    if (bulk == false)
                    {
                        await context.SaveChangesAsync();

                        return(await GetFeedback(context, walk, school, wwwClass, entity));
                    }
                    else
                    {
                        ent = entity;
                        return(null);
                    }
                }
                else
                {
                    return(new WwwFeedback()
                    {
                        EntPosition = -2
                    });
                }
            }
            catch (Exception e)
            {
                logger.LogError(e.Message);
            }
            finally
            {
                semaphoreSlim.Release();
            }
            return(null);
        }