/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который производит добавление выбранного интерфейса к доступным /// </summary> private void pictureBox7_Click(object sender, EventArgs e) { var selectedInterface = strorageInterfaceBindingSource.Current as StrorageInterface; if (selectedInterface != null) { var existedInt = AvalibleInterfaces.SingleOrDefault(ai => ai.Name.Equals(selectedInterface.Name)); if (existedInt != null) { existedInt.Slot_Count++; AvalibleInterfaces.Remove(existedInt); AvalibleInterfaces.Add(existedInt); } else { AvalibleInterfaces.Add(new AvalibleInterface { Name = selectedInterface.Name, Slot_Count = 1 }); } } else { MessageBox.Show("Выберите интерфейс из списка!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который осуществляет увеличение количества выбранного установленного накопителя /// </summary> private void picBtn_IncreaseStorage_Click(object sender, EventArgs e) { var selectedInstalledStorage = installedStorageOnSANBindingSource.Current as InstalledStorageOnSAN; if (selectedInstalledStorage == null) { MessageBox.Show("Выберите установленный накопитель из списка!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var avalibleInterface = AvalibleInterfaces.Single(av => av.Name.Equals(selectedInstalledStorage.Interface)); var installedStoragesOfInterface = InstalledStorageOnSAN.Where(iss => iss.Interface.Equals(avalibleInterface.Name)).ToList(); if (installedStoragesOfInterface.Count > 0) { int avalibleSlotCount = avalibleInterface.Slot_Count - installedStoragesOfInterface.Sum(isi => isi.Count); if (avalibleSlotCount == 0) { MessageBox.Show($"Все разъемы под интерфейс {avalibleInterface.Name} заняты!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } try { selectedInstalledStorage.Count++; installedStorageOnSANBindingSource.DataSource = InstalledStorageOnSAN; dg_InstalledStorage.DataSource = InstalledStorageOnSAN; dg_InstalledStorage.Refresh(); var sanPartInfo = sANPartsInfoBindingSource.DataSource as SANPartsInfo; if (sanPartInfo != null) { sanPartInfo.StorageSumPrice += selectedInstalledStorage.Price; sanPartInfo.UpdateTotalPrice(); BindSANPartsInfo(); } } catch { MessageBox.Show("Произошла ошибка при добавлении накопителя!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который производит увеличение количества выбранного интерфейса /// </summary> private void pictureBox21_Click(object sender, EventArgs e) { var selectedInterface = avalibleInterfaceBindingSource.Current as AvalibleInterface; if (selectedInterface != null) { selectedInterface.Slot_Count++; AvalibleInterfaces.Remove(selectedInterface); AvalibleInterfaces.Add(selectedInterface); } else { MessageBox.Show("Выберите интерфейс из списка или добавьте новый!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который осуществляет удаление выбранного установленного интерфейса накопителя /// </summary> private void pictureBox19_Click(object sender, EventArgs e) { var selectedInterface = avalibleInterfaceBindingSource.Current as AvalibleInterface; if (selectedInterface == null) { MessageBox.Show("Выберите интерфейс из списка или добавьте новый!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } try { var existedStorages = InstalledStorageOnSAN.Where(iss => iss.Interface.Equals(selectedInterface.Name)) .ToList(); if (existedStorages.Count == 0) { AvalibleInterfaces.Remove(selectedInterface); } else { var result = MessageBox.Show( "Вместе с интерфейсом будут удалены накопители, кототрые к нему принадлежат! Продолжить?", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (result == DialogResult.Yes) { var sanPartInfo = sANPartsInfoBindingSource.DataSource as SANPartsInfo; foreach (var es in existedStorages) { sanPartInfo.StorageSumPrice -= (es.Price * es.Count); InstalledStorageOnSAN.Remove(es); } AvalibleInterfaces.Remove(selectedInterface); sanPartInfo.UpdateTotalPrice(); BindSANPartsInfo(); } } } catch { MessageBox.Show("Произошла ошибка при удалении интерфейса!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который осуществляет уменьшение количества выбранного установленного интерфейса накопителя /// </summary> private void pictureBox20_Click(object sender, EventArgs e) { var selectedInterface = avalibleInterfaceBindingSource.Current as AvalibleInterface; if (selectedInterface == null) { MessageBox.Show("Выберите интерфейс из списка или добавьте новый!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } try { var existedStorages = InstalledStorageOnSAN.Where(iss => iss.Interface.Equals(selectedInterface.Name)) .ToList(); if (existedStorages.Count == 0 || (existedStorages.Sum(es => es.Count) < selectedInterface.Slot_Count)) { if (selectedInterface.Slot_Count > 1) { selectedInterface.Slot_Count--; avalibleInterfaceBindingSource.DataSource = AvalibleInterfaces; dg_AvalibleInterfaces.DataSource = avalibleInterfaceBindingSource; dg_AvalibleInterfaces.Refresh(); } else { AvalibleInterfaces.Remove(selectedInterface); } } else { MessageBox.Show( "Заняты все слоты выбранного интерфейса! Для удаления интерфейса следует удалить 1 из накопителей!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch { MessageBox.Show("Произошла ошибка при удалении интерфейса!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который производит удаление выбранного интерфейса /// </summary> private void pictureBox19_Click(object sender, EventArgs e) { var selectedInterface = avalibleInterfaceBindingSource.Current as AvalibleInterface; if (selectedInterface != null) { var result = MessageBox.Show("Выбранный интерфейс будет удален! Продолжить?", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.Yes) { AvalibleInterfaces.Remove(selectedInterface); } } else { MessageBox.Show("Выберите интерфейс из списка или добавьте новый!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который осуществляет добавление выбранного интерфейса к доступным /// </summary> private void pictureBox7_Click(object sender, EventArgs e) { var selectedInterface = strorageInterfaceBindingSource.Current as StrorageInterface; if (selectedInterface == null) { MessageBox.Show("Выберите интерфейс из списка!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { var existedInt = AvalibleInterfaces.SingleOrDefault(ai => ai.Name.Equals(selectedInterface.Name)); if (existedInt != null) { existedInt.Slot_Count++; avalibleInterfaceBindingSource.DataSource = AvalibleInterfaces; dg_AvalibleInterfaces.DataSource = avalibleInterfaceBindingSource; dg_AvalibleInterfaces.Refresh(); } else { AvalibleInterfaces.Add(new AvalibleInterface { Name = selectedInterface.Name, Slot_Count = 1 }); } BindStorages(); } catch { MessageBox.Show("Произошла ошибка при добавлении интерфейса!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на кнопку, /// который производит сохранение добавляемой / редактируемой записи об платформе /// </summary> private async void btn_Save_Click(object sender, EventArgs e) { if (comboBox1.SelectedIndex == -1 || comboBox2.SelectedIndex == -1 || comboBox3.SelectedIndex == -1 || string.IsNullOrWhiteSpace(CurrentPlatform.Model) || CurrentPlatform.RamVolumeMax <= 0 || CurrentPlatform.RamSocketCount <= 0 || CurrentPlatform.Price <= 0 || CurrentPlatform.CPUCount <= 0) { MessageBox.Show("Заполните все поля для сохранения изменений!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } try { var selectedManufacturer = manufacturerBindingSource.Current as Manufacturer; bool existed = false; switch (_formMode) { case FormMode.Add: existed = await _ctx.CheckPlatformForDublicate(CurrentPlatform.Model, selectedManufacturer.Name); break; case FormMode.Edit: existed = await _ctx.CheckPlatformForDublicate(CurrentPlatform.Model, selectedManufacturer.Name) && (!CurrentPlatform.Model.Equals(_modelNameBeforeEdit) || !selectedManufacturer.Name.Equals(_manufacturerBeforeEdit)); break; } if (existed) { MessageBox.Show("Платформа с таким производителем и моделью уже существует!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } CurrentPlatform.Platform_StorageInt = _ctx.GetPlatformStorageIntFromAvalible(CurrentPlatform, AvalibleInterfaces.ToList()); switch (_formMode) { case FormMode.Add: await _ctx.AddNewPlatform(CurrentPlatform); MessageBox.Show("Новая платформа успешно сохранена!", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); break; case FormMode.Edit: await _ctx.EditPlatform(CurrentPlatform); MessageBox.Show("Изменения в платформе успешно сохранены!", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); break; } _saved = true; DialogResult = DialogResult.OK; Close(); } catch { MessageBox.Show("Изменения не удалось сохранить!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который осуществляет добавление выбранного накопителя к установленным /// </summary> private void pictureBox13_Click(object sender, EventArgs e) { var selectedStorage = strorageBindingSource.Current as Strorage; if (selectedStorage == null) { MessageBox.Show("Выберите накопитель из списка!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var avalibleInterface = AvalibleInterfaces.Single(av => av.Name.Equals(selectedStorage.StrorageInterface.Name)); var installedStoragesOfInterface = InstalledStorageOnSAN.Where(iss => iss.Interface.Equals(avalibleInterface.Name)).ToList(); if (installedStoragesOfInterface.Count > 0) { int avalibleSlotCount = avalibleInterface.Slot_Count - installedStoragesOfInterface.Sum(isi => isi.Count); if (avalibleSlotCount == 0) { MessageBox.Show($"Все разъемы под интерфейс {avalibleInterface.Name} заняты!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } try { var existedItem = InstalledStorageOnSAN.SingleOrDefault(iss => iss.Manufacturer.Equals(selectedStorage.Manufacturer.Name) && iss.Model.Equals(selectedStorage.Model)); if (existedItem != null) { existedItem.Count++; installedStorageOnSANBindingSource.DataSource = InstalledStorageOnSAN; dg_InstalledStorage.DataSource = installedStorageOnSANBindingSource; dg_InstalledStorage.Refresh(); } else { InstalledStorageOnSAN.Add(new InstalledStorageOnSAN { Model = selectedStorage.Model, Manufacturer = selectedStorage.Manufacturer.Name, Volume = selectedStorage.Volume, Interface = selectedStorage.StrorageInterface.Name, Count = 1, Price = selectedStorage.Price }); } var sanPartInfo = sANPartsInfoBindingSource.DataSource as SANPartsInfo; if (sanPartInfo != null) { sanPartInfo.StorageSumPrice += selectedStorage.Price; sanPartInfo.UpdateTotalPrice(); BindSANPartsInfo(); } } catch { MessageBox.Show("Произошла ошибка при добавлении накопителя!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }