public byte[] GetDecryptedAssignment(Guid submissionId)
        {
            SubmissionViewModel submission = _assignmentsService.GetSubmission(submissionId);

            FileStream fs = new FileStream(submission.FilePath, FileMode.Open, FileAccess.Read);

            MemberViewModel teacher = _membersService.GetMember(submission.Member.TeacherEmail);

            byte[] key = CryptographicHelper.AsymmetricDecrypt(
                Convert.FromBase64String(submission.SymmetricKey), teacher.PrivateKey);

            byte[] iv = CryptographicHelper.AsymmetricDecrypt(
                Convert.FromBase64String(submission.SymmetricIV), teacher.PrivateKey);


            MemoryStream ms = new MemoryStream();

            fs.CopyTo(ms);

            byte[] encryptedAssignment = ms.ToArray();

            byte[] decryptedAssignment = CryptographicHelper.SymmetricDecrypt(
                encryptedAssignment,
                key, iv);

            return(decryptedAssignment);
        }
        public async Task <IActionResult> OnGetAsync(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(NotFound());
            }

            var sub = await _context.Submissions.Include(m => m.Location).FirstOrDefaultAsync(m => m.StringId.ToString() == id);

            Submission = new SubmissionViewModel
            {
                Id           = sub.Id,
                Talent       = sub.Talent,
                Email        = sub.Email,
                FileName     = sub.FileName,
                FirstName    = sub.FirstName,
                LastName     = sub.LastName,
                LocationName = sub.Location.Name,
                ManagerName  = sub.ManagerName,
                PhoneNumber  = sub.PhoneNumber,
                DateCreated  = sub.DateCreated
            };

            if (Submission == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns all submissions from all users for a specific milestone.
        /// </summary>
        public SubmissionViewModel GetSubmissionByIdMilestoneID(int MileID)
        {
            var submission = _db.Submission.SingleOrDefault(x => x.MilestoneID == MileID);

            if (submission == null)
            {
                return(null);
            }

            var ViewModel = new SubmissionViewModel
            {
                UserName     = submission.UserName,
                AssignmentID = submission.AssignmentID,
                MilestoneID  = submission.MilestoneID,
                Output       = submission.Output,
                Error        = submission.Error,
                FilePath     = submission.FilePath,
                Grade        = submission.Grade,
                Status       = submission.Status,
                DrMemory     = submission.DrMemory,
                ToSubmit     = submission.ToSubmit,
                Comment      = submission.Comment
            };

            return(ViewModel);
        }
        public void SaveCodeToDb(SubmissionViewModel viewModel)
        {
            SubmissionViewModel Model = CompileCode(viewModel);

            if (Model != null)
            {
                var model = new Submission
                {
                    AssignmentID             = Model.AssignmentID,
                    Date                     = DateTime.Now,
                    ProjectID                = Model.ProjectID,
                    StudentID                = Model.StudentID,
                    SubmittedCode            = Model.SubmittedCode,
                    SubmissionOutput         = Model.SubmissionOutput,
                    ExpectedSubmissionOutput = Model.ExpectedSubmissionOutput,
                };
                if (viewModel.ExpectedSubmissionOutput == viewModel.SubmissionOutput)
                {
                    model.Result = "Accepted!";
                }
                else
                {
                    model.Result = "Wrong answer!";
                }

                _db.Submissions.Add(model);
                _db.SaveChanges();
            }
            else
            {
                throw new ArgumentNullException();
            }
        }
Ejemplo n.º 5
0
        // GET: Submissions/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var submission = await _context.Submissions
                             .Include(s => s.AE)
                             .Include(s => s.Manuscript)
                             .SingleOrDefaultAsync(m => m.Id == id);


            SubmissionViewModel SubmissionVM = new SubmissionViewModel()
            {
                Submission          = await _context.Submissions.Include(s => s.AE).Include(s => s.Manuscript).SingleOrDefaultAsync(m => m.Id == id),
                Submissions         = _context.Submissions.Include(a => a.AE).Include(a => a.AE.ApplicationUser).Where(a => a.ManuscriptId == submission.ManuscriptId),
                SubmissionReviewers = _context.SubmissionReviewers.Include(a => a.ReviewerUser).Include(a => a.CieAeUser).Where(a => a.SubmissionId == submission.Id),
            };


            if (submission == null)
            {
                return(NotFound());
            }

            return(View(SubmissionVM));
        }
