예제 #1
0
        public ActionResult Create(VirtualClassroomViewModel viewModel, string[] selectedClassrooms)
        {
            var assignment = new Assignment
            {
                TaskTitle       = viewModel.Assignment.TaskTitle,
                TaskDescription = viewModel.Assignment.TaskDescription,
                TaskAvailable   = viewModel.Assignment.TaskAvailable,
                AvailableDate   = (DateTime)viewModel.Assignment.AvailableDate,
                DueDate         = (DateTime)viewModel.Assignment.DueDate,
                PointsWorth     = viewModel.Assignment.PointsWorth,
                Classrooms      = new List <VirtualClassroom>()
            };

            foreach (var classroomId in selectedClassrooms)
            {
                var classroom = _context.VirtualClassrooms.Find(int.Parse(classroomId));
                assignment.Classrooms.Add(classroom);
            }
            foreach (var classroom in assignment.Classrooms)
            {
                foreach (var student in classroom.Students)
                {
                    Grade grade = new Grade()
                    {
                        Id             = Guid.NewGuid(),
                        PointsReceived = 0
                    };
                    _context.Grades.Add(grade);

                    var completedAssignment = new CompletedAssignment
                    {
                        AssignmentId       = assignment.Id,
                        StudentId          = student.StudentId,
                        CompletedDateTime  = null,
                        VirtualClassroomId = classroom.Id,
                        GradeId            = grade.Id
                    };
                    _context.CompletedAssignments.Add(completedAssignment);
                }
            }
            assignment.FileDetails = AddFilesDetailsToAssignment();
            _context.Assignments.Add(assignment);
            _context.SaveChanges();

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> CompletedAssignment(VirtualClassroomViewModel classroom, int id)
        {
            var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

            CompletedAssignment completedAssignment = _context.CompletedAssignments.Where(a => a.AssignmentId == id).Single(s => s.StudentId == user.Student.StudentId && s.VirtualClassroomId == classroom.VirtualClassroom.Id);

            completedAssignment.Title       = classroom.CompletedAssignment.Title;
            completedAssignment.Description = classroom.CompletedAssignment.Description;
            completedAssignment.Submitted   = true;

            List <CompletedAssignmentFileDetails> fileDetails = new List <CompletedAssignmentFileDetails>();

            for (int i = 0; i < Request.Files.Count; i++)
            {
                var file = Request.Files[i];

                if (file != null && file.ContentLength > 0)
                {
                    var fileName = Path.GetFileName(file.FileName);
                    CompletedAssignmentFileDetails fileDetail = new CompletedAssignmentFileDetails()
                    {
                        FileName              = fileName,
                        Extension             = Path.GetExtension(fileName),
                        FileId                = Guid.NewGuid(),
                        CompletedAssignmentId = completedAssignment.Id
                    };
                    fileDetails.Add(fileDetail);

                    var path = Path.Combine(Server.MapPath("~/App_Data/Upload/"),
                                            fileDetail.FileId + fileDetail.Extension);
                    file.SaveAs(path);
                }
            }
            completedAssignment.CompletedAssignmentFileDetails = fileDetails;
            _context.CompletedAssignments.AddOrUpdate(completedAssignment);
            _context.SaveChanges();
            new JsonResult {
                Data = "Successfully "
            };
            return(RedirectToAction("ClassroomTasks", new { id = classroom.VirtualClassroom.Id }));
        }