// внутренний вспомагательный метод для обновления задачи private void UpdateTaskHelper(DataBase db, TaskExDTO Task, bool UpdateStatement) { var task = db.Tasks.Where(t => t.Id == Task.Id).Single(); task.Title = Task.Title; task.Note = Task.Note; task.TimeLimit_native = Task.TimeLimit_native; task.TimeLimit_javavm = Task.TimeLimit_javavm; task.TimeLimit_dotnet = Task.TimeLimit_dotnet; task.TimeLimit_custom = Task.TimeLimit_custom; task.MemoryLimit_native = Task.MemoryLimit_native; task.MemoryLimit_javavm = Task.MemoryLimit_javavm; task.MemoryLimit_dotnet = Task.MemoryLimit_dotnet; task.MemoryLimit_custom = Task.MemoryLimit_custom; task.OutputLimit = Task.OutputLimit; task.CodeLimit = Task.CodeLimit; task.Author = Task.Author; task.TaskSource = Task.TaskSource; task.TimeSolveProblem = Task.TimeSolveProblem; task.CountTestToText = Task.CountTestToText; task.EnableSend = Task.EnableSend; task.EnableCheck = Task.EnableCheck; if (UpdateStatement) { //task.UsePdfStatement = Task.UsePdfStatement; task.StatementPdf = Task.StatementPdf; task.Statement = Task.Statement; } }
// обновить информацию о задаче(кроме текста, тестов и чекеров) public void UpdateTask(String SessionKey, TaskExDTO Task, bool UpdateStatement) { CheckSession(SessionKey); using (var db = new DataBase()) { UpdateTaskHelper(db, Task, UpdateStatement); db.SaveChanges(); } return; }
// обновить задачу public void UpdateTaskEx(String SessionKey, TaskExDTO Task, IEnumerable <TestDTO> Tests, bool AppendTests, bool UpdateTaskStatement, IEnumerable <CheckerDTO> Checkers, bool AppendCheckers) { CheckSession(SessionKey); using (var db = new DataBase()) { UpdateTaskHelper(db, Task, UpdateTaskStatement); // обновим задачу // теперь приступим к тестам if (Tests != null && Tests.Count() > 0) { if (AppendTests == false) // если не добавляем тесты - значит удалим существующий набор { foreach (var test in db.Tests.Where(t => t.TaskId == Task.Id)) { db.DeleteObject(test); } } foreach (var test in Tests) { db.Tests.AddObject(new Test { TaskId = Task.Id, InputData = test.InputData, PatternData = test.PatternData, Number = test.Number, Multitest = test.Multitest, Enabled = test.Enabled }); } } // и не забудем про чекеры. // НЕ РЕАЛИЗОВАНО!!!!! db.SaveChanges(); } }