Ejemplo n.º 6
0
        public IActionResult Index([FromForm] SubmissionViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                viewModel.Errors = "Some errors were detected in your submission. Please correct any field errors and re-submit.";
                return(View(viewModel));
            }

            var employees = ReadEmployeesFromViewModel(viewModel);

            if (employees != null)
            {
                var employeesList = employees.ToList();
                try
                {
                    GeneratePayslips(employeesList, viewModel);
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Error generating Payslips from uploaded Employee file");
                    viewModel.Errors = $"Error generating Payslips from uploaded Employee file: {e.Message}";
                    return(View(viewModel));
                }

                viewModel.Employees = employeesList.Select(e => new EmployeeViewModel(e));
            }
            return(View(viewModel));
        }
Ejemplo n.º 7
0
 public ValidationResult IsValid(SubmissionViewModel submissionViewModel)
 {
     //TODO need to add validation here
     return(new ValidationResult {
         IsValid = true, ErrorMessage = string.Empty
     });
 }
        public IActionResult Upload(string idEnc)
        {
            SubmissionViewModel myModel = new SubmissionViewModel();

            myModel.TaskId = idEnc;
            return(View(myModel));
        }
Ejemplo n.º 9
0
        public IActionResult Upload(SubmissionViewModel newSub)
        {
            var tasks = _tasksService.GetTasks();

            ViewBag.Tasks = tasks;

            newSub.Id            = new Guid();
            newSub.Owner         = HttpContext.User.Identity.Name;
            newSub.TimeSubmitted = DateTime.Now;

            if (string.IsNullOrEmpty(newSub.FileName))
            {
                _logger.LogError("Title is empty or NULL");
                return(View("Error", new ErrorViewModel()
                {
                    Message = "Title cannot be empty"
                }));
            }
            else
            {
                TempData["message"] = "Task created successfully";
                _submissionService.AddSubmission(newSub);
                return(View());
            }
        }
Ejemplo n.º 10
0
        // GET: Submissions/Create
        public IActionResult Create(int mid)
        {
            var manuscript = _context.Manuscripts.SingleOrDefault(a => a.Id == mid);
            var jid        = manuscript.JournalId;

            if (_context.Submissions.Where(a => a.ManuscriptId == mid).Count() > 0)
            {
                var submission = _context.Submissions.SingleOrDefault(a => a.ManuscriptId == mid);
                ViewData["sid"] = submission.Id;
            }
            if (manuscript.CurrentStatus != ManuscriptCurrentStatus.InComplete)
            {
                return(NotFound());
            }


            SubmissionViewModel SubmissionVM = new SubmissionViewModel()
            {
                Submissions        = _context.Submissions.Where(a => a.ManuscriptId == mid),
                ArticleAuthorships = _context.ArticleAuthorships.Include(a => a.AuthorUser).Where(a => a.ManuscriptId == mid),
                Manuscripts        = _context.Manuscripts.Where(a => a.Id == mid),
                SuggestedReviewers = _context.SuggestedReviewers.Where(a => a.ManuscriptId == mid),
                SubmissionFiles    = _context.SubmissionFiles.Where(a => a.Submission.ManuscriptId == mid),
                JournalFileTypes   = _context.JournalFileTypes.Where(a => a.JournalId == jid),
            };

            ViewData["mid"]          = mid;
            ViewData["AEId"]         = new SelectList(_context.AreaEditors, "Id", "Description");
            ViewData["ManuscriptId"] = new SelectList(_context.Manuscripts.Where(a => a.Id == mid), "Id", "ArTitle");
            return(View(SubmissionVM));
        }
