public async Task <ActionResult> Draft([FromBody] ExamSubmission submission) { if (submission == null || submission.ExamAnswers == null || submission.ExamAnswers.Count == 0 || string.IsNullOrWhiteSpace(submission.ExamVersion)) { return(BadRequest()); } if (!IsValidVersion(submission.ExamVersion)) { return(NotFound()); } var drafts = await UserSubmissionsAsync(); var draft = drafts.Value.SingleOrDefault(s => s.Version == submission.ExamVersion); if (draft == null) { draft = new AuditExamSubmission { IsSubmitted = false, UserID = drafts.Key.Id, Version = submission.ExamVersion, }; db_.AuditExamSubmissions.Add(draft); } draft.RawSubmission = JsonConvert.SerializeObject(submission); draft.SubmitTime = DateTime.Now; await db_.SaveChangesAsync(); return(Ok()); }
public async Task <ActionResult> Submit([FromBody] ExamSubmission submission) { if (submission == null || submission.ExamAnswers == null || submission.ExamAnswers.Count == 0) { return(BadRequest()); } if (!IsValidVersion(submission.ExamVersion)) { return(NotFound()); } var submissions = await UserSubmissionsAsync(); var submit = submissions.Value.SingleOrDefault(s => s.Version == submission.ExamVersion); if (submit == null) { submit = new AuditExamSubmission { UserID = submissions.Key.Id, Version = submission.ExamVersion, }; } else if (submit.IsSubmitted) { return(BadRequest()); } submit.IsSubmitted = true; submit.RawSubmission = JsonConvert.SerializeObject(submission); ExamResult result = GetResult(submission); submit.SubmitTime = result.SubmitTime; submit.HasPassed = result.HasPassed; submit.Score = result.Score; submit.RawResult = JsonConvert.SerializeObject(result); await db_.SaveChangesAsync(); return(Json(result)); }