public async Task <IActionResult> SetActiveTrainingPlan([FromBody] UserTrainingForm data) { try { if (!ModelState.IsValid) { return(BadRequest()); } var trainingPlan = await _context.TrainingPlans.SingleOrDefaultAsync(p => p.Id == data.TrainingPlan.Id); if (trainingPlan == null) { return(NotFound(data.TrainingPlan)); } var user = await _context.Users.SingleOrDefaultAsync(i => i.Id == data.UserId); if (user == null) { return(NotFound(data.UserId)); } user.CurrentTrainingPlan = trainingPlan; await _context.SaveChangesAsync(); return(Ok(user)); } catch (Exception e) { Console.WriteLine(e); return(StatusCode(500)); } }
public async Task <IActionResult> RemoveTrainingFromUser([FromBody] UserTrainingForm data) { try { if (!ModelState.IsValid) { return(BadRequest()); } var user = await GetUserAsync(data.UserId); if (user == null) { return(NotFound(data.UserId)); } var trainingPlan = await _context.TrainingPlans.SingleOrDefaultAsync(t => t.Id == data.TrainingPlan.Id); if (trainingPlan == null || user.Trainings.All(t => t.Id != trainingPlan.Id)) { return(NotFound(data.TrainingPlan)); } user.Trainings.Remove(trainingPlan); await _context.SaveChangesAsync(); return(Ok(user)); } catch (Exception e) { return(StatusCode(500)); } }
public async Task <IActionResult> AddTrainingToUser([FromBody] UserTrainingForm data) { try { if (!ModelState.IsValid) { return(BadRequest()); } var user = await _context.Users.SingleOrDefaultAsync(d => d.Id == data.UserId); if (user == null) { return(NotFound(data.UserId)); } var trainingPlan = await _context.TrainingPlans.SingleOrDefaultAsync(t => t.Id == data.TrainingPlan.Id); if (trainingPlan == null) { if (data.TrainingPlan.Id != 0) { return(NotFound(data.TrainingPlan)); } } user.Trainings.Add(data.TrainingPlan); await _context.SaveChangesAsync(); var addedTraining = user.Trainings.LastOrDefault(); var workoutDays = new List <TrainingDayWorkout>(); foreach (var day in addedTraining?.Days) { foreach (var workout in _context.Workouts.Where(w => day.Workouts.Any(x => x.Id == w.Id))) { workoutDays.Add(new TrainingDayWorkout { TrainingDay = day, TrainingDayId = day.Id, Workout = workout, WorkoutId = workout.Id }); } } _context.TrainingDayWorkouts.AddRange(workoutDays); await _context.SaveChangesAsync(); user.PrepareSerialize(_context.Workouts.ToList()); return(Ok(user)); } catch (Exception e) { return(StatusCode(500)); } }