Ejemplo n.º 11
0
        // GET: Submissions/AddAreaEditor/5
        public async Task <IActionResult> AddAreaEditor(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var submission = await _context.Submissions.Include(a => a.Manuscript.Journal).SingleOrDefaultAsync(m => m.Id == id);

            ViewData["mid"] = submission.ManuscriptId;
            ViewData["jid"] = submission.Manuscript.JournalId;
            ViewData["sid"] = submission.Id;
            var manuscript                   = _context.Manuscripts.Include(a => a.CorrespondingAuthor).Single(a => a.Id == submission.ManuscriptId);
            var articleauthorships           = _context.ArticleAuthorships.Where(a => a.ManuscriptId == submission.ManuscriptId);
            SubmissionViewModel SubmissionVM = new SubmissionViewModel()
            {
                Submission  = await _context.Submissions.Include(a => a.AE.ApplicationUser).SingleOrDefaultAsync(m => m.Id == id),
                Submissions = _context.Submissions.Where(a => a.ManuscriptId == submission.ManuscriptId),
            };

            if (submission == null)
            {
                return(NotFound());
            }
            ViewData["AEId"]         = new SelectList(_context.AreaEditors.Include(a => a.ApplicationUser).Where(a => a.JournalId == submission.Manuscript.JournalId && articleauthorships.Where(m => m.AuthorUserId == a.ApplicationUserId).Count() == 0 && a.IsActive == true && a.ApplicationUserId != manuscript.CorrespondingAuthorId), "Id", "ApplicationUser.ArName", submission.AEId);
            ViewData["ManuscriptId"] = new SelectList(_context.Manuscripts.Where(a => a.Id == submission.ManuscriptId), "Id", "ArTitle", submission.ManuscriptId);
            return(View(SubmissionVM));
        }
        /// <summary>
        /// Returns the submission  with the given id from the database
        /// </summary>
        /// <param name="id"></param>
        /// <returns>The student view model object</returns>
        public SubmissionViewModel GetSubmissionById(Guid id)
        {
            Submission submissionEntity = this._submissionRepository.GetSubmissionById(id);

            if (submissionEntity == null)
            {
                throw new InvalidOperationException($"Submision with id {id} not found");
            }
            List <CommentViewModel> Comments = _commentRepository.Query()
                                               .Where(comm => comm.ParentSubmission.Id == submissionEntity.Id)
                                               .OrderBy(comm => Math.Abs(comm.Upvotes - comm.Downvotes))
                                               .Select(commentEntity => new CommentViewModel
            {
                Id          = commentEntity.Id,
                Text        = commentEntity.Text,
                Upvotes     = commentEntity.Upvotes,
                Downvotes   = commentEntity.Downvotes,
                AuthorName  = commentEntity.Author.Name,
                AuthorId    = commentEntity.Author.Id,
                NrOfReplies = commentEntity.NrOfReplies
            }).ToList();
            SubmissionViewModel submissionModel = new SubmissionViewModel
            {
                Id         = submissionEntity.Id,
                Content    = submissionEntity.Content,
                Title      = submissionEntity.Title,
                Upvotes    = submissionEntity.Upvotes,
                Downvotes  = submissionEntity.Downvotes,
                AuthorName = submissionEntity.Author.Name,
                AuthorId   = submissionEntity.Author.Id,
                Comments   = Comments
            };

            return(submissionModel);
        }
