public async Task <IActionResult> PutContestAsync(int id, [FromBody] TeacherContestViewModel putContest) { if (!ModelState.IsValid) { return(new ObjectResult(new ApiDataResult { Error = PutContestResultType.Wrong, Data = new { ModelState } }) { StatusCode = StatusCodes.Status422UnprocessableEntity }); } if (id != putContest.Id) { return(BadRequest(new ApiResult { Error = PutContestResultType.Wrong })); } var userId = _authService.GetUserIdFromRequest(Request.HttpContext.User.Claims); var result = await _contestService.PutContestAsync(putContest, userId); switch (result.Error) { case PutContestResultType.Unauthorized: return(new ObjectResult(result) { StatusCode = StatusCodes.Status401Unauthorized }); case PutContestResultType.ConcurrencyException: return(BadRequest(result)); case PutContestResultType.ContestNotFound: return(NotFound(result)); case PutContestResultType.Wrong: return(new ObjectResult(result) { StatusCode = StatusCodes.Status422UnprocessableEntity }); case PutContestResultType.Error: return(BadRequest(result)); case PutContestResultType.Ok: return(Ok(result)); default: throw new ArgumentOutOfRangeException(); } }