Exemple #1
0
        public async Task <IActionResult> CreateOrUpdateSession([FromRoute] int?userId, [FromBody] WorkoutSessionRequest sessionRequest)
        {
            if (userId == null)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid || sessionRequest.CurrentDate.HasValue == false)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            var routines          = Mapper.Map <List <WorkoutRoutine> >(sessionRequest.Routines);
            var exercises         = Mapper.Map <List <Exercise> >(sessionRequest.Exercises);
            var concreteExercises = Mapper.Map <List <ConcreteExercise> >(sessionRequest.ConcreteExercises);

            var session = await _repository.AddOrUpdateSession(userId,
                                                               sessionRequest.CurrentDate.Value,
                                                               routines,
                                                               exercises,
                                                               concreteExercises);

            if (session == null)
            {
                return(BadRequest("Add or udpate Failed for Session..."));
            }

            var sessionToReturn = Mapper.Map <WorkoutSessionDTO>(session);

            return(CreatedAtRoute(
                       routeName: "GetSession",
                       routeValues: new
            {
                userId = userId,
                sessionId = sessionToReturn.ID
            },
                       value: sessionToReturn));
        }