public ActionResult Details(int?id) { if (id == null) { throw new HttpException((int)HttpStatusCode.BadRequest, "Bad request!"); } var submission = submissionsRepository.GetSubmissionById(id.Value); if (submission == null) { throw new HttpException((int)HttpStatusCode.NotFound, "Not found!"); } if (!submission.ApplicationUsers.Any(u => u.Id == User.Identity.GetUserId()) && !coursesRepository.IsAssistantTeacherInCourse(submission.ProjectTask.Project.CourseId, User.Identity.GetUserId(), User.IsInRole("Administrator")) && !coursesRepository.IsTeacherInCourse(submission.ProjectTask.Project.CourseId, User.Identity.GetUserId(), User.IsInRole("Administrator")) && !User.IsInRole("Administrator")) { throw new HttpException((int)HttpStatusCode.Forbidden, "Forbidden!"); } var helper = new SubmissionsHelper(db); ViewBag.submissionFolder = helper.GetSubmissionFolder(submission); return(View(submission)); }
public ActionResult SaveUploadedFile(int Id) { var isSavedSuccessfully = true; var fName = ""; try { var task = projectTasksRepository.GetProjectTaskById(Id); // Checking if all files are required foreach (string fileName in Request.Files) { var file = Request.Files[fileName]; //Save file content goes here fName = file.FileName; if (!task.FilesRequired.Any(i => i.Name == fName)) { Response.ClearHeaders(); Response.ClearContent(); Response.StatusCode = 400; Response.StatusDescription = "File not allowed"; Response.ContentType = "application/json"; return(Json(new { Message = "File is not in this Task. See required files above." })); } } if (Request.Files.Count == task.FilesRequired.Count) { var newSubmission = new Submission { ProjectTaskId = task.Id, Created = DateTime.Now, ApplicationUsers = new List <ApplicationUser>() }; // Add group members to submission var members = 0; foreach (var k in Request.Form.Keys) { var key = k.ToString(); var userId = Request.Form[key]; if (key.StartsWith("user") && !string.IsNullOrEmpty(userId) && members <= task.MaxGroupSize) { members++; newSubmission.ApplicationUsers.Add(db.Users.FirstOrDefault(i => i.Id == userId)); db.Submissions.Add(newSubmission); } } // Add current user to submission var currentUserId = User.Identity.GetUserId(); var currentUser = db.Users.FirstOrDefault(i => i.Id == currentUserId); newSubmission.ApplicationUsers.Add(currentUser); db.Submissions.Add(newSubmission); db.SaveChanges(); // All files are valid and all files are there, so we save them foreach (string fileName in Request.Files) { var file = Request.Files[fileName]; if (file != null && file.ContentLength > 0) { var originalDirectory = new DirectoryInfo(string.Format("{0}Uploads\\Submissions", Server.MapPath(@"\"))); var pathString = Path.Combine(originalDirectory.ToString(), newSubmission.Id.ToString()); var fileName1 = Path.GetFileName(file.FileName); var isExists = Directory.Exists(pathString); if (!isExists) { Directory.CreateDirectory(pathString); } var path = string.Format("{0}\\{1}", pathString, file.FileName); file.SaveAs(path); } } var subHelper = new SubmissionsHelper(db); subHelper.CreateCppSubmission(task, newSubmission); } else { Response.ClearHeaders(); Response.ClearContent(); Response.StatusCode = 400; Response.StatusDescription = "Test requires " + task.FilesRequired.Count + " but the submission only had " + Request.Files.Count; Response.ContentType = "application/json"; return(Json(new { Message = "Test requires " + task.FilesRequired.Count + " files, but the submission only had " + Request.Files.Count + ".", JsonRequestBehavior.AllowGet })); } } catch (Exception ex) { Logger.LogException(ex); isSavedSuccessfully = false; } if (isSavedSuccessfully) { return(Json(new { Message = fName })); } return(Json(new { Message = "Error in saving file" })); }