public IActionResult SubmitAssignment([FromBody] SubmitAssignmentModel model)
        {
            var assignment = _mapper.Map <Assignment>(model);

            _courseMaterialService.SubmitAssignment(assignment);
            return(Ok());
        }
Beispiel #2
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();
        }
Beispiel #3
0
        public ActionResult AssignmentSubmission(SubmitAssignmentModel model)
        {
            var userID  = User.Identity.GetUserId();
            var context = HttpContext.GetOwinContext().Get <ApplicationDbContext>();
            var selectedAssignmentId = Convert.ToInt64(Request.Form["asID"]);

            bool isUnitTest = false;

            Boolean result = AssignmentService.submitAssignmentService(userID, selectedAssignmentId, model, context, isUnitTest);

            return(RedirectToAction("Index", "Home"));
        }
Beispiel #4
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));
        }
Beispiel #5
0
        //New method passes a null assignment id to submission
        public ActionResult AssignmentSubmission(int assignmentId)
        {
            var selectedAssignmentId = assignmentId;
            var context           = HttpContext.GetOwinContext().Get <ApplicationDbContext>();
            var currentAssignment = context.Assignments.Where(x => x.AssignmentId == selectedAssignmentId).FirstOrDefault();

            var submitAssignmentModel = new SubmitAssignmentModel()
            {
                assignmentID      = selectedAssignmentId,
                currentAssignment = currentAssignment,
                SubmissionText    = ""
            };

            return(View(submitAssignmentModel));
        }
        public IActionResult UpdateAssignment(int id, [FromBody] SubmitAssignmentModel model)
        {
            // map model to entity and set id
            var assignment = _mapper.Map <Assignment>(model);

            assignment.Id = id;

            try
            {
                // update assignment submission
                _courseMaterialService.UpdateAssignment(assignment);
                return(Ok());
            }
            catch (AppException ex)
            {
                // return error message if there was an exception
                return(BadRequest(new { message = ex.Message }));
            }
        }
Beispiel #7
0
        public void submitSecondTextAssignment()
        {
            // Q: does a second text submission for same assignment remove the first and add the second in its place?
            //using [email protected] who already has one text submission submitted

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

            var  sUserId       = "fd6deecf-8a00-4458-a1a5-0810c3213b67"; //TestStudent TextSubmission
            long 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 second text submission for same assignment.";

            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);


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

            var yList   = _context.SubmissionGrades.Where(x => x.User.Id == sUserId).Where(x => x.Assignment.AssignmentId == (int)aAssignmentId).ToList();
            var ySingle = _context.SubmissionGrades.Where(x => x.User.Id == sUserId).Where(x => x.Assignment.AssignmentId == (int)aAssignmentId).FirstOrDefault();

            Assert.IsTrue(yList.Count() == 1);
            Assert.IsTrue(ySingle.TextSubmission.Equals(text));
        }
        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);
            }
        }