public async Task <IActionResult> Download(Guid solutionId) { var solutions = context .Solutions .Where(s => s.Id == solutionId); if (!IsAdmin && !User.IsResultsViewer()) { solutions = solutions.Where(s => s.UserId == UserId); } var solution = await solutions .Select(s => new { s.Language, s.Raw }) .SingleOrDefaultAsync() ?? throw StatusCodeException.NotFount; var solutionContent = Encoding.UTF8.GetBytes(solution.Raw); return(File(solutionContent, "application/octet-stream", $"Program{GetExtensionsForLanguage(solution.Language)}")); }