public async Task <IActionResult> UploadCode([FromBody] CodeUploadRequest codeUpload) { var user = await GetCurrentUser(); var upload = new Upload(); var uploadData = new UploadData(); var task = await _context.Tasks .Include(t => t.Languages) .Include(t => t.Tests) .Include(t => t.Checker) .SingleOrDefaultAsync(t => t.Id == codeUpload.TaskId); if (task == null) { ModelState.AddModelError(nameof(codeUpload.TaskId), "Task not found"); return(BadRequest(ModelState)); } upload.Task = task; upload.TaskId = codeUpload.TaskId; upload.UserId = user.Id; upload.User = user; if (!await _accessService.CanAdd(upload, user)) { return(Forbid()); } var language = await _context.Languages.FindAsync(codeUpload.LanguageId); if (language == null || task.Languages.All(l => l.LanguageId != codeUpload.LanguageId)) { ModelState.AddModelError(nameof(codeUpload.LanguageId), "Language not found"); return(BadRequest(ModelState)); } upload.Language = language; upload.Points = 0; upload.LanguageId = codeUpload.LanguageId; upload.UploadDate = DateTime.Now; upload.Status = UploadStatus.New; upload.TestingFinished = false; _context.Uploads.Add(upload); await _context.SaveChangesAsync(); uploadData.Id = upload.Id; uploadData.Code = codeUpload.Code; _uploadDataRepository.Add(uploadData); _ = _testingService.AddToTestingQueue(upload); return(Ok(upload.Id)); }
internal void GenerateCodeUploads() { var codeUpload = new CodeUploadRequest { Id = Guid.NewGuid(), Code = "code", TaskId = _task.Id, LanguageId = _language.Id }; _codeUpload = codeUpload; }