public async Task <IActionResult> SubmitSolutionAsync(int pid, [FromForm] string lang, [FromForm] string code) { var user = HttpContext.Session.GetString("user"); if (user is null) { return(Unauthorized("Not logged in.")); } if (code.Length > maxSolutionSize) { return(StatusCode(StatusCodes.Status413PayloadTooLarge, $"Solution size should be less than {maxSolutionSize} bytes.")); } if (!SolutionModel.LangMap.ContainsKey(lang)) { return(BadRequest("No such language.")); } var viewAll = await UserModel.Authorization.CanViewAllProblemsAsync(user); if (!viewAll) { if (await ProblemModel.IsProblemRestrictedAsync(pid)) { return(StatusCode(StatusCodes.Status403Forbidden, "This problem is private now.")); } } if (!await ProblemModel.IsProblemExists(pid)) { return(NotFound("No such problem.")); } var submit_id = await SolutionModel.SubmitProblemAsync(user, pid, SolutionModel.LangMap[lang], code); return(Ok(submit_id)); }