Ejemplo n.º 13
0
        // GET: Submissions/SentBackToAuthor/5
        public async Task <IActionResult> SentBackToAuthor(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var submission = await _context.Submissions.Include(a => a.Manuscript).SingleOrDefaultAsync(m => m.Id == id);

            ViewData["mid"] = submission.ManuscriptId;
            ViewData["jid"] = submission.Manuscript.JournalId;
            ViewData["sid"] = submission.Id;
            var manuscript = _context.Manuscripts.Single(a => a.Id == submission.ManuscriptId);
            SubmissionViewModel SubmissionVM = new SubmissionViewModel()
            {
                Submission         = await _context.Submissions.SingleOrDefaultAsync(m => m.Id == id),
                Submissions        = _context.Submissions.Where(a => a.ManuscriptId == submission.ManuscriptId),
                ArticleAuthorships = _context.ArticleAuthorships.Include(a => a.AuthorUser).Where(a => a.ManuscriptId == submission.ManuscriptId),
                Manuscripts        = _context.Manuscripts.Where(a => a.Id == submission.ManuscriptId),
                SuggestedReviewers = _context.SuggestedReviewers.Where(a => a.ManuscriptId == submission.ManuscriptId),
                SubmissionFiles    = _context.SubmissionFiles.Where(a => a.Submission.ManuscriptId == submission.ManuscriptId),
                JournalFileTypes   = _context.JournalFileTypes.Where(a => a.JournalId == submission.Manuscript.JournalId),
            };


            if (submission == null)
            {
                return(NotFound());
            }
            ViewData["AEId"]         = new SelectList(_context.AreaEditors, "Id", "Description", submission.AEId);
            ViewData["ManuscriptId"] = new SelectList(_context.Manuscripts.Where(a => a.Id == submission.ManuscriptId), "Id", "ArTitle", submission.ManuscriptId);
            return(View(SubmissionVM));
        }
Ejemplo n.º 14
0
        // GET: Submissions/Edit/5
        public async Task <IActionResult> EditResubmission(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var submission = await _context.Submissions.Include(a => a.Manuscript).SingleOrDefaultAsync(m => m.Id == id);

            ViewData["mid"] = submission.ManuscriptId;
            ViewData["jid"] = submission.Manuscript.JournalId;
            ViewData["sid"] = submission.Id;
            var manuscript = _context.Manuscripts.Single(a => a.Id == submission.ManuscriptId);

            if (manuscript.CurrentStatus != ManuscriptCurrentStatus.SubmissionsBeingProcessed)
            {
                return(NotFound());
            }
            SubmissionViewModel SubmissionVM = new SubmissionViewModel()
            {
                Submission       = await _context.Submissions.SingleOrDefaultAsync(m => m.Id == id),
                Submissions      = _context.Submissions.Where(a => a.ManuscriptId == submission.ManuscriptId),
                SubmissionFiles  = _context.SubmissionFiles.Where(a => a.SubmissionId == submission.Id),
                JournalFileTypes = _context.JournalFileTypes.Where(a => a.JournalId == submission.Manuscript.JournalId),
            };

            if (submission == null)
            {
                return(NotFound());
            }
            ViewData["AEId"]         = new SelectList(_context.AreaEditors, "Id", "Description", submission.AEId);
            ViewData["ManuscriptId"] = new SelectList(_context.Manuscripts.Where(a => a.Id == submission.ManuscriptId), "Id", "ArTitle", submission.ManuscriptId);
            return(View(SubmissionVM));
        }
Ejemplo n.º 15
0
        // GET: Submissions/Create
        public IActionResult Resubmission(int mid)
        {
            var manuscript = _context.Manuscripts.SingleOrDefault(a => a.Id == mid);
            var jid        = manuscript.JournalId;

            ViewData["jid"] = jid;
            if (manuscript.CurrentStatus != ManuscriptCurrentStatus.SubmissionsBeingProcessed || manuscript.CorrespondingAuthorId != _userManager.GetUserId(User))
            {
                return(NotFound());
            }

            SubmissionViewModel SubmissionVM = new SubmissionViewModel()
            {
                Submissions        = _context.Submissions.Where(a => a.ManuscriptId == mid),
                ArticleAuthorships = _context.ArticleAuthorships.Include(a => a.AuthorUser).Where(a => a.ManuscriptId == mid),
                Manuscripts        = _context.Manuscripts.Where(a => a.Id == mid),
                SuggestedReviewers = _context.SuggestedReviewers.Where(a => a.ManuscriptId == mid),
                SubmissionFiles    = _context.SubmissionFiles.Where(a => a.Submission.ManuscriptId == mid),
                JournalFileTypes   = _context.JournalFileTypes.Where(a => a.JournalId == jid),
            };

            ViewData["mid"]          = mid;
            ViewData["AEId"]         = new SelectList(_context.AreaEditors, "Id", "Description");
            ViewData["ManuscriptId"] = new SelectList(_context.Manuscripts.Where(a => a.Id == mid), "Id", "ArTitle");
            return(View(SubmissionVM));
        }
