private void ButtonCancel_Click(object sender, EventArgs e) { if (listViewTransferedDetails.SelectedItems.Count == 0) { return; } ComponentCollection waitRemovedComponents = new ComponentCollection(); foreach (ListViewItem item in listViewTransferedDetails.SelectedItems) { if (item.Group == listViewTransferedDetails.Groups[2]) { Component component = (Component)item.Tag; waitRemovedComponents.Add(component); } } if (waitRemovedComponents.Count == 0) { return; } bool updateParentScreen = false; foreach (Component detail in waitRemovedComponents) { TransferRecord record = _waitRemovedTransfers.GetRecordByComponentId(detail.ItemId); if (record.DODR != true) { GlobalObjects.TransferRecordCore.Delete(record); _waitRemovedTransfers.Remove(_waitRemovedTransfers.GetItemById(record.ItemId)); _waitremovedConfirmComponents.Remove(_waitremovedConfirmComponents.GetItemById(detail.ItemId)); updateParentScreen = true; } } if (updateParentScreen) { InvokeButtonCancelClick(); } UpdateInformation(); }
private void ButtonAdd_Click(object sender, EventArgs e) { if (listViewTransferedDetails.SelectedItems.Count == 0) { return; } ComponentCollection installedComponents = new ComponentCollection(); ComponentCollection removedComponents = new ComponentCollection(_removedComponents.ToArray()); List <ReplaceComponentFormItem> replaceDetailFormItems; foreach (ListViewItem item in listViewTransferedDetails.SelectedItems) { if (item.Group == listViewTransferedDetails.Groups[1]) { Component component = (Component)item.Tag; installedComponents.Add(component); //detail.TransferRecords.Last.DODR = true; ////увеличение необходимого кол-ва деталей родительского компонента ////сохранение родительского компонента //detail.ParentBaseDetail.ComponentCount++; //GlobalObjects.CasEnvironment.Keeper.Save(detail.ParentBaseDetail); //GlobalObjects.CasEnvironment.Keeper.Save(detail.TransferRecords.Last); //_installedDetails.Remove(detail); //TransferRecord record = _installedTransfers.GetTransferRecordByDetailID(detail.DetailId); //if (record != null) _installedTransfers.Remove(record); } } if (installedComponents.Count == 0) { return; } replaceDetailFormItems = new List <ReplaceComponentFormItem>(); foreach (Component item in installedComponents) { var newItem = new ReplaceComponentFormItem(item, null, _parentType); replaceDetailFormItems.Add(newItem); if (item is BaseComponent) { newItem.comboBoxReplaceByDetail.Items.AddRange(_waitremovedConfirmComponents.Where(i => i is BaseComponent).ToArray()); } if (item is Component) { newItem.comboBoxReplaceByDetail.Items.AddRange(_waitremovedConfirmComponents.Where(i => i is Component).ToArray()); } if (removedComponents.Count == 0) { newItem.UpdateInformation(true); continue; } foreach (Component removedItem in removedComponents) { //проверка по сходству ID //проверка по сходству названия if (removedItem.ItemId == item.ItemId || removedItem.Description.ToUpper() == item.Description.ToUpper()) { //Если ID идентичны, то эта деталь сначала была перемещена куда-то, //а потом обратно на самолет //если название идентично, значит эта могла быть направлена на самолет //для замены снятой newItem.ReplacedByComponent = removedItem; newItem.ReplacedByDetailTransfer = _removedTransfers.GetRecordByComponentId(removedItem.ItemId); //удаление элемента из коллекции, что бы он не попал в результат дважды removedComponents.Remove(removedItem); break; } } newItem.UpdateInformation(true); } var form = new ReplaceComponentForm(_installedComponents, _removedComponents, replaceDetailFormItems.ToArray(), _parentType); form.UpdateLabels(true); TopMost = false; //что бы данное онко не перекрывало окно диалога form.ShowDialog(); TopMost = true; //return; //Если изменения не были произведены, то просто возвращаемся из данной функции if (form.DialogResult == DialogResult.Cancel) { return; } //иначе производится замена/перемещение компонентов var replacedItems = new List <ReplaceComponentFormItem>(form.GetReplacedItems()); foreach (ReplaceComponentFormItem replacedItem in replacedItems) { if (!replacedItem.ConfirmTransfer) { continue; } if (replacedItem.ParentComponent != null) { if (replacedItem.ParentComponent.IsBaseComponent) { BaseComponent bd = GlobalObjects.CasEnvironment.BaseComponents. GetItemById(replacedItem.ParentComponent.ItemId); ActualStateRecord actual = bd.ActualStateRecords[bd.TransferRecords.GetLast().StartTransferDate]; if (actual != null) { actual.RecordDate = replacedItem.ConfirmDate; //TODO:(Evgenii Babak) пересмотреть подход, наработка считается на начало дня, а в метод передаем DateTime.Now(может быть и концом дня) actual.OnLifelength = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(bd, replacedItem.ConfirmDate); GlobalObjects.CasEnvironment.NewKeeper.Save(actual); } else { actual = new ActualStateRecord { ComponentId = bd.ItemId, RecordDate = DateTime.Now, //TODO:(Evgenii Babak) пересмотреть подход, наработка считается на начало дня, а в метод передаем DateTime.Now(может быть и концом дня) OnLifelength = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(bd, replacedItem.ConfirmDate) }; GlobalObjects.ComponentCore.RegisterActualState(bd, actual); } bd.TransferRecords.GetLast().DODR = true; bd.TransferRecords.GetLast().PreConfirmTransfer = true; bd.TransferRecords.GetLast().TransferDate = replacedItem.ConfirmDate; GlobalObjects.CasEnvironment.NewKeeper.Save(bd.TransferRecords.GetLast()); } else { ActualStateRecord actual = replacedItem.ParentComponent.ActualStateRecords[replacedItem.ParentComponent.TransferRecords.GetLast().StartTransferDate]; if (actual != null) { actual.RecordDate = replacedItem.ConfirmDate; //TODO:(Evgenii Babak) пересмотреть подход, наработка считается на начало дня, а в метод передаем DateTime.Now(может быть и началом дня) actual.OnLifelength = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnEndOfDay(replacedItem.ParentComponent, DateTime.Now); GlobalObjects.CasEnvironment.NewKeeper.Save(actual); } else { actual = new ActualStateRecord { ComponentId = replacedItem.ParentComponent.ItemId, RecordDate = DateTime.Now, //TODO:(Evgenii Babak) пересмотреть подход, наработка считается на начало дня, а в метод передаем DateTime.Now(может быть и началом дня) OnLifelength = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnEndOfDay(replacedItem.ParentComponent, DateTime.Now) }; GlobalObjects.ComponentCore.RegisterActualState(replacedItem.ParentComponent, actual); } if (replacedItem.ReplacedByComponent != null && replacedItem.ReplacedByComponent.ComponentDirectives.Count > 0) { foreach (var directive in replacedItem.ReplacedByComponent.ComponentDirectives) { var newDirective = directive.GetCopyUnsaved(); newDirective.ComponentId = replacedItem.ParentComponent.ItemId; newDirective.ParentComponent = replacedItem.ParentComponent; GlobalObjects.CasEnvironment.NewKeeper.Save(newDirective); } } replacedItem.ParentComponent.TransferRecords.GetLast().DODR = true; replacedItem.ParentComponent.TransferRecords.GetLast().PreConfirmTransfer = true; replacedItem.ParentComponent.TransferRecords.GetLast().TransferDate = replacedItem.ConfirmDate; //увеличение необходимого кол-ва деталей родительского компонента //сохранение родительского компонента if (replacedItem.ParentComponent.ParentBaseComponent != null) { replacedItem.ParentComponent.ParentBaseComponent.ComponentCount++; GlobalObjects.ComponentCore.Save(replacedItem.ParentComponent.ParentBaseComponent);//TODO:(Evgenii Babak) заменить на использование ComponentCore } GlobalObjects.CasEnvironment.NewKeeper.Save(replacedItem.ParentComponent.TransferRecords.GetLast()); } _installedComponents.Remove(replacedItem.ParentComponent); TransferRecord record = _installedTransfers.GetRecordByComponentId(replacedItem.ParentComponent.ItemId); if (record != null) { _installedTransfers.Remove(record); if (replacedItem.ReplacedByComponent != null) { record.ReplaceComponentId = replacedItem.ReplacedByComponent.ItemId; record.IsReplaceComponentRemoved = true; GlobalObjects.CasEnvironment.NewKeeper.Save(record); } } } if (replacedItem.ReplacedByComponent != null) { TransferRecord record = _removedTransfers.GetRecordByComponentId(replacedItem.ReplacedByComponent.ItemId); if (record != null) { _removedTransfers.Remove(record); record.PODR = true; GlobalObjects.CasEnvironment.NewKeeper.Save(record); BaseComponent from = GlobalObjects.ComponentCore.GetBaseComponentById(record.FromBaseComponentId); //уменьшение необходимого кол-ва деталей родительского компонента //сохранение родительского компонента if (from != null) { from.ComponentCount--; GlobalObjects.ComponentCore.Save(from); } _removedComponents.Remove(replacedItem.ReplacedByComponent); } } } //создание события ButtonAddClick InvokeButtonAddClick(); UpdateInformation(); }