Ejemplo n.º 1
0
        public Workout GetWorkout(DateTime entryDate)
        {
            Workout workout = new Workout(){
                ExerciseEntries = new List<ExerciseEntry>(),
                WorkoutDate = entryDate
            };
            using (this.connection)
            {
                this.connection.Open();
                var results = this.connection.Query("SELECT * FROM [TheChallenge].[DimitryUshakov].[Workout] a,[TheChallenge].[DimitryUshakov].[Event] b WHERE WorkoutDate=@EntryDate AND a.EventId = b.EventId", new { EntryDate = entryDate }).ToList();

                foreach(var result in results){
                    workout.ExerciseEntries.Add(new ExerciseEntry()
                    {
                        Time = TimeSpan.FromMilliseconds(result.EntryTime),
                        Distance = result.Distance,
                        ExerciseId = result.EventId,
                        Reps = result.Reps,
                        Weight = result.Weight,
                        Name = result.EventName,
                    });
                }

            }

            return workout;
        }
Ejemplo n.º 2
0
        public bool SaveWorkout(Workout workout)
        {
            bool result = false;
            using (this.connection)
            {
                this.connection.Open();
                int numberOfEntries = 0;
                foreach (ExerciseEntry exerciseEntry in workout.ExerciseEntries)
                {
                    numberOfEntries = numberOfEntries + connection.Execute(@"insert into [TheChallenge].[DimitryUshakov].[Workout] values(@WorkoutDate,@EventId, @Reps,@Weight,@EventTime,@Distance)", new { WorkoutDate = workout.WorkoutDate, EventId = exerciseEntry.ExerciseId, Reps = exerciseEntry.Reps, Weight = exerciseEntry.Weight, EventTime = exerciseEntry.Time.HasValue?exerciseEntry.Time.Value.TotalMilliseconds:0, Distance = exerciseEntry.Distance });
                }
                if (numberOfEntries > 0)
                    result = true;
            }

            return result;
        }
Ejemplo n.º 3
0
 public HttpResponseMessage Post(SaveWorkoutViewModel value)
 {
     //TODO: move to validation logic
     if (value == null)
         return new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest) { ReasonPhrase = "no valid request content present" };
     if(value.EntryDate == null || value.EntryDate == DateTime.MinValue || value.EntryDate == DateTime.MaxValue)
         return new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest) { ReasonPhrase = "no valid date present" };
     if (value.Exercises == null || value.Exercises.Count == 0)
         return new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest) { ReasonPhrase = "no exercises present" };
     Workout workout = new Workout()
     {
         ExerciseEntries = new List<ExerciseEntry>(),
         WorkoutDate = value.EntryDate.Date
     };
     foreach (SaveExerciseViewModel saveExerciseViewModel in value.Exercises)
     {
         workout.ExerciseEntries.Add(AutoMapper.Mapper.Map<ExerciseEntry>(saveExerciseViewModel));
     }
     if (workoutFactory.SaveWorkout(workout, workoutRepository))
         return new HttpResponseMessage(System.Net.HttpStatusCode.Created);
     else
         return new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest) { ReasonPhrase = "unable to save workout" };
 }
Ejemplo n.º 4
0
 public static bool SaveWorkout(Workout workout, DateTime dateTime)
 {
     using (var redisManager = new PooledRedisClientManager("[email protected]:9038"))
     {
         using (var client = redisManager.GetCacheClient())
         {
             //check if workout for that date already exists
             Workout existingWorkout = client.Get<Workout>(String.Format(selectWorkout, dateTime));
             if (existingWorkout != null && existingWorkout.ExerciseEntries != null)
             {
                 foreach (var exerciseEntry in workout.ExerciseEntries)
                 {
                     existingWorkout.ExerciseEntries.Add(exerciseEntry);
                 }
                 return client.Set<Workout>(String.Format(selectWorkout, dateTime), existingWorkout);
             }
             else
             {
                 AddWorkoutDate(dateTime);
                 return client.Add<Workout>(String.Format(selectWorkout, dateTime), workout);
             }
         }
     }
 }
Ejemplo n.º 5
0
        public IList<Meal> GetMeals(DateTime entryDate)
        {
            Workout workout = new Workout()
            {
                ExerciseEntries = new List<ExerciseEntry>(),
                WorkoutDate = entryDate
            };
            using (this.connection = new SqlConnection(this.connectionString))
            {
                this.connection.Open();
                //add foodentry with all data that is also populated from food_repository
                var results = this.connection.Query(@"select MealDate as [Date], FoodId, ServingSize, ServingType, msre_desc as ServingDesc from thechallenge.dimitryushakov.[meal] a,
                                                        thechallenge.dimitryushakov.food_des b,
                                                        thechallenge.dimitryushakov.food_weight c
                                                        where cast(mealdate as date) = @EntryDate
                                                        and cast(b.ndb_no as int) = a.foodid
                                                        and b.ndb_no = c.nbd_no
                                                        and cast(c.seq as int) = a.servingtype", new { EntryDate = entryDate }).ToList();

                foreach (var result in results)
                {
                    workout.ExerciseEntries.Add(new ExerciseEntry()
                    {
                        Time = TimeSpan.FromMilliseconds(result.EntryTime),
                        Distance = result.Distance,
                        ExerciseId = result.EventId,
                        Reps = result.Reps,
                        Weight = result.Weight,
                        Name = result.EventName,
                    });
                }

            }

            return null;
        }