private void Button1_Click(object sender, EventArgs e) { int pid = selprob.PID; using (BaseDb db = DbFactory.ConstructDatabase()) { int tid = db.GetTid(pid); if (db.GetContest(tid).Now) { if (Page.IsValid) { string extension = ""; switch (languageDropDownList.SelectedValue) { case "Pascal": extension = "pas"; break; case "C++": extension = "cpp"; break; case "C": extension = "c"; break; default: extension = "cpp"; break; } string temp = Path.GetTempFileName(); if (sourceTextBox.Text.Trim() != "") { StreamWriter sw = null; try { sw = new StreamWriter(temp); sw.WriteLine(sourceTextBox.Text.Trim()); } finally { if (sw != null) { sw.Close(); } } } else { if (fileBrowser.PostedFile != null) { fileBrowser.PostedFile.SaveAs(temp); } } int uid = db.GetUid(Page.User.Identity.Name); //TODO Language l = (Language)Enum.Parse(typeof(Language), extension, true); Submission s = new Submission(pid, uid, tid, DateTime.Now, l); int sid = db.AddSubmission(s); if (Directory.Exists(Path.Combine(Config.SubmissionsDirectory, sid.ToString()))) { Directory.Delete(Path.Combine(Config.SubmissionsDirectory, sid.ToString())); } Directory.CreateDirectory(Path.Combine(Config.SubmissionsDirectory, sid.ToString())); File.Move(temp, Path.Combine(Path.Combine( Config.SubmissionsDirectory, sid.ToString()), "sln." + extension)); //TODO:переделать DfTest dt = new DfTest(pid.ToString(), sid.ToString(), l.ToString()); Thread t = new Thread(new ThreadStart(dt.CheckSolution)); Response.Redirect("~/status.aspx?tid=" + tid, false); t.Start(); } } else { throw new NeJudgeInvalidParametersException("pid"); //"Соревнование либо закончилась, либо ещё не начиналось."; } } }