Beispiel #1
0
        public async Task Delete(WwwContext context, WwwEntity dentity, bool bulk = false)
        {
            WwwEntity entity = await context.wwwEntities.Include(i => i.WwwClass).ThenInclude(j => j.WwwSchool).ThenInclude(k => k.WwwWalk).FirstOrDefaultAsync(f => f.ID == dentity.ID);

            var runs = await context.wwwRuns.Where(x => x.WwwEntity == entity).ToListAsync();

            foreach (var run in runs)
            {
                await Delete(context, run, true);
            }

            entity.WwwClass.TotalEntities--;
            entity.WwwClass.WwwSchool.TotalEntities--;
            entity.WwwClass.WwwSchool.WwwWalk.TotalEntities--;

            context.Remove(entity);
            if (bulk == false)
            {
                await context.SaveChangesAsync();
            }
        }
Beispiel #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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
    IEnumerator LoadSceneRes <T>(string fileName, bool resourcesLoad, bool isUnload, System.Action <T> finishLoad) where T : UnityEngine.Object
    {
        while (!Caching.ready)
        {
            yield return(null);
        }

        string path = "";

        path = "http://192.168.7.137/assetbundle" + fileName + ".unity3d";



        Debug.Log("LoadSceneRes path: " + path);
        WWW         www       = null;
        WwwEntity   wwwEneity = null;
        AssetBundle bundle    = null;

        //if (wwwCache.ContainsKey(path))
        //{
        //    Debug.Log(wwwCache + " exist !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~" + path + " add request " + wwwCache);
        //}
        //else
        //{
        //    wwwEneity = new WwwEntity();
        //    wwwCache.Add(path, wwwEneity);
        //    Debug.Log(wwwCache + "not exist !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~" + path + " add to " + wwwEneity);
        //}

        //wwwCache[path].requestCount += 1;
        //wwwCache[path].totalCount += 1;
        //if (assetBundles.ContainsKey(path))
        //    www = assetBundles[path];
        //else
        //{
        //    www = WWW.LoadFromCacheOrDownload(path, 1);
        //    //
        //    Debug.Log(path + " add to " + wwwCache);
        //    assetBundles.Add(path, www);

        //}
        yield return(www);

        while (!www.isDone)
        {
            yield return(null);
        }

        if (www.error != null)
        {
            Debug.LogError("cannot load res : " + path + "   error:" + www.error);
        }

        bundle = www.assetBundle;
        //wwwCache[path].requestCount -= 1;
        if (finishLoad != null)
        {
            if (bundle == null)
            {
                //Debug.LogError(wwwCache[path] + " bundle is null : " + path);
            }
            else
            {
                if (bundle.mainAsset == null)
                {
                    Debug.LogWarning("bundle.mainAsset is null : " + path);
                    finishLoad(null);
                }
                else
                {
                    finishLoad(bundle.mainAsset as T);
                }
            }
        }
        //if (wwwCache[path].requestCount <= 0)
        //{
        //    Debug.Log("to delete ~~~~~~~~~~~~~" + path + " remove " + wwwCache);
        //    assetBundles.Remove(path);
        //    if (isUnload)
        //    {
        //        bundle.Unload(false);
        //    }
        //}
    }