private void HeaderControlButtonSaveAndAddClick(object sender, EventArgs e) { string message; if (!ValidateData(out message)) { message += "\nAbort operation"; MessageBox.Show(message, (string)new GlobalTermsProvider()["SystemName"], MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (GetChangeStatus()) { SaveData(false); } if (MessageBox.Show("Directive added successfully" + "\nClear Fields before add new directive?", new GlobalTermsProvider()["SystemName"].ToString(), MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { ClearFields(); } else { SetFieldsUnsaved(); } BaseComponent bd = _defferedItem.ParentBaseComponent; _defferedItem = new DeferredItem { ParentBaseComponent = bd }; }
/// <summary> /// Создает объект отображающий краткую информацию о директиве /// </summary> /// <param name="currentDefferedItem"></param> public DefferedSummary(DeferredItem currentDefferedItem) { InitializeComponent(); _currentDefferedItem = currentDefferedItem; UpdateInformation(); }
///<summary> /// Создает страницу для отображения информации об одной директиве ///</summary> /// <param name="directive">Директива</param> public DeferredScreen(DeferredItem directive) : this() { if (directive == null) { throw new ArgumentNullException("directive", "Argument cannot be null"); } _defferedItem = directive; Initialize(); }
///<summary> /// Создается объект, описывающий отображение добавления директивы /// (данный конструктор используется в DiscrepancyControl через Reflection) ///</summary> /// <param name="parentAircraft">Родительский объект, в который добавляется директива</param> ///<param name="aircraftFlight">Родительский полет, в рамках которого создается директива</param> public DeferredScreen(Aircraft parentAircraft, AircraftFlight aircraftFlight) : this() { _defferedGeneralInformation.DiscoveryDateEnabled = false; _defferedGeneralInformation.EffectiveDate = aircraftFlight.FlightDate.Date; var aircraftFrame = GlobalObjects.ComponentCore.GetBaseComponentById(parentAircraft.AircraftFrameId); _defferedItem = new DeferredItem { ParentBaseComponent = aircraftFrame, Threshold = { EffectiveDate = aircraftFlight.FlightDate.Date } }; Initialize(); }
/// <summary> /// Добавляется элемент в таблицу данных /// </summary> /// <param name="directive">Добавлямая директива</param> /// <param name="destinationDataSet">Таблица, в которую добавляется элемент</param> private void AddDirectiveToDataset(DeferredItem directive, DefferedListDataSet destinationDataSet) { GlobalObjects.PerformanceCalculator.GetNextPerformance(directive); string category = directive.DeferredCategory != null?directive.DeferredCategory.ToString() : "N/A"; string discoveryDate = directive.Threshold.EffectiveDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); string nextDate = directive.NextPerformanceDate != null ? ((DateTime)directive.NextPerformanceDate).ToString(new GlobalTermsProvider()["DateFormat"].ToString()) : (directive.LastPerformance != null ? directive.LastPerformance.RecordDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()) :""); string interval = directive.LastPerformance != null ? (directive.NextPerformanceDate != null ? directive.Threshold.RepeatInterval.Days.ToString() : directive.Threshold.FirstPerformanceSinceEffectiveDate.Days.ToString()) : directive.Threshold.FirstPerformanceSinceEffectiveDate.Days.ToString(); string lastCompliance = directive.LastPerformance != null ? directive.LastPerformance.RecordDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()) : ""; string status = ""; if (directive.Status == DirectiveStatus.Closed || directive.Status == DirectiveStatus.Open || directive.Status == DirectiveStatus.Repetative || directive.Status == DirectiveStatus.NotApplicable) { status = directive.Status.ShortName; } string condition = directive.Condition.ToString(); string remarks = directive.LastPerformance != null ? directive.LastPerformance.Remarks : ""; destinationDataSet.ItemsTable.AddItemsTableRow(directive.DeferredLogBookRef, directive.DeferredMelCdlItem, directive.Description, category, directive.DeferredExtention, condition, status, discoveryDate, interval, nextDate, lastCompliance, remarks); }
///<summary> /// Создает страницу для отображения информации об одной директиве /// <br/> Производя загрузку директивы с заданным ID ///</summary> /// <param name="defferedItemId">ID директивы, которую необходимо загрузить</param> public DeferredScreen(int defferedItemId) : this() { if (defferedItemId <= 0) { throw new ArgumentException("must be >= 1", "defferedItemId"); } try { _defferedItem = GlobalObjects.CasEnvironment.NewLoader.GetObject <DirectiveDTO, DeferredItem>(new List <Filter>() { new Filter("ItemId", defferedItemId), new Filter("DirectiveType", 5) }, true); if (_defferedItem != null) { //обновление нижней шапки(через базовый скрин) CurrentAircraft = GlobalObjects.AircraftsCore.GetAircraftById(_defferedItem.ParentBaseComponent.ParentAircraftId);//TODO:(Evgenii Babak) пересмотреть использование ParentAircrafId здесь statusControl.ConditionState = GlobalObjects.PerformanceCalculator.GetConditionState(_defferedItem); //обновление суммарной информацию по директиве и суммарной информации по её подзадачам string summaryCaptionText = _defferedItem.Status.ToString(); extendableRichContainerSummary.LabelCaption.Text = "Summary " + _defferedItem.Title + " Category: " + _defferedItem.DeferredCategory + " Status: " + summaryCaptionText; } else { //обновление нижней шапки(через базовый скрин) statusControl.ConditionState = ConditionState.NotEstimated; //обновление суммарной информацию по директиве и суммарную информацию по её подзадачам string summaryCaptionText = DirectiveStatus.Closed.ToString(); extendableRichContainerSummary.LabelCaption.Text = "Summary: Can't find item with id = " + defferedItemId + " Status: " + summaryCaptionText; } } catch (Exception ex) { Program.Provider.Logger.Log("Error while load deffered Item with id = " + defferedItemId, ex); } StatusTitle = "Deffered Status"; _defferedGeneralInformation.comboBoxDefferedCategory.SelectedIndexChanged += ComboBoxDefferedCategorySelectedIndexChanged; }
///<summary> /// Создает экземпляр класса для отображения информации о директиве ///</summary> ///<param name="currentDirective"></param> public DefferedGeneralInformationControl(DeferredItem currentDirective) { if (null == currentDirective) { throw new ArgumentNullException("currentDirective", "Argument cannot be null"); } _currentDefferedItem = currentDirective; InitializeComponent(); ataChapterComboBox.UpdateInformation(); AttachedFile adNoFile = null; if (currentDirective.ADNoFile != null) { adNoFile = currentDirective.ADNoFile; } fileControlADNo.UpdateInfo(adNoFile, "Adobe PDF Files|*.pdf", "This record does not contain a file proving the AD No. Enclose PDF file to prove the compliance.", "Attached file proves the AD No."); AttachedFile sbFile = null; if (currentDirective.ServiceBulletinFile != null) { sbFile = currentDirective.ServiceBulletinFile; } fileControlSB.UpdateInfo(sbFile, "Adobe PDF Files|*.pdf", "This record does not contain a file proving the Service bulletin. Enclose PDF file to prove the compliance.", "Attached file proves the Service bulletin."); AttachedFile eoFile = null; if (currentDirective.EngineeringOrderFile != null) { eoFile = currentDirective.EngineeringOrderFile; } fileControlEO.UpdateInfo(eoFile, "Adobe PDF Files|*.pdf", "This record does not contain a file proving the Engineering order. Enclose PDF file to prove the compliance.", "Attached file proves the Engineering order."); }
///<summary> /// Создается объект, описывающий отображение добавления директивы ///</summary> /// <param name="directiveContainer">Родительский объект, в который добавляется директива</param> public DeferredScreen(BaseEntityObject directiveContainer) : this() { if (directiveContainer == null) { throw new ArgumentNullException("directiveContainer"); } if (directiveContainer is BaseComponent) { var baseDetail = (BaseComponent)directiveContainer; _defferedItem = new DeferredItem { ParentBaseComponent = baseDetail }; } else { var aircraftFrame = GlobalObjects.ComponentCore.GetBaseComponentById(((Aircraft)directiveContainer).AircraftFrameId); _defferedItem = new DeferredItem { ParentBaseComponent = aircraftFrame }; } Initialize(); }
/// <summary> /// Добавляется элемент CpcpItem в таблицу данных /// </summary> /// <param name="defferedItem">Добавлямая директива</param> /// <param name="destinationDataSet">Таблица, в которую добавляется элемент</param> public void AddDefferedItemToDataset(DeferredItem defferedItem, ForecastListDataSet destinationDataSet) { //Lifelength nextPerform; //Lifelength remain; //ConditionState conditionState; //DateTime? approx; //GlobalObjects.CasEnvironment.Calculator.GetNextPerformance((DefferedItem)defferedItem, // out nextPerform, out remain, out approx, // out conditionState); //string ataCapter = defferedItem.ATAChapter.ToString(); //string DefferenceNumber = defferedItem.References; //string subject = defferedItem.Subject; //string lastPerformance = defferedItem.LastPerformance.ToString(); //string overdue = defferedItem.NextPerformance.ToString(); //double mansHours = defferedItem.ManHours; //double cost = defferedItem.Cost; //// ((DefferedItem)item).LastPerformance == null ? "" : ((DefferedItem)item).LastPerformance.ToString(), //// remain == null ? "" : remain.ToString(); //// "Work Type", //// approx == null ? "" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime) approx); //// ((DefferedItem)item).ManHours.ToString(), //// ((DefferedItem)item).Cost.ToString() //string approxDate = SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)approx); //Aircraft parentAircraft = defferedItem.ParentAircraft; //string groupName = "DefferedItem"; //string aircraftRegAndFrameSN = parentAircraft.RegistrationNumber + " | " + // parentAircraft.Frame.ToString() + " | " + groupName; //destinationDataSet. // Items. // AddItemsRow(ataCapter, DefferenceNumber, subject, "Work Type", // mansHours, groupName, cost, overdue, approxDate, lastPerformance, // aircraftRegAndFrameSN); }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { #region Загрузка элементов AnimatedThreadWorker.ReportProgress(0, "load directives"); try { if (_defferedItem.ItemId > 0 && _needReload) { _defferedItem = GlobalObjects.CasEnvironment.NewLoader.GetObject <DirectiveDTO, DeferredItem>(new List <Filter>() { new Filter("ItemId", _defferedItem.ItemId), new Filter("DirectiveType", 5) }); } } catch (Exception ex) { Program.Provider.Logger.Log("Error while loading directives", ex); } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Калькуляция состояния директив AnimatedThreadWorker.ReportProgress(40, "calculation of directives"); if (_needReload) { GlobalObjects.PerformanceCalculator.GetNextPerformance(_defferedItem); } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Фильтрация директив AnimatedThreadWorker.ReportProgress(70, "filter directives"); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Сравнение с рабочими пакетами AnimatedThreadWorker.ReportProgress(90, "comparison with the Work Packages"); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion AnimatedThreadWorker.ReportProgress(100, "Complete"); }
protected override List <CustomCell> GetListViewSubItems(Directive item) { var subItems = new List <CustomCell>(); var author = GlobalObjects.CasEnvironment.GetCorrector(item); ////////////////////////////////////////////////////////////////////////////////////// // Определение последнего выполнения директивы и KitRequiered // ////////////////////////////////////////////////////////////////////////////////////// var lastComplianceDate = DateTimeExtend.GetCASMinDateTime(); var nextComplianceDate = DateTimeExtend.GetCASMinDateTime(); var lastComplianceLifeLength = Lifelength.Zero; var nextComplianceRemain = Lifelength.Null; string lastPerformanceString, firstPerformanceString = "N/A"; DeferredItem pd = (DeferredItem)item; DirectiveStatus status = pd.Status; DeferredCategory cat = pd.DeferredCategory; ////////////////////////////////////////////////////////////////////////////////////// // Определение последнего выполнения директивы и KitRequiered // ////////////////////////////////////////////////////////////////////////////////////// var par = " §: " + item.Paragraph; //Последнее выполнение if (item.LastPerformance != null && item.LastPerformance.RecordDate > lastComplianceDate) { lastComplianceDate = item.LastPerformance.RecordDate; lastComplianceLifeLength = item.LastPerformance.OnLifelength; } //Следующее выполнение //GlobalObjects.CasEnvironment.Calculator.GetNextPerformance(pd.DirectiveCollection[0]); var nextComplianceLifeLength = item.NextPerformanceSource; if (item.NextPerformanceDate != null) { nextComplianceDate = (DateTime)item.NextPerformanceDate; } if (item.Remains != null) { nextComplianceRemain = item.Remains; } if (item.Threshold.FirstPerformanceSinceNew != null && !item.Threshold.FirstPerformanceSinceNew.IsNullOrZero()) { firstPerformanceString = "s/n: " + item.Threshold.FirstPerformanceSinceNew; } if (item.Threshold.FirstPerformanceSinceEffectiveDate != null && !item.Threshold.FirstPerformanceSinceEffectiveDate.IsNullOrZero()) { if (firstPerformanceString != "N/A") { firstPerformanceString += " or "; } else { firstPerformanceString = ""; } firstPerformanceString += "s/e.d: " + item.Threshold.FirstPerformanceSinceEffectiveDate; } var repeatInterval = item.Threshold.RepeatInterval; var kitRequieredString = item.Kits.Count + " kits"; var ndtString = item.NDTType.ShortName; var workType = item.WorkType; var effDate = item.Threshold.EffectiveDate; var manHours = item.ManHours; var cost = item.Cost; var remarksString = pd.Remarks; var hiddenRemarksString = pd.HiddenRemarks; if (lastComplianceDate <= DateTimeExtend.GetCASMinDateTime()) { lastPerformanceString = "N/A"; } else { lastPerformanceString = lastComplianceLifeLength.ToString(); } var lastDate = (lastComplianceDate <= DateTimeExtend.GetCASMinDateTime()) ? "" : SmartCore.Auxiliary.Convert.GetDateFormat(lastComplianceDate); var titleString = pd.Title != "" ? pd.Title + par : "N/A"; var sbString = pd.ServiceBulletinNo != "" ? pd.ServiceBulletinNo : "N/A"; var eoString = pd.EngineeringOrders != "" ? pd.EngineeringOrders : "N/A"; var descriptionString = pd.Description; var applicabilityString = pd.Applicability; var ata = pd.ATAChapter; var groupName = ""; if (item is DeferredItem) { var aircraft = GlobalObjects.AircraftsCore.GetAircraftById(item.ParentBaseComponent.ParentAircraftId); groupName = $"{aircraft}"; } subItems.Add(CreateRow(groupName, groupName)); subItems.Add(CreateRow(titleString, titleString)); subItems.Add(CreateRow(sbString, sbString)); subItems.Add(CreateRow(eoString, eoString)); subItems.Add(CreateRow(descriptionString, descriptionString)); subItems.Add(CreateRow(applicabilityString, applicabilityString)); subItems.Add(CreateRow(workType.ToString(), workType)); subItems.Add(CreateRow(cat.ToString(), cat)); subItems.Add(CreateRow(status.ToString(), status)); subItems.Add(CreateRow(effDate > DateTimeExtend.GetCASMinDateTime() ? SmartCore.Auxiliary.Convert.GetDateFormat(effDate) : "", effDate)); subItems.Add(CreateRow(SmartCore.Auxiliary.Convert.GetDateFormat(item.NextPerformance?.PerformanceDate), item.NextPerformance?.PerformanceDate)); subItems.Add(CreateRow(item.NextPerformance?.PerformanceSource.ToString(), item.NextPerformance?.PerformanceSource)); subItems.Add(CreateRow(item.NextPerformance?.Remains.ToString(), item.NextPerformance?.Remains)); subItems.Add(CreateRow(item.NextPerformance?.NextLimit.Days != null ? SmartCore.Auxiliary.Convert.GetDateFormat(item.NextPerformance?.NextPerformanceDateNew) : "", item.NextPerformance?.NextPerformanceDateNew)); subItems.Add(CreateRow(item.NextPerformance?.NextLimit.ToString(), item.NextPerformance?.NextLimit.ToString())); subItems.Add(CreateRow(item.NextPerformance?.RemainLimit.ToString(), item.NextPerformance?.RemainLimit.ToString())); subItems.Add(CreateRow(lastDate, lastComplianceDate)); subItems.Add(CreateRow(lastPerformanceString, lastComplianceDate)); subItems.Add(CreateRow(ata.ToString(), ata)); subItems.Add(CreateRow(kitRequieredString, kitRequieredString)); subItems.Add(CreateRow(ndtString, ndtString)); subItems.Add(CreateRow(manHours == -1 ? "" : manHours.ToString(), manHours)); subItems.Add(CreateRow(cost == -1 ? "" : cost.ToString(), cost)); subItems.Add(CreateRow(remarksString, remarksString)); subItems.Add(CreateRow(hiddenRemarksString, hiddenRemarksString)); subItems.Add(CreateRow(author, author)); return(subItems); }
/// <summary> /// Данные у директивы обновляются по введенным данным /// </summary> /// <param name="destinationDefferedItem">Директива</param> /// <param name="changePageName">Менять ли название вкладки</param> public void ApplyChanges(DeferredItem destinationDefferedItem, bool changePageName) { textboxTitle.Focus(); if (destinationDefferedItem == null) { throw new ArgumentNullException("destinationDefferedItem"); } destinationDefferedItem.ATAChapter = ATAChapter; if (CurrentDefferedCategory != null && CurrentDefferedCategory != destinationDefferedItem.DeferredCategory) { destinationDefferedItem.DeferredCategory = CurrentDefferedCategory; } destinationDefferedItem.ADType = (ADType)(radioButtonAirFrame.Checked ? 0 : 1); if (destinationDefferedItem.Title != Title) { destinationDefferedItem.Title = Title; if (changePageName) { string caption = ""; if (destinationDefferedItem.ParentBaseComponent != null) { //TODO:(Evgenii Babak) Использовать DestinationHelper var baseComponent = destinationDefferedItem.ParentBaseComponent; if (baseComponent.BaseComponentTypeId == BaseComponentType.Frame.ItemId) { //у Frame всегда есть ParentAircraftId caption = $"{DestinationHelper.GetDestinationStringFromAircraft(baseComponent.ParentAircraftId, false, null)}. {destinationDefferedItem.DirectiveType.CommonName}. {destinationDefferedItem.Title}"; } else { if (baseComponent.ParentAircraftId > 0) { caption = $"{DestinationHelper.GetDestinationStringFromAircraft(baseComponent.ParentAircraftId, false, null)}. "; } else if (baseComponent.ParentStoreId > 0) { caption = $"{DestinationHelper.GetDestinationStringFromStore(baseComponent.ParentStoreId, null, true)}. "; } caption += baseComponent + ". " + destinationDefferedItem.DirectiveType.CommonName + ". " + destinationDefferedItem.Title; } } if (DisplayerRequested != null) { DisplayerRequested(this, new ReferenceEventArgs(null, ReflectionTypes.ChangeTextOfContainingDisplayer, caption)); } } } destinationDefferedItem.HiddenRemarks = HiddenRemarks; destinationDefferedItem.Threshold.EffectiveDate = EffectiveDate; destinationDefferedItem.ServiceBulletinNo = ServiceBulletin; destinationDefferedItem.EngineeringOrders = EngOrderNumber; destinationDefferedItem.Applicability = Applicability; destinationDefferedItem.Description = Subject; destinationDefferedItem.DeferredLogBookRef = LogBookReferences; destinationDefferedItem.DeferredMelCdlItem = MelCdlItem; destinationDefferedItem.DeferredExtention = Extention; destinationDefferedItem.Remarks = Remarks; if (fileControlSB.GetChangeStatus()) { fileControlSB.ApplyChanges(); fileControlSB.Save(); destinationDefferedItem.ServiceBulletinFile = fileControlSB.AttachedFile; } if (fileControlEO.GetChangeStatus()) { fileControlEO.ApplyChanges(); fileControlEO.Save(); destinationDefferedItem.EngineeringOrderFile = fileControlEO.AttachedFile; } if (fileControlADNo.GetChangeStatus()) { fileControlADNo.ApplyChanges(); fileControlADNo.Save(); destinationDefferedItem.ADNoFile = fileControlADNo.AttachedFile; } }
private void LookupComboboxDeferredSelectedIndexChanged(object sender, EventArgs e) { if (lookupComboboxDeferred.SelectedItem != null) { _showDeferredInfoPanel = true; panelDeferredInfo.Visible = extendableRichContainer.Extended && _showDeferredInfoPanel; ataChapterComboBox.Enabled = false; DeferredItem di = lookupComboboxDeferred.SelectedItem as DeferredItem; ataChapterComboBox.ATAChapter = di != null ? di.ATAChapter : null; radioOpen.Enabled = false; radioClose.Enabled = false; if (di != null) { dateTimePickerOpenDate.Visible = true; dateTimePickerOpenDate.Value = di.Threshold.EffectiveDate; if (di.PerformanceRecords.Count > 0) { if (di.IsClosed) { dateTimePickerClosingDate.Visible = true; dateTimePickerExtension.Visible = false; numericUpDownExtTimes.Visible = false; dateTimePickerClosingDate.Value = di.PerformanceRecords.GetLast().RecordDate; } else { dateTimePickerClosingDate.Visible = false; dateTimePickerExtension.Visible = true; numericUpDownExtTimes.Visible = true; dateTimePickerExtension.Value = di.PerformanceRecords.GetLast().RecordDate; try { numericUpDownExtTimes.Value = GlobalObjects.CasEnvironment.Loader.GetCountPerformanceRecords <DirectiveRecord>( SmartCoreType.Directive, di.ItemId); } catch (Exception ex) { Program.Provider.Logger.Log("Error while load count of records for directive id:" + di.ItemId, ex); } GlobalObjects.PerformanceCalculator.GetNextPerformance(di); lifelengthViewerRemains.Lifelength = di.Remains; } } else { dateTimePickerClosingDate.Visible = false; dateTimePickerExtension.Visible = false; numericUpDownExtTimes.Visible = false; GlobalObjects.PerformanceCalculator.GetNextPerformance(di); lifelengthViewerRemains.Lifelength = di.Remains; } if (di.Status == DirectiveStatus.Closed) { textBoxMelCdl.Text = di.DeferredMelCdlItem; textBoxDeferredCategory.Text = di.DeferredCategory.ToString(); if (di.Status == DirectiveStatus.Closed) { radioClose.Checked = true; } else { radioOpen.Checked = true; } } } if (di == null) { dateTimePickerOpenDate.Visible = false; dateTimePickerClosingDate.Visible = false; dateTimePickerExtension.Visible = false; numericUpDownExtTimes.Visible = false; lifelengthViewerRemains.Lifelength = Lifelength.Null; } } else { _showDeferredInfoPanel = false; panelDeferredInfo.Visible = _showDeferredInfoPanel; ataChapterComboBox.Enabled = true; ataChapterComboBox.ATAChapter = Discrepancy.ATAChapter; radioOpen.Enabled = true; radioClose.Enabled = true; if (Discrepancy.CorrectiveAction != null && Discrepancy.CorrectiveAction.Status == CorrectiveActionStatus.Close) { radioClose.Checked = true; } else { radioOpen.Checked = true; } } }