예제 #1
0
        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();
        }
예제 #2
0
        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);
            }
        }