Skip to content

Commit cd89885

Browse files
committed
Version 1.4
Synced the latest code from the TFS: changeset 2334 build 3579
1 parent 877b685 commit cd89885

File tree

46 files changed

+615
-92
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+615
-92
lines changed

Open Judge System/Data/OJS.Data/Repositories/SubmissionsRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public bool HasSubmissionTimeLimitPassedForParticipant(int participantId, int li
4545
var lastSubmission =
4646
this.All()
4747
.Where(x => x.ParticipantId == participantId)
48-
.OrderBy(x => x.CreatedOn)
48+
.OrderByDescending(x => x.CreatedOn)
4949
.Select(x => new { x.Id, x.CreatedOn })
5050
.FirstOrDefault();
5151
if (lastSubmission != null)

Open Judge System/Tests/OJS.Web.Tests/Administration/TestsControllerTests/ImportActionTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public ImportActionTests()
2626
[TestMethod]
2727
public void ImportActionShouldShowProperRedirectAndMessageWithIncorrectProblemId()
2828
{
29-
var redirectResult = this.TestsController.Import("invalid", null, false) as RedirectToRouteResult;
29+
var redirectResult = this.TestsController.Import("invalid", null, false, false) as RedirectToRouteResult;
3030
Assert.IsNotNull(redirectResult);
3131

3232
Assert.AreEqual(GlobalConstants.Index, redirectResult.RouteValues["action"]);
@@ -41,7 +41,7 @@ public void ImportActionShouldShowProperRedirectAndMessageWithIncorrectProblemId
4141
[TestMethod]
4242
public void ImportActionShouldShowProperRedirectAndMessageWhenProblemDoesNotExist()
4343
{
44-
var redirectResult = this.TestsController.Import("100", null, false) as RedirectToRouteResult;
44+
var redirectResult = this.TestsController.Import("100", null, false, false) as RedirectToRouteResult;
4545
Assert.IsNotNull(redirectResult);
4646

4747
Assert.AreEqual(GlobalConstants.Index, redirectResult.RouteValues["action"]);
@@ -56,7 +56,7 @@ public void ImportActionShouldShowProperRedirectAndMessageWhenProblemDoesNotExis
5656
[TestMethod]
5757
public void ImportActionShouldShowProperRedirectAndMessageWhenFileIsNull()
5858
{
59-
var redirectResult = this.TestsController.Import("1", null, false) as RedirectToRouteResult;
59+
var redirectResult = this.TestsController.Import("1", null, false, false) as RedirectToRouteResult;
6060
Assert.IsNotNull(redirectResult);
6161

6262
Assert.AreEqual("Problem", redirectResult.RouteValues["action"]);
@@ -74,7 +74,7 @@ public void ImportActionShouldShowProperRedirectAndMessageWhenFileContentIsZero(
7474
{
7575
this.File.Setup(x => x.ContentLength).Returns(0);
7676

77-
var redirectResult = this.TestsController.Import("1", this.File.Object, false) as RedirectToRouteResult;
77+
var redirectResult = this.TestsController.Import("1", this.File.Object, false, false) as RedirectToRouteResult;
7878
Assert.IsNotNull(redirectResult);
7979

8080
Assert.AreEqual("Problem", redirectResult.RouteValues["action"]);
@@ -93,7 +93,7 @@ public void ImportActionShouldShowProperRedirectAndMessageWhenFileIsNotZip()
9393
this.File.Setup(x => x.ContentLength).Returns(1);
9494
this.File.Setup(x => x.FileName).Returns("filename.invalid");
9595

96-
var redirectResult = this.TestsController.Import("1", this.File.Object, false) as RedirectToRouteResult;
96+
var redirectResult = this.TestsController.Import("1", this.File.Object, false, false) as RedirectToRouteResult;
9797
Assert.IsNotNull(redirectResult);
9898

9999
Assert.AreEqual("Problem", redirectResult.RouteValues["action"]);
@@ -118,7 +118,7 @@ public void ImportActionShouldDeleteAllPreviousTestsIfSettingsAreSetToTrue()
118118

119119
try
120120
{
121-
this.TestsController.Import("1", this.File.Object, true);
121+
this.TestsController.Import("1", this.File.Object, false, true);
122122
}
123123
catch (Exception)
124124
{
@@ -134,7 +134,7 @@ public void ImportActionShouldReturnProperRedirectAndMessageIfZipFileIsNotValid(
134134
this.File.Setup(x => x.FileName).Returns("filename.zip");
135135
this.File.Setup(x => x.InputStream).Returns(new MemoryStream());
136136

137-
var redirectResult = this.TestsController.Import("1", this.File.Object, false) as RedirectToRouteResult;
137+
var redirectResult = this.TestsController.Import("1", this.File.Object, false, false) as RedirectToRouteResult;
138138
Assert.IsNotNull(redirectResult);
139139

140140
Assert.AreEqual("Problem", redirectResult.RouteValues["action"]);
@@ -166,7 +166,7 @@ public void ImportActionShouldAddTestsToProblemIfZipFileIsCorrect()
166166
this.File.Setup(x => x.FileName).Returns("file.zip");
167167
this.File.Setup(x => x.InputStream).Returns(zipStream);
168168

169-
var redirectResult = this.TestsController.Import("1", this.File.Object, false) as RedirectToRouteResult;
169+
var redirectResult = this.TestsController.Import("1", this.File.Object, false, false) as RedirectToRouteResult;
170170
Assert.IsNotNull(redirectResult);
171171

172172
Assert.AreEqual("Problem", redirectResult.RouteValues["action"]);

Open Judge System/Tests/OJS.Web.Tests/Controllers/Contests/CompeteControllerTests/GetAllowedSubmissionTypesTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public void GetAllowedSubmissionTypesWhenRequestIsValidShouldReturnSubmissionTyp
3838
{
3939
IsSelectedByDefault = true,
4040
Name = "java type",
41-
CompilerType = CompilerType.Java
41+
CompilerType = CompilerType.Java,
4242
};
4343

4444
var csharpSubmissionType = new SubmissionType

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/ViewModels/ContestsViewModels.Designer.cs

Lines changed: 12 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/ViewModels/ContestsViewModels.bg.resx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,16 @@
117117
<resheader name="writer">
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120+
<data name="Answer_required" xml:space="preserve">
121+
<value>Изберете отговор от падащото меню</value>
122+
</data>
120123
<data name="Name" xml:space="preserve">
121124
<value>Име</value>
122125
</data>
123126
<data name="Password" xml:space="preserve">
124-
<value>Password</value>
127+
<value>Парола</value>
125128
</data>
126129
<data name="Question" xml:space="preserve">
127-
<value>Question</value>
130+
<value>Въпрос</value>
128131
</data>
129132
</root>

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/ViewModels/ContestsViewModels.resx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,16 @@
117117
<resheader name="writer">
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120+
<data name="Answer_required" xml:space="preserve">
121+
<value>Select an answer from the dropdown menu</value>
122+
</data>
120123
<data name="Name" xml:space="preserve">
121124
<value>Name</value>
122125
</data>
123126
<data name="Password" xml:space="preserve">
124-
<value>Парола</value>
127+
<value>Password</value>
125128
</data>
126129
<data name="Question" xml:space="preserve">
127-
<value>Въпрос</value>
130+
<value>Question</value>
128131
</data>
129132
</root>

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Compete/CompeteRegister.Designer.cs

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Compete/CompeteRegister.bg.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@
126126
<data name="Not_all_questions_answered" xml:space="preserve">
127127
<value>Моля, отговорете на всички въпроси</value>
128128
</data>
129+
<data name="Select_dropdown_answer" xml:space="preserve">
130+
<value>Изберете отговор</value>
131+
</data>
129132
<data name="Submit" xml:space="preserve">
130133
<value>Изпрати</value>
131134
</data>

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Compete/CompeteRegister.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@
126126
<data name="Not_all_questions_answered" xml:space="preserve">
127127
<value>Please answer all questions</value>
128128
</data>
129+
<data name="Select_dropdown_answer" xml:space="preserve">
130+
<value>Select an answer</value>
131+
</data>
129132
<data name="Submit" xml:space="preserve">
130133
<value>Submit</value>
131134
</data>

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Results/ResultsFull.bg.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,7 @@
156156
<data name="User" xml:space="preserve">
157157
<value>Потребител</value>
158158
</data>
159+
<data name="UserFullName" xml:space="preserve">
160+
<value>Име</value>
161+
</data>
159162
</root>

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Results/ResultsFull.designer.cs

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Results/ResultsFull.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,7 @@
156156
<data name="User" xml:space="preserve">
157157
<value>User</value>
158158
</data>
159+
<data name="UserFullName" xml:space="preserve">
160+
<value>Name</value>
161+
</data>
159162
</root>

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Results/ResultsSimple.Designer.cs

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Results/ResultsSimple.bg.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,7 @@
138138
<data name="User" xml:space="preserve">
139139
<value>Потребител</value>
140140
</data>
141+
<data name="UserFullName" xml:space="preserve">
142+
<value>Име</value>
143+
</data>
141144
</root>

Open Judge System/Web/OJS.Web/App_GlobalResources/Areas/Contests/Views/Results/ResultsSimple.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,7 @@
138138
<data name="User" xml:space="preserve">
139139
<value>User</value>
140140
</data>
141+
<data name="UserFullName" xml:space="preserve">
142+
<value>Name</value>
143+
</data>
141144
</root>

Open Judge System/Web/OJS.Web/App_GlobalResources/Global.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Open Judge System/Web/OJS.Web/App_GlobalResources/Global.resx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,6 @@
121121
<value>Open Judge System (OJS)</value>
122122
</data>
123123
<data name="SystemVersion" xml:space="preserve">
124-
<value>1.3.3534.20140419</value>
124+
<value>1.4.3578.20140501</value>
125125
</data>
126126
</root>

Open Judge System/Web/OJS.Web/Areas/Administration/Controllers/ContestQuestionsController.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
using OJS.Web.Controllers;
1212

1313
using DatabaseModelType = OJS.Data.Models.ContestQuestion;
14+
using DatabaseAnswerModelType = OJS.Data.Models.ContestQuestionAnswer;
1415
using ViewModelType = OJS.Web.Areas.Administration.ViewModels.ContestQuestion.ContestQuestionViewModel;
16+
using System.Collections.Generic;
17+
using OJS.Data.Models;
1518

1619
public class ContestQuestionsController : KendoGridAdministrationController
1720
{
@@ -82,5 +85,66 @@ public JsonResult DeleteQuestionFromContest([DataSourceRequest]DataSourceRequest
8285
this.Data.SaveChanges();
8386
return this.GridOperation(request, model);
8487
}
88+
89+
public ActionResult CopyFromAnotherContest(int id)
90+
{
91+
var contests = this.Data.Contests
92+
.All()
93+
.OrderByDescending(c => c.CreatedOn)
94+
.Select(c => new { Text = c.Name, Value = c.Id });
95+
96+
ViewBag.ContestId = id;
97+
98+
return this.PartialView("_CopyQuestionsFromContest", contests);
99+
}
100+
101+
public void CopyTo(int id, int contestFrom, bool? deleteOld)
102+
{
103+
var copyFromContest = this.Data.Contests.GetById(contestFrom);
104+
var copyToContest = this.Data.Contests.GetById(id);
105+
106+
if (deleteOld.HasValue && deleteOld.Value)
107+
{
108+
var oldQuestions = copyToContest.Questions.Select(q => q.Id).ToList();
109+
this.DeleteQuestions(oldQuestions);
110+
}
111+
112+
var questionsToCopy = copyFromContest.Questions.ToList();
113+
this.CopyQuestionsToContest(copyToContest, questionsToCopy);
114+
}
115+
116+
private void DeleteQuestions(IEnumerable<int> questions)
117+
{
118+
foreach (var question in questions)
119+
{
120+
this.Data.ContestQuestions.Delete(question);
121+
}
122+
123+
this.Data.SaveChanges();
124+
}
125+
126+
private void CopyQuestionsToContest(Contest contest, IEnumerable<ContestQuestion> questions)
127+
{
128+
foreach (var question in questions)
129+
{
130+
var newQuestion = new DatabaseModelType
131+
{
132+
Text = question.Text,
133+
Type = question.Type,
134+
AskOfficialParticipants = question.AskOfficialParticipants,
135+
AskPracticeParticipants = question.AskPracticeParticipants,
136+
RegularExpressionValidation = question.RegularExpressionValidation
137+
};
138+
139+
foreach (var answer in question.Answers)
140+
{
141+
newQuestion.Answers.Add(new DatabaseAnswerModelType { Text = answer.Text });
142+
}
143+
144+
contest.Questions.Add(newQuestion);
145+
}
146+
147+
this.Data.SaveChanges();
148+
}
85149
}
86150
}

0 commit comments

Comments
 (0)