コード例 #1
0
        public async Task <IActionResult> SubmitFile(IFormFile file, int assignmentId)
        {
            AddAssignmentFileDto dto = new AddAssignmentFileDto {
                File = file, AssignmentId = assignmentId
            };
            ServiceResponse <string> response = await _assignmentService.SubmitAssignmentFile(dto);

            if (response.Success)
            {
                return(Ok(response));
            }
            return(NotFound(response));
        }
コード例 #2
0
        public async Task <ServiceResponse <string> > SubmitAssignmentFile(AddAssignmentFileDto file)
        {
            ServiceResponse <string> response = new ServiceResponse <string>();
            User user = await _context.Users.Include(u => u.InstructedCourses).FirstOrDefaultAsync(u => u.Id == GetUserId());

            Assignment assignment = await _context.Assignments.FirstOrDefaultAsync(a => a.Id == file.AssignmentId);

            if (file.File == null || assignment == null)
            {
                response.Data    = "No submission";
                response.Message = "There is no submission under this id or you didnt provide a file to submit";
                response.Success = false;
                return(response);
            }
            Course course = await _context.Courses.FirstOrDefaultAsync(s => s.Id == assignment.AfilliatedCourseId);

            if (course == null)
            {
                response.Data    = "No submission";
                response.Message = "There is no course under this id";
                response.Success = false;
                return(response);
            }
            if (course.Instructors.FirstOrDefault(c => c.UserId == user.Id) == null)
            {
                response.Data    = "Not allowed";
                response.Message = "You are not allowed to post file for this assignment";
                response.Success = false;
                return(response);
            }
            if (Path.GetExtension(file.File.FileName) != ".pdf")
            {
                response.Data    = "Bad Request";
                response.Message = "Assignments should be pdf";
                response.Success = false;
                return(response);
            }
            var target = Path.Combine(_hostingEnvironment.ContentRootPath, string.Format("{0}/{1}/{2}",
                                                                                         "StaticFiles/Assignments", assignment.AfilliatedCourseId, assignment.Id));

            Directory.CreateDirectory(target);
            if (file.File.Length <= 0)
            {
                response.Success = false;
            }
            else
            {
                string oldfile = Directory.GetFiles(target).FirstOrDefault();
                if (File.Exists(oldfile))
                {
                    File.Delete(oldfile);
                }
                var filePath = Path.Combine(target, string.Format("{0}_{1}",
                                                                  course.Name.Trim().Replace(" ", "_"),
                                                                  assignment.Title.Trim().Replace(" ", "_")) + ".pdf");
                assignment.FilePath = filePath;
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    await file.File.CopyToAsync(stream);
                }
                response.Data        = target;
                response.Message     = "file succesfully saved.";
                assignment.CreatedAt = DateTime.Now;
                assignment.HasFile   = true;
            }
            _context.Assignments.Update(assignment);
            await _context.SaveChangesAsync();

            return(response);
        }