public void UpdateUnitTest(Guid accountId, UpdateUnitTestRequestData data) { if (data == null) { throw new ArgumentNullException("data"); } if (data.UnitTestId == null) { throw new ParameterRequiredException("UnitTestId"); } if (data.ComponentId == null) { throw new ParameterRequiredException("ComponentId"); } if (data.UnitTestId == Guid.Empty) { throw new ParameterErrorException("UnitTestId не может быть Guid.Empty"); } if (data.DisplayName == null) { throw new ParameterRequiredException("DisplayName"); } if (string.IsNullOrWhiteSpace(data.DisplayName)) { throw new ParameterErrorException("DisplayName не может быть пустым"); } //if (data.ErrorColor == null) //{ // throw new ParameterRequiredException("ErrorColor"); //} // SystemName сейчас не настраивается через GUI //if (data.SystemName == null) //{ // throw new ParameterRequiredException("SystemName"); //} //получим компонент, чтобы убедится, что он принадлежит аккаунту var req = new AccountCacheRequest() { AccountId = accountId, ObjectId = data.ComponentId.Value }; var component = AllCaches.Components.Find(req); if (component == null) { throw new UnknownComponentIdException(data.ComponentId.Value, accountId); } var request = new AccountCacheRequest() { AccountId = accountId, ObjectId = data.UnitTestId.Value }; // сохраним изменения IUnitTestCacheReadObject unitTestCache = null; using (var unitTest = AllCaches.UnitTests.Write(request)) { unitTestCache = unitTest; // период выполнения проверки if (unitTest.IsSystemType) { // не для всех системных проверок можно указывать период (для проверки домена нельзя) if (SystemUnitTestTypes.CanEditPeriod(unitTest.TypeId)) { if (data.PeriodSeconds == null) { throw new ParameterRequiredException("Period"); } if (data.PeriodSeconds.Value < 60) { throw new ParameterErrorException("Период проверки НЕ может быть меньше 1 минуты"); } unitTest.PeriodSeconds = (int)data.PeriodSeconds.Value; } // чтобы выполнить проверку прямо сейчас с новыми параметрами и увидеть результат unitTest.NextDate = DateTime.Now; } unitTest.DisplayName = data.DisplayName; unitTest.ComponentId = data.ComponentId.Value; unitTest.ErrorColor = data.ErrorColor; unitTest.NoSignalColor = data.NoSignalColor; unitTest.ActualTime = TimeSpanHelper.FromSeconds(data.ActualTime); if (data.SimpleMode.HasValue) { unitTest.SimpleMode = data.SimpleMode.Value; } unitTest.BeginSave(); } // ждем сохранения в кэше unitTestCache.WaitSaveChanges(); }