예제 #1
0
        public void SubmitFileUploadAssignment() //[email protected]
        {
            //Q: can a student submit a file upload assignment?

            //prep

            var _context = new MackTechGroupProject.Models.ApplicationDbContext();

            var sUserId       = "7033fb11-e3e3-465a-831c-55a0dd215343"; //TestStudent TextSubmission
            var aAssignmentId = 164;                                    //MATH 1040 - Assignment 2 - Upload file of scanned homework

            var currentAssignment = _context.Assignments.Where(x => x.AssignmentId == aAssignmentId).FirstOrDefault();
            var currentStudent    = _context.Users.Where(x => x.Id == sUserId).FirstOrDefault();

            string fileName = "Test_Document.docx";
            //string path = HostingEnvironment.MapPath("~/Content/");
            var filePath = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName, "MackTechGroupProject", "Content", fileName);

            //https://stackoverflow.com/questions/7466687/how-to-create-an-instance-of-httppostedfilebaseor-its-inherited-type
            FileStream fileStream     = new FileStream(filePath, FileMode.Open);
            MemoryFile fileSubmission = new MemoryFile(fileStream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", fileName);

            //create a submissionGrade object
            SubmissionGrades submissionGrade = new SubmissionGrades()
            {
                User           = currentStudent,
                Assignment     = currentAssignment,
                SubmissionDate = DateTime.Now,
                TextSubmission = null,
                FileSubmission = "UnitTestFileSubmission",
                Grade          = null
            };

            SubmitAssignmentModel model = new SubmitAssignmentModel
            {
                File = fileSubmission,
                currentAssignment = currentAssignment,
                assignmentID      = (int)aAssignmentId
            };

            bool isUnitTest = true;

            //perform operations
            Boolean result = AssignmentService.submitAssignmentService(sUserId, aAssignmentId, model, _context, isUnitTest);

            //verify and interpret results
            Assert.IsTrue(result);

            var y = _context.SubmissionGrades.Where(x => x.User.Id == sUserId && x.Assignment.AssignmentId == aAssignmentId).FirstOrDefault();

            Assert.IsTrue(y.FileSubmission.Contains(fileName));

            fileStream.Close();
        }
예제 #2
0
        public void submitTextAssignment() //[email protected]
        {
            //Q: can a student submit a text assignment?

            //prep

            var _context = new MackTechGroupProject.Models.ApplicationDbContext();

            var sUserId       = "7033fb11-e3e3-465a-831c-55a0dd215343"; //TestStudent TextSubmission
            var aAssignmentId = 148;                                    //MATH 1040 - Assignment 1 - text submission assignment

            var    currentAssignment = _context.Assignments.Where(x => x.AssignmentId == aAssignmentId).FirstOrDefault();
            var    currentStudent    = _context.Users.Where(x => x.Id == sUserId).FirstOrDefault();
            string text = "This is a unit Test.";

            //create a submissionGrade object
            SubmissionGrades submissionGrade = new SubmissionGrades()
            {
                User           = currentStudent,
                Assignment     = currentAssignment,
                SubmissionDate = DateTime.Now,
                TextSubmission = text,
                FileSubmission = null,
                Grade          = null
            };

            SubmitAssignmentModel model = new SubmitAssignmentModel
            {
                SubmissionText    = text,
                currentAssignment = currentAssignment,
                assignmentID      = (int)aAssignmentId
            };

            bool isUnitTest = true;

            //perform operations
            Boolean result = AssignmentService.submitAssignmentService(sUserId, aAssignmentId, model, _context, isUnitTest);

            //perform operations
            //Boolean result = AssignmentService.submitTextAssignmentService(aAssignmentId, submissionGrade, _context);


            //verify and interpret results
            Assert.IsTrue(result);

            var y = _context.SubmissionGrades.Where(x => x.User.Id == sUserId && x.Assignment.AssignmentId == 148).FirstOrDefault();

            Assert.IsTrue(y.TextSubmission.Equals(text));
        }
        //deprecated
        public static Boolean submitTextAssignmentService(long selectedAssignmentId, SubmissionGrades submissionGrade, ApplicationDbContext context)
        {
            bool hasAssignment = context.Assignments.Any(x => x.AssignmentId == selectedAssignmentId);

            if (hasAssignment)
            {
                context.SubmissionGrades.Add(submissionGrade);

                //save changes to database
                context.SaveChanges();

                return(true);
            }
            else
            {
                return(false);
            }
        }
        public static Boolean submitAssignmentService(String userID, long selectedAssignmentId, SubmitAssignmentModel model, ApplicationDbContext context, bool isUnitTest)
        {
            string path              = "";
            var    currentStudent    = context.Users.Where(x => x.Id == userID).FirstOrDefault();
            var    File              = model.File;
            var    currentAssignment = context.Assignments.Where(x => x.AssignmentId == selectedAssignmentId).FirstOrDefault();

            bool hasSubmission = AssignmentService.HasCurrentSubmission(selectedAssignmentId, userID, context);

            if (hasSubmission)
            {
                var submissionToBeRemoved = context.SubmissionGrades.Where(x => x.Assignment.AssignmentId == selectedAssignmentId && x.User.Id == userID).FirstOrDefault();

                //if FILE, use above to query file path and delete file from content folder
                if (File != null)
                {
                    String filename = submissionToBeRemoved.FileSubmission;

                    if (isUnitTest == false)
                    {
                        path = HostingEnvironment.MapPath("~/Content/fileAssignments/");
                    }

                    if (isUnitTest == true)
                    {
                        path = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName, "MackTechGroupProject", "fileAssignments");
                    }

                    String fileSubmissionPath = path + filename;
                    System.IO.File.Delete(fileSubmissionPath);
                }

                //remove row from table
                context.SubmissionGrades.Remove(submissionToBeRemoved);
                context.SaveChanges();
            }


            if (File != null)
            {
                if (isUnitTest == false)
                {
                    path = HostingEnvironment.MapPath("~/Content/fileAssignments/");
                }

                if (isUnitTest == true)
                {
                    path = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName, "MackTechGroupProject", "fileAssignments");
                }

                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                Guid   g                  = Guid.NewGuid();
                String filename           = System.IO.Path.GetFileName(File.FileName);
                String fileSubmissionPath = path + filename + "$" + g;
                File.SaveAs(fileSubmissionPath);

                SubmissionGrades submissionGrade = new SubmissionGrades()
                {
                    User           = currentStudent,
                    Assignment     = currentAssignment,
                    SubmissionDate = DateTime.Now,
                    TextSubmission = null,
                    FileSubmission = filename + "$" + g,
                    Grade          = null
                };

                context.SubmissionGrades.Add(submissionGrade);
                context.SaveChanges();
                return(true);
            }
            //method for unit testing
            else if (model.SubmissionText != null)
            {
                SubmissionGrades submissionGrade = new SubmissionGrades()
                {
                    User           = currentStudent,
                    Assignment     = currentAssignment,
                    SubmissionDate = DateTime.Now,
                    TextSubmission = model.SubmissionText,
                    FileSubmission = null,
                    Grade          = null
                };
                context.SubmissionGrades.Add(submissionGrade);
                context.SaveChanges();
                return(true);
            }
            else
            {
                return(false);
            }
        }