示例#1
0
        public ActionResult UploadSubmit()
        {
            Team                 team = SessionUtil.GetTeamFromFormsAuthentication();
            Tournament           t    = SessionUtil.GetTournamentFromSession();
            TournamentAssignment ta   = SessionUtil.GetTournamentAssignmentFromSession();
            Assignment           a    = SessionUtil.GetAssignmentFromSession();
            AssignmentEnrollment ae   = SessionUtil.GetAssignmentEnrollmentFromSession();

            if (Request.Files.Count == 1)
            {
                HttpPostedFileBase postedFile = Request.Files[0];

                TempData["SubmittedFileText"] = string.Format("File: {0} submitted", postedFile.FileName);

                //Check for big file (> 128KB)
                int submitMaxSize = int.Parse(ConfigurationManager.AppSettings["SubmitMaxSize"]) * 1024;

                if (postedFile.ContentLength > submitMaxSize)
                {
                    TempData["SubmittedFileText"] = string.Format("Submitted file is too large. Maximum size: {0}KB", submitMaxSize);
                    return(RedirectToAction("Index"));
                }

                //Check for right file extension
                if (postedFile.FileName.IndexOf(".cs") != postedFile.FileName.Length - 3)
                {
                    TempData["SubmittedFileText"] = "Submitted file doesn't have extension '.cs'.";
                    return(RedirectToAction("Index"));
                }

                //Construct the submit
                Submit s = new Submit()
                {
                    FileName             = Path.GetFileName(postedFile.FileName),
                    Team                 = team,
                    TournamentAssignment = ta,
                    AssignmentEnrollment = ae
                };
                s.Data = new byte[postedFile.ContentLength];

                postedFile.InputStream.Read(s.Data, 0, postedFile.ContentLength);

                // Do the submit
                try
                {
                    ClientFacade.Instance.SaveSubmit(s);
                }
                catch (MoCSException e)
                {
                    TempData["SubmittedFileText"] = "Unable to process submit. Reason: " + e.Message;
                }
            }

            return(RedirectToAction("Index"));
        }