Example #1
0
        public async Task <IActionResult> Display(DisplayTestsViewModel displayTestViewModel)
        {
            if (ModelState.IsValid)
            {
                var exerciseResponse = new ExerciseResponse();
                exerciseResponse.UserId         = displayTestViewModel.UserId;
                exerciseResponse.ExerciseId     = displayTestViewModel.ExerciseId;
                exerciseResponse.TestInstanceId = displayTestViewModel.TestInstanceId;
                var answers = new List <MarkedAsCorrect>();
                foreach (var item in displayTestViewModel.Answers)
                {
                    if (item.Correct)
                    {
                        answers.Add(new MarkedAsCorrect()
                        {
                            AnswerId       = item.Id,
                            ExerciseId     = displayTestViewModel.ExerciseId,
                            TestInstanceId = displayTestViewModel.TestInstanceId,
                            UserId         = displayTestViewModel.UserId
                        });
                    }
                }
                exerciseResponse.MarkedAsCorrects = answers;
                await _testInstancesRepository.InsertExerciseResponseAsync(exerciseResponse);

                return(RedirectToAction(nameof(Display), new { id = displayTestViewModel.TestInstanceId }));
            }

            return(View(displayTestViewModel));
        }
Example #2
0
        public async Task <IActionResult> ExercisesCreate(
            [HttpTrigger(AuthorizationLevel.User, "post", Route = "exercises")]
            [RequestBodyType(typeof(ExerciseBody), "The exercise to create")] HttpRequest req,
            [SwaggerIgnore] ClaimsPrincipal user)
        {
            // user must be admin
            if (!user.IsInRole(UserType.Admin.ToString()))
            {
                return(ForbiddenObjectResult.Create(new ErrorResponse(ErrorCode.UNAUTHORIZED_ROLE_NO_PERMISSIONS)));
            }

            // deserialize request
            ExerciseBody exerciseBody;

            try {
                exerciseBody = await SerializationUtil.Deserialize <ExerciseBody>(req.Body);
            } catch (JsonException e) {
                return(new BadRequestObjectResult(new ErrorResponse(400, e.Message)));
            }

            // create exercise
            Exercise createdExercise = await this.exerciseService.CreateExercise(exerciseBody);

            // get exercise
            ExerciseResponse response = await this.exerciseService.GetExerciseById(createdExercise.Id);

            return(new OkObjectResult(response));
        }
Example #3
0
        public async Task <IActionResult> ExercisesGet(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "exercises/{exerciseId}")] HttpRequest req,
            int exerciseId)
        {
            // if the exercise does not exist
            if (!await this.exerciseService.Exists(exerciseId))
            {
                return(new NotFoundObjectResult(new ErrorResponse(ErrorCode.EXERCISE_NOT_FOUND)));
            }

            // get exercise
            ExerciseResponse exercise = await exerciseService.GetExerciseById(exerciseId);

            return(new OkObjectResult(exercise));
        }
Example #4
0
        public async Task <ExerciseResponse> InsertExerciseResponseAsync(ExerciseResponse exerciseResponse)
        {
            var markedAsCorrects = exerciseResponse.MarkedAsCorrects;

            exerciseResponse.MarkedAsCorrects = null;
            _context.ExerciseResponses.Add(exerciseResponse);
            await _context.SaveChangesAsync();

            foreach (var item in markedAsCorrects)
            {
                _context.MarkedAsCorrects.Add(item);
            }
            await _context.SaveChangesAsync();

            return(exerciseResponse);
        }
Example #5
0
        public async Task <ExerciseResponse> GetExerciseById(int exerciseId)
        {
            // get exercise
            Exercise exercise = await exerciseRepository.ReadAsync(exerciseId);

            // create response
            ExerciseResponse response = new ExerciseResponse
            {
                Id           = exercise.Id,
                Name         = exercise.Name,
                Media        = exercise.Media,
                Requirements = exercise.ExerciseRequirements.Select(r => r.Requirement).ToList(),
                Steps        = exercise.ExerciseSteps.Select(s => s.StepDescription).ToList(),
                Forms        = exercise.ExerciseForms.Select(f => f.MovementForm).ToList()
            };

            return(response);
        }