private string GetPortFullDescription(EquipmentPort port) { string info = string.Format("Узел: {0}, Оборудование: {1}, Порт: {2}, Тип порта: {3} {4}", port.Equipment.Area.Description, port.Equipment.Description, port.Description, port.PortType.Description, !string.IsNullOrEmpty(port.Equipment.NetworkDescription) ? " [" + port.Equipment.NetworkDescription + "]" : string.Empty); return info; }
private string GetPortFullDescription(EquipmentPort port) { string info; if (port.Equipment != null) { info = string.Format("Узел: {0}, Оборудование: {1}, Порт: {2}, Тип порта: {3} {4}", port.Equipment.Area.Description, port.Equipment.Description, port.Description, port.PortType.Description, !string.IsNullOrEmpty(port.Equipment.NetworkDescription) ? " [" + port.Equipment.NetworkDescription + "]" : string.Empty); } else { info = "Ошибка в получении данных, попробуйте попытку позже."; } return info; }
private string GetPortShortDescription(EquipmentPort port) { string netEquipmentName = !string.IsNullOrEmpty(port.Equipment.NetworkDescription) ? " [" + port.Equipment.NetworkDescription + "]" : "unk"; string info = string.Format("{0} {1} {2} {3} {4}", port.Equipment.Area.Description, port.Equipment.Description, port.Description, port.PortType.Description, netEquipmentName); return info; }
private void cmiPortAdd_Click(object sender, EventArgs e) { NewPortsForm input = new NewPortsForm { cbxTypes = { DataSource = _dataContexts.AccEquipmentV2Entities.PortTypes.OrderBy(portl => portl.Description).ToList() } }; if (input.ShowDialog(this) == DialogResult.OK) { int start = Convert.ToInt16(input.tbNumberStart.Text); int count = start + Convert.ToInt16(input.tbCount.Text); PortType pt = input.cbxTypes.SelectedItem as PortType; if (pt==null) throw new Exception("invalid data in combobox"); List<EquipmentPort> newPorts=new List<EquipmentPort>(); for (int i = start; i < count; i++) { EquipmentPort newPort=new EquipmentPort { PortId = Guid.NewGuid(), EquipmentOwnerId = _clonedEquipment.EquipmentId, Equipment = _clonedEquipment, Description = input.tbDescription.Text + i, PortTypeId = pt.PortTypeId, PortType = pt }; newPorts.Add(newPort); } var dupPortNames = from np in newPorts from op in _clonedEquipment.EquipmentPorts where np.Description == op.Description select np; newPorts = newPorts.Except(dupPortNames).ToList(); newPorts.ForEach(np=> _clonedEquipment.EquipmentPorts.Add(np)); lbPorts.DataSource = _clonedEquipment.EquipmentPorts.OrderBy(portn => portn, new PortNameComparer()).ThenBy(portl => portl.PortType.Description).ToList(); } }
private bool IsDifferentPort(EquipmentPort left, EquipmentPort right) { if (left == null || right == null) return true; if (left.Description!=right.Description) return true; if (left.SideLinkId != right.SideLinkId) return true; if (left.PortTypeId!=right.PortTypeId) return true; return false; }
private void button1_Click(object sender, EventArgs e) { string description = tbDescription.Visible ? tbDescription.Text.Trim() : cbDescription.Text.Trim(); if (string.IsNullOrEmpty(description)) return; _clonedEquipment.Description = description; _clonedEquipment.NetworkDescription = tbNetworkDescription.Text; _clonedEquipment.SerialNumber = tbSerialNumber.Text; _clonedEquipment.OwnerType = cbOwner.SelectedIndex; _clonedEquipment.PlaceType = cbSide.SelectedIndex; _clonedEquipment.Comments = tbComments.Text; if (_manageEquipment == null) { //add try { Cursor = Cursors.WaitCursor; ListSelectionForm listSelectionForm = new ListSelectionForm(_dataContexts, _clonedEquipment, EquipmentListTypes.toReceive) { Text = @"Списки оборудования на получение", cbLists = { SelectedItem = SharedAppData.LastSelectedReceiveList }, btnCreateList = {Enabled = SharedAppData.IsFlagSet(EquipmentListsForm.ObjectAccessId, RightsFlags.Add)} }; if (listSelectionForm.ShowDialog(this) == DialogResult.OK) { EquipmentList list = listSelectionForm.cbLists.SelectedItem as EquipmentList; if (list==null) throw new Exception("Неправильный список оборудования!!!!"); SharedAppData.LastSelectedReceiveList = list; List<EquipmentListsDetail> details = new List<EquipmentListsDetail> { new EquipmentListsDetail { Comments = _clonedEquipment.Comments, Description = _clonedEquipment.Description, SerialNumber = _clonedEquipment.SerialNumber, SideData = GetSideData(_clonedEquipment), Id = Guid.NewGuid(), EquipmentList = list } }; if (_clonedEquipment.ChildEquipments.Any()) details.AddRange(_clonedEquipment.ChildEquipments.Select(childEquipment => new EquipmentListsDetail { Comments = childEquipment.Comments, Description = childEquipment.Description, SerialNumber = childEquipment.SerialNumber, SideData = GetSideData(_clonedEquipment), Id = Guid.NewGuid(), EquipmentList = list })); _dataContexts.AccEquipmentV2Entities.EquipmentListsDetails.AddRange(details); _dataContexts.AccEquipmentV2Entities.Equipments.Add(_clonedEquipment); _dataContexts.AccEquipmentV2Entities.SaveChanges(); } else { Cursor = Cursors.Default; return; } Cursor = Cursors.Default; DialogResult = DialogResult.OK; } catch (Exception) { throw; } } else { //update { try { Cursor = Cursors.WaitCursor; string diff; if (IsDifferentEquipment(_manageEquipment, _clonedEquipment, out diff)) { SharedAppData.HistoryStore.AddHistoryEvent("Change Equipment " + _manageEquipment.Description, diff); _manageEquipment.Description = _clonedEquipment.Description; _manageEquipment.NetworkDescription = _clonedEquipment.NetworkDescription; _manageEquipment.SerialNumber = _clonedEquipment.SerialNumber; _manageEquipment.OwnerType = _clonedEquipment.OwnerType; _manageEquipment.PlaceType = _clonedEquipment.PlaceType; _manageEquipment.Comments = _clonedEquipment.Comments; _dataContexts.AccEquipmentV2Entities.SaveChanges(); } if (IsDifferentChildEquipments(_manageEquipment, _clonedEquipment)) { _dataContexts.AccEquipmentV2Entities.Equipments.RemoveRange(_manageEquipment.ChildEquipments); _dataContexts.AccEquipmentV2Entities.SaveChanges(); foreach (Equipment equipment in _clonedEquipment.ChildEquipments) { equipment.ParentEquipment = _manageEquipment; _manageEquipment.ChildEquipments.Add(equipment); } _dataContexts.AccEquipmentV2Entities.SaveChanges(); } if (IsDifferentPorts(_manageEquipment, _clonedEquipment)) { List<EquipmentPort> deletedPorts= _manageEquipment.EquipmentPorts.Where(mport => _clonedEquipment.EquipmentPorts.All(port => port.PortId != mport.PortId)).ToList(); if (deletedPorts.Any()) { var eventPorts = _dataContexts.AccEquipmentV2Entities.Events.Where(Extensions.BuildContainsExpression<Event, Guid>(ec => ec.EquipmentPortId.Value, deletedPorts.Select(dp => dp.PortId))); if (eventPorts.Any()) { foreach (Event @event in eventPorts) { @event.Description = "Порт был удален из оборудования: " + _dataContexts.GetPortFullDescription(@event.EquipmentPort)+ Environment.NewLine + @event.Description; @event.EquipmentPort = null; @event.EquipmentPortId = null; System.Diagnostics.Debug.WriteLine("Remove events ports from parent"); } // _dataContexts.AccEquipmentV2Entities.SaveChanges(); } _dataContexts.AccEquipmentV2Entities.EquipmentPorts.RemoveRange(deletedPorts); _dataContexts.AccEquipmentV2Entities.SaveChanges(); } foreach (EquipmentPort cport in _clonedEquipment.EquipmentPorts) { var mports = _manageEquipment.EquipmentPorts.Where(port => port.PortId == cport.PortId).ToList(); if (mports.Count == 0) { var nport = new EquipmentPort { PortId = Guid.NewGuid(), Equipment = _manageEquipment, PortType = cport.PortType, Description = cport.Description }; _manageEquipment.EquipmentPorts.Add(nport); continue; } if (mports.Count > 1) throw new Exception("Invalid data struct in ports"); var mport = mports.First(); mport.Description = cport.Description; mport.PortTypeId = cport.PortTypeId; } _dataContexts.AccEquipmentV2Entities.SaveChanges(); } if (IsDifferentSideLink(_manageEquipment, _clonedEquipment)) { if (_clonedEquipment.SideLink == null) { _dataContexts.AccEquipmentV2Entities.SideLinks.Remove(_manageEquipment.SideLink); } else { if (_manageEquipment.SideLink == null) { _manageEquipment.SideLink = new SideLink() {LinkId = Guid.NewGuid()}; _dataContexts.AccEquipmentV2Entities.SideLinks.Add(_manageEquipment.SideLink); } _manageEquipment.SideLink.LinkType = _clonedEquipment.SideLink.LinkType; if (_clonedEquipment.SideLink.LinkType == (int) SideLinkType.toCustomData) { _manageEquipment.SideLink.CustomData = _clonedEquipment.SideLink.CustomData; } else { _manageEquipment.SideLink.LinkCustomerSideId = _clonedEquipment.SideLink.LinkCustomerSideId; } } _dataContexts.AccEquipmentV2Entities.SaveChanges(); } Cursor = Cursors.Default; } catch (Exception) { throw; } } DialogResult = DialogResult.OK; } }
private void ChangeTemplate(EquipmentTemplate newTemplate) { EquipmentTemplate selectedTemplate = newTemplate; if (selectedTemplate == null) return; Cursor = Cursors.WaitCursor; _clonedEquipment.Description = selectedTemplate.Description; var allTemplates = selectedTemplate.ChildElementTemplates.Flatten(x => x.ChildElementTemplates).ToList(); List<Equipment> equipmentCards=new List<Equipment>(); List<EquipmentPort> equipmentPorts=new List<EquipmentPort>(); if (allTemplates.Count != 0) { List<EquipmentTemplate> cardTemplates = allTemplates.Where(eqt => eqt.ElementType == (int) ElementType.Card).ToList(); if (cardTemplates.Any()) { equipmentCards.AddRange(cardTemplates.Select(template => new Equipment() { EquipmentId = Guid.NewGuid(), Description = template.Description, OwnerType = cbOwner.SelectedIndex, PlaceType = cbSide.SelectedIndex, Area = _area, ParentEquipment = _clonedEquipment })); } List<EquipmentTemplate> portTemplates = allTemplates.Where(eqt => eqt.ElementType == (int)ElementType.Port).ToList(); if (portTemplates.Any()) { foreach (EquipmentTemplate template in portTemplates) { string prefix = GetPrefixedName(template); for (int i = template.NumberStart; i < (template.NumberStart+template.PortCount) ; i++) { EquipmentPort port = new EquipmentPort {PortId = Guid.NewGuid(), Equipment = _clonedEquipment, PortType = template.PortType, Description = prefix + i}; equipmentPorts.Add(port); } } } } _clonedEquipment.ChildEquipments.Clear(); _clonedEquipment.EquipmentPorts.Clear(); foreach (Equipment equipmentCard in equipmentCards) { _clonedEquipment.ChildEquipments.Add(equipmentCard); } foreach (EquipmentPort equipmentPort in equipmentPorts) { _clonedEquipment.EquipmentPorts.Add(equipmentPort); } lbCards.DataSource = _clonedEquipment.ChildEquipments.OrderBy(equ=>equ.Description).ToList(); lbPorts.DataSource = _clonedEquipment.EquipmentPorts.OrderBy(portn => portn, new PortNameComparer()).ThenBy(port => port.PortType.Description).ToList(); Cursor = Cursors.Default; }
public void SetEquipmentPortSelection(EquipmentPort selectedPort) { Equipment selectedEquipment = selectedPort.Equipment; var treeAreaItem = areasTree.AllNodes.SingleOrDefault(node => ((AreaTreeItem) node.Tag).Tag is Equipment & ((AreaTreeItem) node.Tag).Id == selectedEquipment.EquipmentId); if (treeAreaItem != null) { areasTree.SelectedNode = treeAreaItem; equipmentDetails.SetPortSelection(selectedPort); } }