protected override void OnApplyButton(object sender, RoutedEventArgs rea) { try { RestoreFieldsBordersColor(mainLayout); HidePopupMessage(mainLayout); if (IsThereEmptyFields(mainLayout, 3)) { MakeEmptyFieldsRed(mainLayout, 3); ShowPopupMessage("Не все поля заполнены", mainLayout); return; } var newDevice = new Device() { SerialNumber = int.Parse(serialNumberBox.Text), InventoryNumber = inventoryNumberBox.Text, Type = deviceTypeBox.SelectedItem as DeviceType, NetworkName = networkNameBox.Text }; var newConfiguration = new DeviceConfiguration() { DeviceSerialNumber = int.Parse(serialNumberBox.Text), IP = ipAddressBox.SelectedItem as IPAddress, AccountName = accoutNameBox.Text, AccountPassword = passwordBox.Text }; var newHistoryNote = new History() { DeviceSerialNumber = long.Parse(serialNumberBox.Text), Corps = corpsBox.SelectedItem as Corps, Cabinet = cabinetBox.SelectedItem as Cabinet, Status = (bool)statusBox.IsChecked ? Status.GetStatusByName("Убрано на склад") : Status.GetStatusByName("Перемещено"), ChangeTimeDateTime = DateTime.Now }; Device.Edit( SelectedDevice, newDevice ); DeviceConfiguration.Edit( DeviceConfiguration.GetDeviceConfiguration(SelectedDevice), newConfiguration ); History.Write( newHistoryNote ); } catch (FormatException) { MakeRedBorders(serialNumberBox); ShowPopupMessage("Серийный номер должен быть числом", mainLayout); } catch (DataAlreadyExistException) { } catch (ConnectionLostException e) { ShowPopupMessage(e.Message, mainLayout); } catch (NoSuchDataException) { } finally { CloseThisWindow(); parentWindow.UpdateDevicesGrid(); } }