public async Task <int> AddTrainingAsync(TrainingSocketsModelWithOwner training) { using (ShapeAppDbContext ctx = new ShapeAppDbContext()) { try { User owner = await ctx.Users.FirstAsync(u => u.Id == training.Owner.UserId); Training trainingDb = new Training { Title = training.Title, TimeStamp = training.TimeStamp, Duration = training.Duration, IsPublic = training.Global, Type = training.Type, Owner = owner }; await ctx.Training.AddAsync(trainingDb); await ctx.SaveChangesAsync(); int createdTrainingId = ctx.Training.ToList().Last().Id; if (training.Exercises != null && training.Exercises.Any()) { foreach (var exercise in training.Exercises) { int createdExerciseId; if (exercise.Id > 0) { createdExerciseId = exercise.Id; } else { await ctx.Exercise.AddAsync(exercise); await ctx.SaveChangesAsync(); createdExerciseId = ctx.Exercise.ToList().Last().Id; } await ctx.TrainingExercises.AddAsync(new TrainingExercise { ExerciseId = createdExerciseId, TrainingId = createdTrainingId }); await ctx.SaveChangesAsync(); } } return(createdTrainingId); } catch (Exception e) { return(-1); } } }
/// <summary> /// Retrieves a training with its owner, by id /// </summary> /// <param name="actualRequest">the client request to be handled</param> /// <returns>the response to the given request</returns> private async Task <ActualRequest> GetTrainingByIdAsync(ActualRequest actualRequest) { Request request = actualRequest.Request; int trainingId = Convert.ToInt32(request.Argument.ToString()); TrainingSocketsModelWithOwner training = await trainingRepo.GetTrainingByIdAsync(trainingId); Request responseRequest = new Request { ActionType = ActionType.TRAINING_GET_BY_ID.ToString(), Argument = JsonSerializer.Serialize(training) }; return(new ActualRequest { Request = responseRequest, Images = null }); }
/// <summary> /// Persists a given training to the database /// </summary> /// <param name="actualRequest">the client request to be handled</param> /// <returns>the response to the given request</returns> private async Task <ActualRequest> AddTrainingAsync(ActualRequest actualRequest) { Request request = actualRequest.Request; TrainingSocketsModelWithOwner training = JsonSerializer.Deserialize <TrainingSocketsModelWithOwner>(request.Argument.ToString()); Console.WriteLine("XXXXXXXXXXXXXXXXXXX" + training.TimeStamp); int trainingId = await trainingRepo.AddTrainingAsync(training); Request responseRequest = new Request { ActionType = ActionType.TRAINING_CREATE.ToString(), Argument = JsonSerializer.Serialize(trainingId) }; return(new ActualRequest { Request = responseRequest, Images = null }); }