public async Task <WorkoutSessionDetailDto> CreateSession(string currentUserId, int workoutId, WorkoutSessionDetailDto sessionDetail) { if (sessionDetail == null) { throw new ArgumentNullException(nameof(sessionDetail)); } // Add the sessionDetail to the db var newlyCreatedSession = _context.Sessions.Add(new Session { Date = sessionDetail.Date, WorkoutId = sessionDetail.WorkoutId }); await _context.SaveChangesAsync(); // Edit the sessionDetail id sessionDetail.SessionId = newlyCreatedSession.Entity.Id; // Add sessionDetail sets foreach (var exercise in sessionDetail.Exercises) { for (var setIndex = 0; setIndex < exercise.Reps.Length; setIndex++) { _context.Sets.Add(new Set { ExerciseId = exercise.ExerciseId, SessionId = sessionDetail.SessionId, Reps = exercise.Reps[setIndex], Weight = exercise.Weight[setIndex], Unit = Enums.Unit.Kg, UsesBands = false, UsesChains = false }); } } await _context.SaveChangesAsync(); return(sessionDetail); }
public async Task <ActionResult <WorkoutSessionDetailDto> > AddSession(int workoutId, WorkoutSessionDetailDto workoutSessionDetailDto) { if (string.IsNullOrEmpty(CurrentUserId)) { return(Unauthorized(new { message = $"Unable to create session for workout with id {workoutId}, no user is currently logged in." })); } if (workoutSessionDetailDto == null) { return(BadRequest(new { message = $"Unable to create session for workout with id {workoutId}, session details are null." })); } return(Ok(await _workoutRepository.CreateSession(CurrentUserId, workoutId, workoutSessionDetailDto))); }