public async Task <IActionResult> Post([FromBody] TestViewModel viewModel)
        {
            if (viewModel == null)
            {
                return(new BadRequestResult());
            }

            try
            {
                var testModel = viewModel.Adapt <Test>();
                testModel.UserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

                var createdTest = await _repository.CreateTest(viewModel.Adapt <Test>());

                var createdTestViewModel = createdTest.Adapt <TestViewModel>();
                createdTestViewModel.UserCanEdit = true;

                await _hubContext.Clients.All.TestCreated();

                return(new JsonResult(createdTestViewModel, JsonSettings));
            }
            catch (Exception e)
            {
                return(new StatusCodeResult(500));
            }
        }
        public async Task <IActionResult> Put([FromBody] TestViewModel viewModel)
        {
            if (viewModel == null)
            {
                return(new BadRequestResult());
            }

            if ((await _repository.GetTest(viewModel.Id)).UserId != User.FindFirst(ClaimTypes.NameIdentifier)?.Value &&
                !User.IsInRole("Admin"))
            {
                return(new UnauthorizedResult());
            }

            try
            {
                var updatedTest = await _repository.UpdateTest(viewModel.Adapt <Test>());

                if (updatedTest == null)
                {
                    return(NotFound(new
                    {
                        Error = $"Error during updating test with identifier {viewModel.Id}"
                    }));
                }

                var updatedTestViewModel = updatedTest.Adapt <TestViewModel>();
                updatedTestViewModel.UserCanEdit =
                    updatedTest.UserId == User.FindFirst(ClaimTypes.NameIdentifier)?.Value || User.IsInRole("Admin");

                return(new JsonResult(updatedTestViewModel, JsonSettings));
            }
            catch (Exception e)
            {
                return(new StatusCodeResult(500));
            }
        }