public void GetPlayerRanking(Ranking result)
 {
     result.PlayerPoints = new List <DayPoint>();
     foreach (var playerInfo in result.WeekInformation.Select(x => x.DayInformation).FirstOrDefault())
     {
         foreach (var weekInfo in result.WeekInformation)
         {
             var playerPoint = new DayPoint
             {
                 PlayerInfo = new Player
                 {
                     Id   = playerInfo.UserId,
                     Name = playerInfo.UserName
                 },
                 DayInfo = new Day
                 {
                     DayOfWeek        = weekInfo.DayOfWeek,
                     MatchInformation = weekInfo.MatchInformation,
                     Name             = weekInfo.Day
                 },
                 RoundBattle = new RoundBattle
                 {
                     MouthOfYear = result.Month,
                     WeekOfMonth = result.WeekOfMonth,
                     Year        = result.Year
                 },
                 Point = weekInfo.DayInformation.Where(x => x.UserId == playerInfo.UserId).Select(x => x.Point).FirstOrDefault()
             };
             result.PlayerPoints.Add(playerPoint);
         }
     }
 }
Example #2
0
        public async Task <List <DayWeight> > GetWeightBetween(DayPoint startDate, DayPoint endDate)
        {
            var list = await Where(w =>

                                   (w.Date.Year == startDate.Year && w.Date.Year < endDate.Year && w.Date.DayOfYear >= startDate.Day) ||
                                   (w.Date.Year == startDate.Year && w.Date.Year == endDate.Year && w.Date.DayOfYear >= startDate.Day && w.Date.DayOfYear <= endDate.Day) ||
                                   (w.Date.Year > startDate.Year && w.Date.Year < endDate.Year) ||
                                   (w.Date.Year == endDate.Year && w.Date.Year > startDate.Year && w.Date.Day <= endDate.Day))
                       .Select(w => new DayWeight()
            {
                DayPoint = new DayPoint()
                {
                    Day  = w.Date.DayOfYear,
                    Year = w.Date.Year
                },
                Weight = w.Value
            }).ToListAsync();

            if (list.Any() == false)
            {
                return(list);
            }

            list = list.OrderBy(w => w.DayPoint).ToList();

            DayWeight last = list[0];

            DayRange dayRange = new DayRange(startDate, endDate);

            dayRange.ForEach(d =>
            {
                var weight = list.FirstOrDefault(w => w.DayPoint == d);
                if (weight != null)
                {
                    last = weight;
                }
                else
                {
                    list.Add(new DayWeight()
                    {
                        Weight   = last.Weight,
                        DayPoint = d
                    });
                }
            });

            return(list);
        }
Example #3
0
        public ActivityPoint[] GetPointsForActivity(int IUID)
        {
            var preResult = new SortedDictionary<string, DayPoint>();

            var command = connection.CreateCommand();
            command.CommandText = "Select Delta, Time from Activity WHERE IUID = $IUID AND time >= datetime('now','-30 days','localtime')";
            command.Parameters.AddWithValue("$IUID", IUID);
            using (var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    var delta = reader.GetInt32(0);
                    var day = reader.GetDateTime(1).ToString("yyyy-MM-dd");
                    if (preResult.ContainsKey(day))
                    {
                        if (delta > 0)
                            preResult[day].Added += delta;
                        else
                            preResult[day].Removed -= delta;
                    } else
                    {
                        if (delta > 0)
                            preResult.Add(day, new DayPoint { Added = delta, Removed = 0 });
                        else
                            preResult.Add(day, new DayPoint { Added = 0, Removed = -delta });
                    }
                }
            }
            command.CommandText = "Select Count from Items WHERE UID = $IUID";
            int itemCount;
            using (var reader = command.ExecuteReader())
            {
                reader.Read();
                itemCount = reader.GetInt32(0);
            }

            bool isFirstElement = true;
            DayPoint prevValue = new DayPoint();
            foreach (var x in preResult.Reverse())
            {
                var val = x.Value;
                if (isFirstElement)
                {
                    val.Count = itemCount;
                    isFirstElement = false;
                } else
                {
                    val.Count = prevValue.Count - prevValue.Added + prevValue.Removed;
                }
                prevValue = val;
            }

            var result = new ActivityPoint[30];
            var localDate = DateTime.Now;
            for (var day = 0; day < 30; day++)
            {
                var dayKey = localDate.AddDays(-day).ToString("yyyy-MM-dd");
                if (preResult.ContainsKey(dayKey))
                {
                    var dayData = preResult[dayKey];
                    result[day] = new ActivityPoint { Count = dayData.Count, In = dayData.Added, Out = dayData.Removed };
                } else
                {
                    result[day] = new ActivityPoint { Count = -1, In = 0, Out = 0 };
                }
            }
            result = result.Reverse().ToArray();
            if (result[0].Count == -1)
                result[0].Count = 0;
            var lastCount = result[0].Count;
            for (var day = 1; day < 30; day++)
            {
                var val = result[day];
                if (val.Count == -1)
                    val.Count = lastCount;
                lastCount = val.Count;
            }

            return result;
        }