示例#1
0
        public async Task <IActionResult> Create(int assignmentId, EditSubmissionModel model, ICollection <IFormFile> files)
        {
            if (files.Count == 0)
            {
                return(new BadRequestObjectResult(new { error = "No files selected" }));
            }

            var user = User.Claims.FirstOrDefault(c => c.Type.Equals("name"))?.Value;
            // TODO: Validate user

            var submission = new Submission
            {
                AssignmentId = assignmentId,
                FirstName    = model.FirstName,
                LastName     = model.LastName
            };

            // save submission first
            if (!await this.submissionManager.SaveSubmissionAsync(submission))
            {
                return(BadRequest());
            }

            var submissionFiles = new List <StudentFile>();

            // add files:
            // TODO: Check for supported File Extensions
            foreach (var file in files)
            {
                var submissionFile = new StudentFile
                {
                    SubmissionId = submission.Id,
                    FileName     = file.FileName
                };

                // TODO: Check encoding etc. Assume UTF-8 for now
                using (var fileStream = file.OpenReadStream())
                {
                    var buffer = new byte[fileStream.Length];
                    fileStream.Read(buffer, 0, int.MaxValue);
                    var content = System.Text.Encoding.UTF8.GetString(buffer);
                    submissionFile.Content = content;
                }

                submissionFiles.Add(submissionFile);
            }

            await this.submissionManager.SaveFilesAsync(submissionFiles);

            var accessToken = await HttpContext.Authentication.GetTokenAsync("access_token");

            Task.Run(() => this.serviceConsumer.TokenizeSubmissions(submission.Id, user, accessToken));
            return(RedirectToAction("Index", new { assignmentId = assignmentId }));
        }
示例#2
0
 public ActionResult Index(string shortName, EditSubmissionModel model)
 {
     return(Content(model.submission.Title));
 }