public async Task <IActionResult> PutProblem(Guid id, [FromBody] ProblemViewModel problem) { if (id != problem.Id) { return(BadRequest()); } try { Problem newProblem = _mapper.Map <Problem>(problem); foreach (var item in problem.ProblemTypes) { newProblem.ProblemTypeProblems.Add(new ProblemTypeProblem() { Problem = newProblem, ProblemTypeId = item.Id }); } await _problemService.Change(newProblem); newProblem = _problemService.GetProblem(newProblem.Id); ProblemViewModel loadedProblem = _mapper.Map <ProblemViewModel>(newProblem); loadedProblem.ProblemTypes = problem.ProblemTypes; loadedProblem.SubscribersCount = newProblem.Subscribers.Count; return(CreatedAtAction("GetProblem", new { id = newProblem.Id }, loadedProblem)); } catch (DbUpdateConcurrencyException) { if (!_problemService.Exist(id)) { return(NotFound()); } else { throw; } } }