public static function createFromRequest(SubmitSolutionRequest $request, Problem $problem, Contest $contest = null) { assert(Auth::check()); assert($request->isFileFieldOK('source')); $source = $request->popSourceInfo(); $verdict = $problem->getSubmissionVerdict($source['content'], $source['ext']); $data = ['user_id' => Auth::user()->id, 'contest_id' => !is_null($contest) ? $contest->id : null, 'problem_id' => $problem->id, 'source' => $source['content'], 'source_kind' => $source['ext'], 'verdict' => $verdict]; return Submission::create($data); }