private async Task GetSleep(SqlConnection connection1, DateTime dateIni, DateTime dateEnd) { string cmd = "SELECT v.userid,DATEADD(dd, 0, DATEDIFF(dd, 0, DATEDIFF(dd, 0, SWITCHOFFSET(TODATETIMEOFFSET(v.[timestamp], '+00:00'), v.utcoffset)))) as timestamp, " + "v.totalsleep " + "FROM ValidicSleep v " + "LEFT JOIN users u on v.userid = u.validicid " + "where " + "(DATEADD(dd, 0, DATEDIFF(dd, 0, DATEDIFF(dd, 0, SWITCHOFFSET(TODATETIMEOFFSET(v.[timestamp],'+00:00'),v.utcoffset)))) between @timestampini and @timestampend) " + "order by v.userid, DATEADD(dd, 0, DATEDIFF(dd, 0, DATEDIFF(dd, 0, SWITCHOFFSET(TODATETIMEOFFSET(v.[timestamp],'+00:00'),v.utcoffset)))) desc, " + "v.totalsleep desc"; SqlCommand command1 = new SqlCommand(cmd, connection1); SqlParameter parameter = new SqlParameter("@timestampini", SqlDbType.DateTime); parameter.Value = dateIni; command1.Parameters.Add(parameter); parameter = new SqlParameter("@timestampend", SqlDbType.DateTime); parameter.Value = dateEnd; command1.Parameters.Add(parameter); SqlDataReader reader = await command1.ExecuteReaderAsync(); bool flag = true; flag = await reader.ReadAsync(); while (flag) { string iduser = reader.GetString(0); double sleep = 0; bool flagid = true; bool start = true; while (flagid && flag) { if (start) { sleep = Convert.ToDouble(reader.GetDecimal(2)); } flag = await reader.ReadAsync(); if (flag) { if (iduser != reader.GetString(0)) { flagid = false; } } } LeonAPICalculations.ValidicCategoryPoints categoryPoints = new LeonAPICalculations.ValidicCategoryPoints(); int points = categoryPoints.GetSleepPoints(sleep); await UpdateSleep(connection1, iduser, dateIni, sleep); await UpdateSleepPoints(connection1, iduser, dateIni, points); } reader.Close(); }
private async Task CalculaPoinsFitness(SqlConnection connection1, string iduser, DateTime dateIni, List <Activity> activities) { if (activities.Count() > 0) { ActivityFitness actFitness = new ActivityFitness(); int count = 0; while (count < activities.Count) { Activity act = activities[count]; DateTime endTime = act.start.AddSeconds(act.duration); count++; while (count < activities.Count) { if (activities[count].start > endTime) { break; } else if (activities[count].calories > act.calories) { act = activities[count]; endTime = act.start.AddSeconds(act.duration); } count++; } LeonAPICalculations.ValidicCategoryPoints categoryPoints = new LeonAPICalculations.ValidicCategoryPoints(); string name = GetActivityNameFitness(act.activity); var distance = act.distance * 0.000621371; var duration = act.duration / 60; var points = categoryPoints.GetFitnesPoints(name, duration, distance, act.calories); FillDataFitness(actFitness, name, act, points); } await UpdateFitness(connection1, iduser, dateIni, actFitness); await UpdateFitnessPoints(connection1, iduser, dateIni, actFitness); } }