public async Task <ActionResult> Create(TrainingSessionInputModel input) { var userId = this.currentUserService .UserId; var result = await this.trainingSessionsService .CreateTrainingSessionAsync(userId, input); return(Ok(result)); }
public async Task <TrainingSessionDto> CreateTrainingSessionAsync(string userId, TrainingSessionInputModel input) { var trainingSessionForDb = input.MapTo <TrainingSession>(); trainingSessionForDb.UserId = userId; var messageData = new TrainingSessionCreatedMessage { TrainingSessionId = trainingSessionForDb.Id }; var message = new Message(messageData); await this.Save(trainingSessionForDb, message); await this.publisher.Publish(messageData); await this.MarkMessageAsPublished(message.Id); var trainingSessionFromDb = await this.context .TrainingSessions .Include(x => x.ExercisePractices) .FirstOrDefaultAsync(x => x.Id == trainingSessionForDb.Id); var trainingSessionToReturn = trainingSessionFromDb .MapTo <TrainingSessionDto>(); return(trainingSessionToReturn); }