Ejemplo n.º 16
0
        public ActionResult StudentSubmit(MilestoneViewModel model, HttpPostedFileBase ZipFile)
        {
            if (ZipFile != null)
            {
                var ZipType   = "zip";
                var ZipEnding = System.IO.Path.GetExtension(ZipFile.FileName).Substring(1);
                if (!ZipType.Contains(ZipEnding))
                {
                    return(RedirectToAction("StudentMilestones", "User", new { id = model.ID, SubID = model.SubmissionID }));
                }
                SubmissionViewModel submission = new SubmissionViewModel();

                try
                {
                    // compiler called
                    submission = US.StudentCompile(model, ZipFile);
                }
                catch
                {
                    // return error, compile failed, invalid file?
                    throw new Exception();
                }
                submission.Grade = Math.Round(LS.CalculateSimilarity(submission.Output, model.Output) * 10, 2);

                submission.Status = false;
                if (submission.Output == model.Output)
                {
                    submission.Status = true;
                }
                // checks for dr.memory error
                if (!submission.DrMemory.Contains("NO ERRORS FOUND:"))
                {
                    submission.Grade  = submission.Grade - 1;
                    submission.Status = false;
                }
                SS.AddSubmission(submission);

                var ViewModel = US.GetUserOverviewByUserName(User.Identity.GetUserName(), model.CourseID);

                if (ViewModel.Submissions != null)
                {
                    foreach (var m in ViewModel.Submissions)
                    {
                        m.AssignmentName = AS.GetAssignmentByID(m.AssignmentID).Name;
                    }
                }

                // auto grading system, checks which submission is the best.
                if (ViewModel.Assignments != null)
                {
                    foreach (var ass in ViewModel.Assignments)
                    {
                        var submissions = ViewModel.Submissions.Where(x => x.AssignmentID == ass.ID).ToList();
                        ass.Grade = AS.GetGradeForAssignment(ass.Milestones, submissions);
                    }
                }
            }

            return(RedirectToAction("StudentMilestones", "User", new { id = model.ID, SubID = model.SubmissionID }));
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Function that uses the compiler, teacher uploads .zip that has
        /// code to create new milestone for the students to solve.
        /// Optionally input file can also be uploaded.
        /// </summary>
        public MilestoneViewModel CompileMilestoneUpload(MilestoneViewModel model, HttpPostedFileBase ZipFile, HttpPostedFileBase TxtFile)
        {
            var TheUser = Ident.GetUser(model.UserModel.Name);

            SubmissionViewModel SVM = new SubmissionViewModel();


            if (TxtFile != null)
            {
                // Reads the textfile into the model.
                string result = new StreamReader(TxtFile.InputStream).ReadToEnd();
                SVM.Input   = result;
                model.Input = result;
            }

            if (ZipFile != null)
            {
                // The directory the milestone .zip file will be saved in.
                string UserDirectory = UserDataDir + "\\" + TheUser.Id + "\\" + model.AssignmentID + "\\" + model.ID;

                // creates the directory.
                if (!Directory.Exists(UserDirectory))
                {
                    Directory.CreateDirectory(UserDirectory);
                }

                var fileName = Path.GetFileName(ZipFile.FileName);
                var path     = UserDirectory + "\\" + fileName;

                // If the teacher uploads the same .zip file again for a specific milestone
                // then it will be replaced.
                try
                {
                    if (File.Exists(path))
                    {
                        File.Delete(path);
                    }

                    ZipFile.SaveAs(Path.GetFullPath(path));
                }
                catch
                {
                    // user probably pressed upload twice, nothing to worry about.
                }

                SVM.UserName     = model.UserModel.Name;
                SVM.AssignmentID = model.AssignmentID;
                SVM.MilestoneID  = model.ID;
                SVM.FilePath     = fileName;
                CompilerService CS = new CompilerService();

                // compiler service called.
                var compiled = CS.Compile(SVM);

                model.Output   = compiled.Output;
                model.DrMemory = compiled.DrMemory;
            }
            return(model);
        }
Ejemplo n.º 18
0
        public async Task <IActionResult> FinalShow(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var submission = await _context.Submissions.Include(a => a.Manuscript).SingleOrDefaultAsync(m => m.Id == id);

            ViewData["mid"] = submission.ManuscriptId;
            ViewData["jid"] = submission.Manuscript.JournalId;
            ViewData["sid"] = submission.Id;
            var manuscript = _context.Manuscripts.Single(a => a.Id == submission.ManuscriptId);

            if ((manuscript.CurrentStatus != ManuscriptCurrentStatus.InComplete && manuscript.CurrentStatus != ManuscriptCurrentStatus.SubmissionSentBackToAuthor) || manuscript.CorrespondingAuthorId != _userManager.GetUserId(User))
            {
                return(NotFound());
            }
            if (submission != null)
            {
                var sub = _context.Submissions.SingleOrDefault(a => a.ManuscriptId == manuscript.Id && a.SubmissionStatus == SubmissionStatus.Submitted);
                var requiredjournaliles     = _context.JournalFileTypes.Include(a => a.FileType).Where(a => a.JournalId == manuscript.JournalId && a.IsRequired == true && a.IsDeleted == false);
                var requiredsubmissionfiles = _context.SubmissionFiles.Include(a => a.JournalFileType).Where(a => a.SubmissionId == sub.Id && requiredjournaliles.Where(m => m.FileTypeId == a.JournalFileType.FileTypeId && a.JournalFileType.FileType != null).Count() > 0);
                if (requiredjournaliles.Count() == requiredsubmissionfiles.Count())
                {
                    ViewData["subfiles"] = "true";
                }
                else
                {
                    ViewData["subfiles"] = "false";
                }
            }

            SubmissionViewModel SubmissionVM = new SubmissionViewModel()
            {
                Submission         = await _context.Submissions.SingleOrDefaultAsync(m => m.Id == id),
                Submissions        = _context.Submissions.Where(a => a.ManuscriptId == submission.ManuscriptId),
                ArticleAuthorships = _context.ArticleAuthorships.Include(a => a.AuthorUser).Include(a => a.Country).Include(a => a.University).Where(a => a.ManuscriptId == submission.ManuscriptId),
                Manuscripts        = _context.Manuscripts.Include(a => a.Journal).Include(a => a.JournalArticleType).Include(a => a.Speciality).Include(a => a.SubmittedforIssue).Where(a => a.Id == submission.ManuscriptId),
                SuggestedReviewers = _context.SuggestedReviewers.Include(a => a.ReviewerUser).Where(a => a.ManuscriptId == submission.ManuscriptId),
                SubmissionFiles    = _context.SubmissionFiles.Include(a => a.JournalFileType.FileType).Where(a => a.Submission.ManuscriptId == submission.ManuscriptId),
                JournalFileTypes   = _context.JournalFileTypes.Where(a => a.JournalId == submission.Manuscript.JournalId),
                Manuscript         = _context.Manuscripts.Include(a => a.Journal).Include(a => a.JournalArticleType.ArticleType).Include(a => a.Speciality).Include(a => a.SubmittedforIssue).SingleOrDefault(a => a.Id == manuscript.Id)
            };

            if (submission == null)
            {
                return(NotFound());
            }
            var requiredjournalfiles   = _context.JournalFileTypes.Include(a => a.FileType).Where(a => a.JournalId == manuscript.JournalId && a.IsRequired == true && a.IsDeleted == false);
            var requiredsubmissionfile = _context.SubmissionFiles.Include(a => a.JournalFileType).Where(a => a.SubmissionId == submission.Id && requiredjournalfiles.Where(m => m.FileTypeId == a.JournalFileType.FileTypeId && a.JournalFileType.FileType != null).Count() > 0);

            if (_context.Manuscripts.Where(a => a.Id == manuscript.Id).Count() == 0 || _context.ArticleAuthorships.Where(a => a.ManuscriptId == manuscript.Id).Count() == 0 || requiredjournalfiles.Count() < requiredsubmissionfile.Count())
            {
                return(NotFound());
            }
            ViewData["AEId"]         = new SelectList(_context.AreaEditors, "Id", "Description", submission.AEId);
            ViewData["ManuscriptId"] = new SelectList(_context.Manuscripts.Where(a => a.Id == submission.ManuscriptId), "Id", "ArTitle", submission.ManuscriptId);
            return(View(SubmissionVM));
        }
Ejemplo n.º 19
0
        public ActionResult EditSubmission(SubmissionViewModel submission)
        {
            if (Guid.Parse(User.Identity.GetUserId()) == submission.AuthorId)
            {
                this._submissionService.UpdateSubmission(submission);
            }

            return(RedirectToAction("SubmissionList"));
        }
Ejemplo n.º 20
0
        public void AddSubmission(SubmissionViewModel model)
        {
            var sub = _autoMapper.Map <Submission>(model);

            sub.TaskId = sub.task.id;
            sub.task   = null;

            _submissionRepo.AddSubmission(sub);
        }
Ejemplo n.º 21
0
        public ActionResult Other(SubmissionViewModel submission)
        {
            Submission newSubmission = new Submission {
                MilestoneID = submission.MilestoneID, IsAccepted = submission.IsAccepted, SolutionOutput = "", UserID = User.Identity.GetUserId(), Code = submission.Code, ExpectedOutput = ""
            };

            db.Submission.Add(newSubmission);
            return(View(submission));
        }
Ejemplo n.º 22
0
        public void AddSubmission(SubmissionViewModel model)
        {
            var submission = _autoMapper.Map <Submission>(model);

            submission.TaskFK = submission.Task.Id;
            submission.Task   = null;

            _subrepo.AddSubmission(submission);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// A function that checks if a regex string validates for given
        ///input/output pairs
        /// </summary>
        public ActionResult RegexTest(SubmissionViewModel submission)
        {
            Regex passPattern = new Regex(submission.Code);
            List <List <string> > excpectedData = sService.GetExpectedRegex(submission.MilestoneID);
            string entityOutput   = "Accepted strings:";
            string entityExpected = "Accepted strings:";

            submission.SolutionOutput.Add("Accepted strings:");
            submission.ExpectedOutput.Add("Accepted strings:");
            foreach (var item in excpectedData[0])
            {
                submission.SolutionOutput.Add(item);
                entityOutput += item;
                if (!passPattern.IsMatch(item))
                {
                    submission.ExpectedOutput.Add("Your regex does not accept the string " + item);
                    entityExpected       += "Your regex does not accept the string " + item + '\n';
                    submission.IsAccepted = false;
                    Submission newData = new Submission {
                        MilestoneID = submission.MilestoneID, IsAccepted = submission.IsAccepted, SolutionOutput = entityOutput, UserID = User.Identity.GetUserId(), Code = submission.Code, ExpectedOutput = entityExpected
                    };
                    db.Submission.Add(newData);
                    db.SaveChanges();
                    return(View(submission));
                }
                submission.ExpectedOutput.Add(item);
                entityExpected += item + '\n';
            }
            submission.SolutionOutput.Add("Not accepted strings:");
            entityOutput += "Not accepted strings: \n";
            foreach (var item in excpectedData[1])
            {
                submission.SolutionOutput.Add(item);
                entityOutput += item + "\n";
                if (passPattern.IsMatch(item))
                {
                    submission.ExpectedOutput.Add("Your regex accepts the string " + item);
                    entityOutput         += "Your regex accepts the string " + item + "\n";
                    submission.IsAccepted = false;
                    Submission newData = new Submission {
                        MilestoneID = submission.MilestoneID, IsAccepted = submission.IsAccepted, SolutionOutput = entityExpected, UserID = User.Identity.GetUserId(), Code = submission.Code, ExpectedOutput = entityExpected
                    };
                    db.Submission.Add(newData);
                    return(View(submission));
                }
                submission.ExpectedOutput.Add(item);
                entityExpected += item + '\n';
            }
            Submission newSubmission = new Submission {
                MilestoneID = submission.MilestoneID, IsAccepted = submission.IsAccepted, SolutionOutput = entityExpected, UserID = User.Identity.GetUserId(), Code = submission.Code, ExpectedOutput = entityExpected
            };

            db.Submission.Add(newSubmission);
            submission.IsAccepted = true;
            return(View(submission));
        }
        public IActionResult Create(string id)
        {
            var createSubmissionView = new SubmissionViewModel
            {
                Name      = this.problemsService.GetProblemName(id),
                ProblemId = id,
            };

            return(this.View(createSubmissionView));
        }
Ejemplo n.º 25
0
 public ActionResult TeacherComment(SubmissionViewModel sub)
 {
     if (!ModelState.IsValid)
     {
         sub.UserModel = US.GetUserOverviewByUserName(User.Identity.GetUserName(), sub.CourseID);
         return(View(sub));
     }
     TS.TeacherComment(sub.Comment, sub.ID, sub.Grade);
     return(RedirectToAction("StudentMilestones", "User", new { id = sub.MilestoneID }));
 }
Ejemplo n.º 26
0
        public ActionResult SubmitGrade(SubmissionViewModel submission)
        {
            Solution solution = (from s in db.Solutions where s.SubmissionID == submission.ID select s).FirstOrDefault();

            solution.Grade = submission.Grade;
            db.SaveChanges();
            //await db.SaveChangesAsync();
            int assignmentID = (from m in db.Milestones where m.ID == submission.MilestoneID select m.AssignmentID).FirstOrDefault();

            return(RedirectToAction("AllSolutions", new { id = assignmentID }));
        }
Ejemplo n.º 27
0
        public ActionResult OtherWithTests(SubmissionViewModel submission)
        {
            Submission newSubmission = new Submission {
                MilestoneID = submission.MilestoneID, IsAccepted = submission.IsAccepted, UserID = User.Identity.GetUserId(), Code = submission.Code
            };

            db.Submission.Add(newSubmission);
            submission.SolutionOutput[0] = submission.Code;
            submission.ExpectedOutput[0] = sService.GetTestCase(submission.MilestoneID);
            return(View(submission));
        }
        /// <summary>
        /// Updates existing submission
        /// </summary>
        /// <param name="submissionViewModel">The submission view model</param>
        public void UpdateSubmission(SubmissionViewModel submissionViewModel)
        {
            Submission submissionEntityToUpdate = this._submissionRepository.GetSubmissionById(submissionViewModel.Id);

            submissionEntityToUpdate.Title     = submissionViewModel.Title;
            submissionEntityToUpdate.Content   = submissionViewModel.Content;
            submissionEntityToUpdate.Upvotes   = submissionViewModel.Upvotes;
            submissionEntityToUpdate.Downvotes = submissionViewModel.Downvotes;

            this._submissionRepository.SaveChanges();
        }
Ejemplo n.º 29
0
        public IActionResult Create(string id)
        {
            var problem          = this.problemService.GetProblemById(id);
            var problemViewModel = new SubmissionViewModel
            {
                Name      = problem.Name,
                ProblemId = problem.Id
            };

            return(this.View(problemViewModel));
        }
Ejemplo n.º 30
0
        public ActionResult SubmissionDetails(Guid id)
        {
            if (!isLoggedRegisteredInDb())
            {
                return(RedirectToAction("CreateUser", "User"));
            }
            SubmissionViewModel submission = this._submissionService.GetSubmissionById(id);

            ViewBag.userName = this._userService.GetUserById(submission.AuthorId).Name;
            return(View(submission));
        }