Example #1
0
        public async Task <ServiceResponse <string> > DownloadAssignmentFile(GetAssignmentFileDto dto)
        {
            ServiceResponse <string> response = new ServiceResponse <string>();
            User user = await _context.Users.Include(u => u.ProjectGroups).ThenInclude(pgu => pgu.ProjectGroup).FirstOrDefaultAsync(u => u.Id == GetUserId());

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

            if (assignment == null || assignment.FilePath == null)
            {
                response.Data    = "No submission";
                response.Message = "There is no submission under this id";
                response.Success = false;
                return(response);
            }
            Course course = await _context.Courses.FirstOrDefaultAsync(c => c.Id == assignment.AfilliatedCourseId);

            ProjectGroup projectGroup = await _context.ProjectGroups.FirstOrDefaultAsync(pg => pg.AffiliatedCourseId == course.Id);

            if (course == null || projectGroup == null)
            {
                response.Data    = "Not allowed";
                response.Message = "You are not allowed to see file for this assignment";
                response.Success = false;
                return(response);
            }
            response.Data = assignment.FilePath;
            return(response);
        }
Example #2
0
        public async Task <IActionResult> GetAssignmentFile(int assignmentId)
        {
            GetAssignmentFileDto dto = new GetAssignmentFileDto {
                AssignmentId = assignmentId
            };
            ServiceResponse <string> response = await _assignmentService.DownloadAssignmentFile(dto);

            if (!response.Success)
            {
                return(BadRequest(response));
            }
            string path = response.Data;
            string type = GetContentType(path);

            if (type == null)
            {
                return(BadRequest("this file type is not supported"));
            }
            var memory = new MemoryStream();

            using (var stream = new FileStream(path, FileMode.Open))
            {
                await stream.CopyToAsync(memory);
            }
            memory.Position = 0;
            return(File(memory, type, Path.GetFileName(path)));
        }