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); } } }
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); }
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; }