public ActionResult Edit(UnitTestEditModel model) { model.UnitTest = GetUnitTestById(model.Id); if (!ModelState.IsValid) { View(model); } var updateData = new UpdateUnitTestRequestData() { NoSignalColor = model.NoSignalColor.GetSelectedOne(), ActualTime = TimeSpanHelper.GetSeconds(model.ActualTime), DisplayName = model.DisplayName, ComponentId = model.ComponentId, PeriodSeconds = model.PeriodSeconds, UnitTestId = model.Id, SystemName = model.UnitTest.SystemName }; var dispatcher = GetDispatcherClient(); var response = dispatcher.UpdateUnitTest(CurrentUser.AccountId, updateData); if (response.Success) { return(RedirectToAction("ResultDetails", new { id = model.Id })); } SetCommonError(response.ErrorMessage); return(View(model)); }
public UpdateUnitTestResponse UpdateUnitTest(Guid accountId, UpdateUnitTestRequestData data) { var request = GetRequest <UpdateUnitTestRequest>(accountId); request.Data = data; var dispatcher = DispatcherHelper.GetDispatcherService(); return(dispatcher.UpdateUnitTest(request)); }
public UnitTest SaveSimpleCheck(T model) { var dispatcher = GetDispatcherClient(); var unitTestDisplayName = GetUnitTestDisplayName(model); if (model.Id.HasValue) { var unitTest = GetUnitTestById(model.Id.Value); var updateData = new UpdateUnitTestRequestData() { ComponentId = unitTest.ComponentId, DisplayName = unitTestDisplayName, PeriodSeconds = TimeSpanHelper.GetSeconds(model.Period), UnitTestId = unitTest.Id, ErrorColor = unitTest.ErrorColor, NoSignalColor = ObjectColor.Gray, SystemName = unitTest.SystemName, SimpleMode = true }; dispatcher.UpdateUnitTest(CurrentUser.AccountId, updateData).Check(); // Зем: название компонента решили не менять, чтобы не было неожиданных сюрпризов, // меняешь проверку, а меняется компонент, если нужно изменить название компонента, // пусть пользователь сделает это явно вручную // Обновим параметры SetUnitTestParams(unitTest, model); CurrentAccountDbContext.SaveChanges(); this.SetTempMessage(TempMessageType.Success, string.Format("Обновлена проверка <a href='{1}' class='alert-link'>{0}</a>", unitTest.DisplayName, Url.Action("Edit", "Checks", new { id = unitTest.Id }))); return(unitTest); } else // создание проверки { // Создаём компонент только если его ещё нет ComponentInfo component; if (!model.ComponentId.HasValue) { // Создадим папку для компонента var componentRepository = CurrentAccountDbContext.GetComponentRepository(); var root = componentRepository.GetRoot(); var createFolderResponse = dispatcher.GetOrCreateComponent(CurrentUser.AccountId, new GetOrCreateComponentRequestData() { SystemName = GetFolderSystemName(model), DisplayName = GetFolderDisplayName(model), TypeId = SystemComponentTypes.Folder.Id, ParentComponentId = root.Id }); if (!createFolderResponse.Success) { throw new UserFriendlyException("Ошибка создания папки для проверки: " + createFolderResponse.ErrorMessage); } var folder = createFolderResponse.Data.Component; // Создадим тип компонента var createComponentTypeResponse = dispatcher.GetOrCreateComponentType(CurrentUser.AccountId, new GetOrCreateComponentTypeRequestData() { SystemName = GetTypeSystemName(model), DisplayName = GetTypeDisplayName(model) }); if (!createComponentTypeResponse.Success) { throw new UserFriendlyException("Ошибка создания типа компонента для проверки: " + createComponentTypeResponse.ErrorMessage); } var componentType = createComponentTypeResponse.Data; // Создадим компонент var componentId = Guid.NewGuid(); var createComponentResponse = dispatcher.GetOrCreateComponent(CurrentUser.AccountId, new GetOrCreateComponentRequestData() { NewId = componentId, SystemName = GetComponentSystemName(componentId), DisplayName = GetComponentDisplayName(model), TypeId = componentType.Id, ParentComponentId = folder.Id }); if (!createComponentResponse.Success) { throw new UserFriendlyException("Ошибка создания компонента для проверки: " + createComponentResponse.ErrorMessage); } component = createComponentResponse.Data.Component; } else { component = dispatcher.GetComponentById(CurrentUser.AccountId, model.ComponentId.Value).Data; } // Создадим проверку var unitTestId = Guid.NewGuid(); var createUnitTestData = new GetOrCreateUnitTestRequestData() { ActualTimeSecs = null, ComponentId = component.Id, DisplayName = unitTestDisplayName, ErrorColor = UnitTestResult.Alarm, NewId = unitTestId, SimpleMode = true, NoSignalColor = ObjectColor.Gray, PeriodSeconds = TimeSpanHelper.GetSeconds(model.Period), SystemName = UnitTestHelper.GetDynamicSystemName(unitTestId), UnitTestTypeId = GetUnitTestTypeId() }; dispatcher.GetOrCreateUnitTest(CurrentUser.AccountId, createUnitTestData).Check(); var unitTest = GetUnitTestById(unitTestId); SetUnitTestParams(unitTest, model); CurrentAccountDbContext.SaveChanges(); this.SetTempMessage(TempMessageType.Success, string.Format("Добавлена проверка <a href='{1}' class='alert-link'>{0}</a>", unitTest.DisplayName, Url.Action("Edit", "Checks", new { id = unitTest.Id }))); return(unitTest); } }
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(); }