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