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 void button1_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(cbDescription.Text)) return; _clonedEquipment.Description = cbDescription.Text; _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; _dataContexts.AccEquipmentV2Entities.Equipments.Add(_clonedEquipment); _dataContexts.AccEquipmentV2Entities.SaveChanges(); Cursor = Cursors.Default; DialogResult = DialogResult.OK; } catch (Exception) { throw; } } else { //update { try { Cursor = Cursors.WaitCursor; if (IsDifferentEquipment(_manageEquipment, _clonedEquipment)) { _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()) { _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 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 cbDescription_SelectedIndexChanged(object sender, EventArgs e) { EquipmentTemplate selectedTemplate = cbDescription.SelectedItem as EquipmentTemplate; if (selectedTemplate == null) return; Cursor = Cursors.WaitCursor; SuspendLayout(); _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(); ResumeLayout(); Cursor = Cursors.Default; }