Esempio n. 1
0
        private void AddComplianceItem(MaintenanceCheckRecord forCheckRecord)
        {
            CompliancePDFItem pdFitem = new CompliancePDFItem(forCheckRecord);

            flowLayoutPanelContainer.Controls.Add(pdFitem);

            pdFitem.AutoSize     = true;
            pdFitem.AutoSizeMode = AutoSizeMode.GrowAndShrink;
        }
Esempio n. 2
0
        ///<summary>
        ///</summary>
        public CompliancePDFItem(MaintenanceCheckRecord maintenanceCheckRecord) : this()
        {
            if (maintenanceCheckRecord == null)
            {
                throw new ArgumentNullException("maintenanceCheckRecord", "must be not null");
            }
            _maintenanceCheckRecord = maintenanceCheckRecord;
            _currentCheck           = maintenanceCheckRecord.ParentCheck;

            UpdateInformation();
        }
        private void AddListViewItem(AbstractPerformanceRecord apr, WorkPackage workPackage,
                                     MaintenanceCheckRecord mcr)
        {
            DirectiveRecord      directiveRecord = (DirectiveRecord)apr;
            MaintenanceDirective parentDirective = (MaintenanceDirective)directiveRecord.Parent;

            string[] subs = new[]  {
                parentDirective.WorkType.ToString(),
                     UsefulMethods.NormalizeDate(directiveRecord.RecordDate),
                directiveRecord.OnLifelength != null
                                                   ? directiveRecord.OnLifelength.ToString()
                                                   : "",
                "",
                "",
                directiveRecord.Remarks,
            };

            ListViewItem newItem = new ListViewItem(subs)
            {
                Group = listViewCompliance.Groups[1],
                Tag   = directiveRecord
            };

            if (workPackage != null)
            {
                //запись о выполнении блокируется найденым пакетом
                apr.DirectivePackage = workPackage;
                newItem.BackColor    = Color.FromArgb(Highlight.Grey.Color);
                newItem.ToolTipText  =
                    "Perform of the task:" + parentDirective.WorkType +
                    "\nadded by Work Package:" +
                    "\n" + directiveRecord.DirectivePackage.Title +
                    "\nTo remove a performance of task, you need to exclude task from this work package," +
                    "\nor delete the work package ";
            }
            else if (directiveRecord.MaintenanceCheckRecordId > 0 && mcr != null && mcr.ParentCheck != null)
            {
                MaintenanceCheck mc = mcr.ParentCheck;
                directiveRecord.MaintenanceCheck = mc;
                newItem.BackColor   = Color.FromArgb(Highlight.Grey.Color);
                newItem.ToolTipText =
                    "Perform of the task:" + parentDirective.WorkType +
                    "\nadded by Maintenance Check:" +
                    "\n" + mc.Name +
                    "\nTo remove a performance of task, you need to delete performance of maintenance check";
            }
            listViewCompliance.Items.Add(newItem);
        }
Esempio n. 4
0
 /// <summary>
 /// ????????? ??????????? ?????? Operation Time
 /// </summary>
 /// <param name="aircraft">??</param>
 /// <param name="items"></param>
 /// <param name="aircraftBaseDetails"></param>
 /// <param name="lastCCheckRecord"></param>
 /// <param name="workPackages"></param>
 /// <param name="from"></param>
 /// <param name="to"></param>
 public OperationTimeReportBuilder(Aircraft aircraft,
                                   List <MaintenanceCheckRecordGroup> items,
                                   IEnumerable <BaseComponent> aircraftBaseDetails,
                                   MaintenanceCheckRecord lastCCheckRecord,
                                   IEnumerable <WorkPackage> workPackages,
                                   DateTime from,
                                   DateTime to)
 {
     _currentAircraft     = aircraft;
     _records             = items;
     _aircraftBaseDetails = aircraftBaseDetails;
     _lastCheckRecord     = lastCCheckRecord;
     _workPackages        = workPackages;
     _from = from;
     _to   = to;
 }
Esempio n. 5
0
 /// <summary>
 /// Создается построитель отчета Operation Time
 /// </summary>
 /// <param name="aircraft">ВС</param>
 /// <param name="minCCheck"></param>
 /// <param name="aircraftBaseDetails"></param>
 /// <param name="lastACheckRecord"></param>
 /// <param name="lastCCheckRecord"></param>
 /// <param name="workPackages"></param>
 /// <param name="countDCheckPerformances"></param>
 public AircraftTechnicalConditionReportBuilder(Aircraft aircraft,
                                                MaintenanceCheck minCCheck,
                                                IEnumerable <BaseComponent> aircraftBaseDetails,
                                                MaintenanceCheckRecord lastACheckRecord,
                                                MaintenanceCheckRecord lastCCheckRecord,
                                                IEnumerable <WorkPackage> workPackages,
                                                int countDCheckPerformances)
 {
     _reportedAircraft        = aircraft;
     _minCCheck               = minCCheck;
     _aircraftBaseDetails     = aircraftBaseDetails;
     _lastACheckRecord        = lastACheckRecord;
     _lastCСheckRecord        = lastCCheckRecord;
     _workPackages            = workPackages;
     _countDCheckPerformances = countDCheckPerformances;
 }
        private void ComboBoxCheckRecordSelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBoxCheckRecord.SelectedItem as MaintenanceCheckRecordGroup == null)
            {
                return;
            }

            MaintenanceCheckRecordGroup maintenanceCheckRecordGroup = comboBoxCheckRecord.SelectedItem as MaintenanceCheckRecordGroup;
            MaintenanceCheckRecord      maintenanceCheckRecord      = maintenanceCheckRecordGroup.GetMinIntervalCheckRecord();

            if (maintenanceCheckRecord == null)
            {
                return;
            }
            lifelengthViewer_LastCompliance.Lifelength = new Lifelength(maintenanceCheckRecord.OnLifelength);
        }
        /// <summary>
        /// Возвращает имя последней группы выполнения группы
        /// </summary>
        /// <returns>Имя последней группы выполнения группы</returns>
        public string GetComplianceGroupName()
        {
            MaintenanceCheck maxCheck = GetMaxIntervalCheck();

            if (maxCheck == null)
            {
                return("");
            }
            MaintenanceCheckRecord mcr = maxCheck.PerformanceRecords.FirstOrDefault(r => r.NumGroup == GroupComplianceNum);

            if (mcr == null || string.IsNullOrEmpty(mcr.ComplianceCheckName))
            {
                return(maxCheck.Name);
            }

            return(mcr.ComplianceCheckName);
        }
        /// <summary>
        /// Данные работы обновляются по введенным значениям
        /// </summary>
        private bool SaveData()
        {
            MaintenanceCheckRecordGroup mcrg = (MaintenanceCheckRecordGroup)comboBoxCheckRecord.SelectedItem;
            MaintenanceCheckRecord      mcr  = mcrg.GetMinIntervalCheckRecord();

            if (mcr != null)
            {
                _currentMaintenanceProgramChangeRecord.CalculatedPerformanceSource =
                    mcr.CalculatedPerformanceSource.IsNullOrZero()
                    ? new Lifelength(mcr.ParentCheck.Interval * mcr.PerformanceNum)
                    : new Lifelength(mcr.CalculatedPerformanceSource);
                _currentMaintenanceProgramChangeRecord.PerformanceNum           = mcr.PerformanceNum;
                _currentMaintenanceProgramChangeRecord.RecordDate               = mcr.RecordDate;
                _currentMaintenanceProgramChangeRecord.MaintenanceCheckRecordId = mcr.ItemId;
            }
            _currentMaintenanceProgramChangeRecord.Remarks      = textBox_Remarks.Text;
            _currentMaintenanceProgramChangeRecord.OnLifelength = lifelengthViewer_LastCompliance.Lifelength;

            if (comboBoxMSG.SelectedItem is MSG)
            {
                _currentMaintenanceProgramChangeRecord.MSG = (MSG)comboBoxMSG.SelectedItem;
            }
            else
            {
                _currentMaintenanceProgramChangeRecord.MSG = MSG.MSG2;
            }
            try
            {
                GlobalObjects.MaintenanceCore.RegisterMaintenanceProgramChangeRecord(_currentAircraft, _currentMaintenanceProgramChangeRecord);
            }
            catch (Exception ex)
            {
                Program.Provider.Logger.Log("Error while saving maintenance program change record", ex);
                return(false);
            }

            return(true);
        }
Esempio n. 9
0
        /// <summary>
        /// Удаляет запись о выполнении директивы
        /// </summary>
        /// <param name="record"></param>
        public void Delete(MaintenanceCheckRecord record)
        {
            record.IsDeleted = true;
            _newKeeper.Save(record);

            // нужно обнулить математический аппарат объекта, которому принадлежит запись о выполнении
            // а также удалить выполнение директивы из коллекции выполнений директивы
            if (record.ParentCheck != null && record.ParentCheck.PerformanceRecords != null)
            {
                record.ParentCheck.PerformanceRecords.Remove(record);
            }

            var ddr = _casEnvironment.NewLoader.GetObjectListAll <DirectiveRecordDTO, DirectiveRecord>(new Filter("MaintenanceCheckRecordId", record.ItemId));

            if (ddr.Count <= 0)
            {
                return;
            }

            foreach (var directiveRecord in ddr)
            {
                _newKeeper.Delete(directiveRecord, true, false);
            }
        }
Esempio n. 10
0
        private void UpdateInformation()
        {
            if (_contextMenuStrip == null)
            {
                InitToolStripMenuItems();
            }

            listViewCompliance.Items.Clear();

            if (CheckItems == null)
            {
                return;
            }

            var lastRecords      = new List <MaintenanceCheckRecord>();
            var nextPerformances = new List <NextPerformance>();

            //Поиск и заполнение просроченных директив и записей о перемещении
            //Объекты для в которые будет извлекаться информация
            //из записеи о перемещении

            string[]     subs;
            ListViewItem newItem;

            var aircraftFrame = GlobalObjects.ComponentCore.GetBaseComponentById(_currentAircraft.AircraftFrameId);
            //прогнозируемый ресурс
            var forecastData = new ForecastData(DateTime.Now, aircraftFrame.AverageUtilization,
                                                GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(_currentAircraft));

            //GlobalObjects.CasEnvironment.Calculator.GetNextPerformanceGroup(CheckItems, _currentAircraft.Schedule, forecastData);

            foreach (MaintenanceCheck check in CheckItems)
            {
                if (check.Grouping)
                {
                    foreach (MaintenanceNextPerformance mnp in check.GetPergormanceGroupWhereCheckIsSenior())
                    {
                        //Добавляются все выполнения, дата которых меньше нынешней
                        //плюс еще одно выполнение дата которого выше нынешней
                        nextPerformances.Add(mnp);

                        if (mnp.PerformanceDate != null && mnp.PerformanceDate > DateTime.Now)
                        {
                            break;
                        }
                    }
                }
                else
                {
                    foreach (NextPerformance mnp in check.NextPerformances)
                    {
                        //Добавляются все выполнения, дата которых меньше нынешней
                        //плюс еще одно выполнение дата которого выше нынешней
                        nextPerformances.Add(mnp);

                        if (mnp.PerformanceDate != null && mnp.PerformanceDate > DateTime.Now)
                        {
                            break;
                        }
                    }
                }

                lastRecords.AddRange(check.PerformanceRecords.ToArray());

                foreach (MaintenanceDirective mpd in check.BindMpds)
                {
                    GlobalObjects.PerformanceCalculator.GetNextPerformance(mpd, forecastData);
                }
            }
            ////////////////////////////////////////////
            //загрузка рабочих пакетов для определения
            //перекрытых ими выполнений задач
            if (_openPubWorkPackages == null)
            {
                _openPubWorkPackages = new CommonCollection <WorkPackage>();
            }
            _openPubWorkPackages.Clear();
            _openPubWorkPackages.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackagesLite(_currentAircraft, WorkPackageStatus.Opened));
            _openPubWorkPackages.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackagesLite(_currentAircraft, WorkPackageStatus.Published));

            var allWorkPackagesIncludedTask = new CommonCollection <WorkPackage>();
            var openPubWorkPackages         = new CommonCollection <WorkPackage>();
            var closedWorkPackages          = new CommonCollection <WorkPackage>();

            allWorkPackagesIncludedTask.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackagesLite(_currentAircraft,
                                                                                                   WorkPackageStatus.All,
                                                                                                   CheckItems.Select(m => (IDirective)m).ToList()));

            #region Добавление в список просроченных выполнений
            //и сравнение их с открытыми и опубликованными рабочими пакетами
            openPubWorkPackages.AddRange(allWorkPackagesIncludedTask.Where(wp => wp.Status == WorkPackageStatus.Opened ||
                                                                           wp.Status == WorkPackageStatus.Published));
            //сбор всех записей рабочих пакетов для удобства фильтрации
            List <WorkPackageRecord> openPubWPRecords = new List <WorkPackageRecord>();
            foreach (WorkPackage openWorkPackage in openPubWorkPackages)
            {
                openPubWPRecords.AddRange(openWorkPackage.WorkPakageRecords);
            }

            //LINQ запрос для сортировки записей по дате
            List <NextPerformance> sortNextRecords = (from record in nextPerformances
                                                      orderby record.GetPerformanceDateOrDefault() descending
                                                      select record).ToList();

            for (int i = 0; i < sortNextRecords.Count; i++)
            {
                //поиск записи в рабочих пакетах по данному чеку
                //чей номер группы выполнения (по записи) совпадает с расчитанным
                MaintenanceCheck check = (MaintenanceCheck)sortNextRecords[i].Parent;

                //if (check.Name == "5C")
                //{

                //}
                //номер выполнения
                int parentCountPerf;
                if (check.LastPerformance != null)
                {
                    parentCountPerf = check.LastPerformance.NumGroup <= 0
                        ? 1
                        : check.LastPerformance.NumGroup;
                }
                else
                {
                    parentCountPerf = 0;
                }

                if (check.Grouping)
                {
                    MaintenanceNextPerformance mnp = sortNextRecords[i] as MaintenanceNextPerformance;
                    if (mnp != null)
                    {
                        parentCountPerf = mnp.PerformanceGroupNum;
                    }
                    else
                    {
                        parentCountPerf += check.NextPerformances.IndexOf(sortNextRecords[i]);
                        parentCountPerf += 1;
                    }
                }
                else
                {
                    parentCountPerf += check.NextPerformances.IndexOf(sortNextRecords[i]);
                    parentCountPerf += 1;
                }

                WorkPackageRecord wpr =
                    openPubWPRecords.Where(r => r.PerformanceNumFromStart == parentCountPerf &&
                                           r.WorkPackageItemType == check.SmartCoreObjectType.ItemId &&
                                           r.DirectiveId == check.ItemId).FirstOrDefault();
                if (wpr != null)
                {
                    WorkPackage wp = openPubWorkPackages.GetItemById(wpr.WorkPakageId);
                    //запись о выполнении блокируется найденым пакетом
                    sortNextRecords[i].BlockedByPackage = wp;
                    //последующие записи о выполнении так же должны быть заблокированы
                    for (int j = i - 1; j >= 0; j--)
                    {
                        //блокировать нужно все рабочие записи, или до первой записи,
                        //заблокированной другим рабочим пакетом
                        if (sortNextRecords[j].BlockedByPackage != null &&
                            sortNextRecords[j].Parent == check ||
                            sortNextRecords[j].Condition != ConditionState.Overdue)
                        {
                            break;
                        }
                        if (sortNextRecords[j].Parent == check)
                        {
                            sortNextRecords[j].BlockedByPackage   = wp;
                            listViewCompliance.Items[j].BackColor = Color.FromArgb(Highlight.GrayLight.Color);
                        }
                    }
                }

                string type        = check.Schedule ? " (Schedule) " : " (Store) ";
                string resource    = check.Resource.ToString();
                string grouping    = check.Grouping ? " (Group)" : "";
                string stringNumGr = (sortNextRecords[i] is MaintenanceNextPerformance
                    ? ((MaintenanceNextPerformance)sortNextRecords[i]).PerformanceGroupNum.ToString()
                    : "N/A") + type + resource + grouping;

                subs = new[]  {
                    stringNumGr,
                    sortNextRecords[i].Title,
                    sortNextRecords[i].PerformanceDate != null
                                       ? UsefulMethods.NormalizeDate((DateTime)sortNextRecords[i].PerformanceDate)
                                       : "N/A",
                    sortNextRecords[i].PerformanceSource.ToString(),
                    "",
                };
                newItem = new ListViewItem(subs)
                {
                    Group     = listViewCompliance.Groups["next"],
                    Tag       = sortNextRecords[i],
                    BackColor = UsefulMethods.GetColor(sortNextRecords[i])
                };

                listViewCompliance.Items.Add(newItem);
            }
            #endregion

            #region Добавление в список записей о произведенных выполнениях
            //и сравнение их с закрытыми рабочими пакетами
            closedWorkPackages.AddRange(allWorkPackagesIncludedTask.Where(wp => wp.Status == WorkPackageStatus.Closed));
            //сбор всех записей рабочих пакетов для удобства фильтрации
            List <WorkPackageRecord> closedWPRecords = new List <WorkPackageRecord>();
            foreach (WorkPackage closedWorkPackage in closedWorkPackages)
            {
                closedWPRecords.AddRange(closedWorkPackage.WorkPakageRecords);
            }

            List <MaintenanceCheckRecordGroup> maintenanceCheckRecordGroups = new List <MaintenanceCheckRecordGroup>();

            foreach (MaintenanceCheckRecord record in lastRecords)
            {
                //Поиск коллекции групп, в которую входят группы с нужными критериями
                //по плану, группировка и основному ресурсу
                if (record.ParentCheck.Grouping)
                {
                    MaintenanceCheckRecordGroup recordGroup = maintenanceCheckRecordGroups
                                                              .FirstOrDefault(g => g.Schedule == record.ParentCheck.Schedule &&
                                                                              g.Grouping == record.ParentCheck.Grouping &&
                                                                              g.Resource == record.ParentCheck.Resource &&
                                                                              g.GroupComplianceNum == record.NumGroup);
                    if (recordGroup != null)
                    {
                        //Коллекция найдена
                        //Поиск в ней группы чеков с нужным типом
                        recordGroup.Records.Add(record);
                    }
                    else
                    {
                        //Коллекции с нужными критериями нет
                        //Созадние и добавление
                        recordGroup =
                            new MaintenanceCheckRecordGroup(record.ParentCheck.Schedule, record.ParentCheck.Grouping,
                                                            record.ParentCheck.Resource, record.NumGroup);
                        recordGroup.Records.Add(record);
                        maintenanceCheckRecordGroups.Add(recordGroup);
                    }
                }
                else
                {
                    MaintenanceCheckRecordGroup recordGroup =
                        new MaintenanceCheckRecordGroup(record.ParentCheck.Schedule, record.ParentCheck.Grouping,
                                                        record.ParentCheck.Resource);
                    recordGroup.Records.Add(record);
                    maintenanceCheckRecordGroups.Add(recordGroup);
                }
            }

            List <object> tempRecords = new List <object>();
            tempRecords.AddRange(maintenanceCheckRecordGroups.ToArray());
            tempRecords.AddRange(_currentAircraft.MaintenanceProgramChangeRecords.ToArray());

            List <object> sortLastRecords =
                tempRecords.OrderByDescending(tr => (tr is MaintenanceCheckRecordGroup
                                                        ? ((MaintenanceCheckRecordGroup)tr).LastGroupComplianceDate
                                                        : tr is AbstractRecord
                                                            ? ((AbstractRecord)tr).RecordDate
                                                            : DateTimeExtend.GetCASMinDateTime()))
                .ToList();
            foreach (object t in sortLastRecords)
            {
                if (t is MaintenanceCheckRecordGroup)
                {
                    MaintenanceCheckRecordGroup mcrg            = (MaintenanceCheckRecordGroup)t;
                    MaintenanceCheckRecord      directiveRecord = mcrg.Records.First();
                    MaintenanceCheck            parentDirective = (MaintenanceCheck)directiveRecord.Parent;
                    newItem = GetListViewItem(mcrg);

                    WorkPackage workPackage =
                        closedWorkPackages.Where(wp => wp.ItemId == directiveRecord.DirectivePackageId).FirstOrDefault();
                    if (workPackage != null)
                    {
                        //запись о выполнении блокируется найденым пакетом
                        directiveRecord.DirectivePackage = workPackage;
                        newItem.BackColor   = Color.FromArgb(Highlight.Grey.Color);
                        newItem.ToolTipText =
                            "Perform of the task:" + parentDirective.Name +
                            "\nadded by Work Package:" +
                            "\n" + directiveRecord.DirectivePackage.Title +
                            "\nTo remove a performance of task, you need to exclude task from this work package," +
                            "\nor delete the work package ";
                    }
                    listViewCompliance.Items.Add(newItem);
                }
                else if (t is MaintenanceProgramChangeRecord)
                {
                    MaintenanceProgramChangeRecord mpcr = (MaintenanceProgramChangeRecord)t;
                    subs = new[]
                    {
                        "N/A",
                        "Changet to " + mpcr.MSG,
                        UsefulMethods.NormalizeDate(mpcr.RecordDate),
                        mpcr.OnLifelength.ToString(),
                        "",
                    };
                    newItem = new ListViewItem(subs)
                    {
                        Group     = listViewCompliance.Groups["last"],
                        Tag       = mpcr,
                        BackColor = Color.FromArgb(Highlight.GrayLight.Color)
                    };

                    listViewCompliance.Items.Add(newItem);
                }
            }
            #endregion

            if (_toolStripMenuItemsWorkPackages != null)
            {
                foreach (ToolStripMenuItem item in _toolStripMenuItemsWorkPackages.DropDownItems)
                {
                    item.Click -= AddToWorkPackageItemClick;
                }

                _toolStripMenuItemsWorkPackages.DropDownItems.Clear();

                foreach (WorkPackage workPackage in _openPubWorkPackages)
                {
                    ToolStripMenuItem item = new ToolStripMenuItem(workPackage.Title);
                    item.Click += AddToWorkPackageItemClick;
                    item.Tag    = workPackage;
                    _toolStripMenuItemsWorkPackages.DropDownItems.Add(item);
                }
            }

            ButtonAdd.Enabled = false;
        }
Esempio n. 11
0
        /// <summary>
        /// Данные работы обновляются по введенным значениям
        /// </summary>
        private void SaveData()
        {
            foreach (WorkPackageClosingDataGridViewRow row in dataGridViewItems.Rows.OfType <WorkPackageClosingDataGridViewRow>())
            {
                if ((bool)row.Cells[ColumnClosed.Index].Value == false)
                {
                    continue;
                }
                try
                {
                    DateTime performDate = (DateTime)row.Cells[ColumnDate.Index].Value;
                    if (row.ClosingItem is Procedure)
                    {
                        Procedure       dir             = (Procedure)row.ClosingItem;
                        DirectiveRecord directiveRecord = (DirectiveRecord)row.Record;

                        if (directiveRecord.ItemId <= 0)
                        {
                            directiveRecord.Completed    = true;
                            directiveRecord.RecordType   = DirectiveRecordType.Perfromed;
                            directiveRecord.RecordTypeId = DirectiveRecordType.Perfromed.ItemId;
                            directiveRecord.Remarks      = "Audit " + _currentAudit.Title + " Close " + dir.ProcedureType.CommonName + " Procedure";
                        }
                        directiveRecord.RecordDate = performDate;
                        Lifelength performanceSource;
                        directiveRecord.OnLifelength = Lifelength.TryParse((string)row.Cells[ColumnHours.Index].Value,
                                                                           (string)row.Cells[ColumnCycles.Index].Value,
                                                                           (string)row.Cells[ColumnDays.Index].Value,
                                                                           out performanceSource) ? performanceSource : Lifelength.Zero;

                        GlobalObjects.PerformanceCore.RegisterPerformance(dir, directiveRecord, _currentAudit);
                    }
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("Error while saving performance for directive", ex);
                }
            }
            //_closingItems.All(item => item.SaveData());

            IEnumerable <MaintenanceCheck> closedChecks =
                dataGridViewItems.Rows.OfType <WorkPackageClosingDataGridViewRow>()
                .Where(ci => ci.ClosingItem is MaintenanceCheck)
                .Select(ci => ci.ClosingItem as MaintenanceCheck);

            foreach (MaintenanceCheck mc in closedChecks)
            {
                MaintenanceCheckRecord mcRecord =
                    mc.PerformanceRecords.FirstOrDefault(pr => pr.DirectivePackageId == _currentAudit.ItemId);
                if (mcRecord == null)
                {
                    continue;
                }
                IEnumerable <DirectiveRecord> bindedMpdsRecords =
                    dataGridViewItems.Rows.OfType <WorkPackageClosingDataGridViewRow>()
                    .Where(ci => ci.ClosingItem is MaintenanceDirective)
                    .Select(ci => ci.ClosingItem as MaintenanceDirective)
                    .Where(mpd => mpd.MaintenanceCheck != null &&
                           mpd.MaintenanceCheck.ItemId == mc.ItemId &&
                           mpd.PerformanceRecords.FirstOrDefault(pr => pr.DirectivePackageId == _currentAudit.ItemId) != null)
                    .Select(mpd => mpd.PerformanceRecords.FirstOrDefault(pr => pr.DirectivePackageId == _currentAudit.ItemId));
                foreach (DirectiveRecord mpdsRecord in bindedMpdsRecords)
                {
                    mpdsRecord.MaintenanceCheckRecordId = mcRecord.ItemId;
                    GlobalObjects.NewKeeper.Save(mpdsRecord, false);
                }
            }
        }
Esempio n. 12
0
        /// <summary>
        /// Добавление директив в таблицу данных
        /// </summary>
        /// <param name="dataset">Таблица, в которую добавляются данные</param>
        protected virtual void AddDirectivesToDataSet(MaintenancePlanDataSet dataset)
        {
            //группировка по родительскому самолету
            IEnumerable <IGrouping <Aircraft, BaseEntityObject> > groupByAircraft =
                _reportedDirectives.GroupBy(GlobalObjects.AircraftsCore.GetParentAircraft)
                .OrderBy(g => g.Key.ToString() + " " + g.Key.Model.ToString());

            foreach (IGrouping <Aircraft, BaseEntityObject> byAircraft in groupByAircraft)
            {
                IEnumerable <IGrouping <DateTime, BaseEntityObject> > groupedItems =
                    byAircraft.GroupBy(GetDate)
                    .OrderBy(g => g.Key);

                //сбор всех китов ВС в одну коллекцию
                List <AbstractAccessory> aircraftKits =
                    byAircraft.Select(ba => ba)
                    .Select(GetParent)
                    .Where(i => i is IKitRequired)
                    .SelectMany(i => ((IKitRequired)i).Kits)
                    .Cast <AbstractAccessory>()
                    .ToList();

                foreach (IGrouping <DateTime, BaseEntityObject> groupedItem in groupedItems)
                {
                    //Группировка элементов по датам выполнения
                    DateTime dateTime = groupedItem.Key.Date;
                    //Формирование первой части названия группы, состоящей из даты выполнения
                    string temp      = "";
                    string kitString = "";
                    double manHours  = 0;
                    //Собрание всех выполнений на данную дату в одну коллекцию
                    IEnumerable <BaseEntityObject> performances = groupedItem.Select(lvi => lvi).ToArray();
                    //Собрание всех КИТов на данную дату в одну коллекцию
                    IEnumerable <AccessoryRequired> kits =
                        performances.Select(GetParent)
                        .Where(i => i is IKitRequired)
                        .SelectMany(i => ((IKitRequired)i).Kits);
                    IEnumerable <IGrouping <string, AccessoryRequired> > groupByType = kits.GroupBy(GetAccessoryTypeString);
                    foreach (IGrouping <string, AccessoryRequired> grouping in groupByType)
                    {
                        if (!string.IsNullOrEmpty(kitString))
                        {
                            kitString += Environment.NewLine;
                        }
                        kitString += grouping.Key + Environment.NewLine;

                        kitString =
                            grouping.Select(g => g)
                            .Distinct(new AccessoryRequired())
                            .Aggregate(kitString, (current, kit) => current + (kit.ToString() + "; "));
                    }
                    //Добавление в название присутствующих на данную дату чеков программы обслуживания
                    IEnumerable <BaseEntityObject> maintenanceCheckPerformances =
                        performances.Where(np => GetParent(np) is MaintenanceCheck);

                    foreach (BaseEntityObject mcp in maintenanceCheckPerformances)
                    {
                        if (mcp is MaintenanceNextPerformance)
                        {
                            MaintenanceNextPerformance mnp = mcp as MaintenanceNextPerformance;

                            temp += mnp.PerformanceGroup.GetGroupName();
                            if (byAircraft.Key != null && byAircraft.Key.MSG < MSG.MSG3)
                            {
                                temp += "( " + mnp.PerformanceGroup.ToStringCheckNames() + ")";
                            }
                        }
                        else if (mcp is NextPerformance)
                        {
                            NextPerformance np = mcp as NextPerformance;
                            temp += ((MaintenanceCheck)np.Parent).Name;
                        }
                        else if (mcp is MaintenanceCheckRecord)
                        {
                            MaintenanceCheckRecord mcr = mcp as MaintenanceCheckRecord;
                            temp += string.IsNullOrEmpty(mcr.ComplianceCheckName)
                                ? mcr.ParentCheck.Name
                                : mcr.ComplianceCheckName;
                        }
                        else if (mcp is MaintenanceCheck)
                        {
                            MaintenanceCheck mc = (MaintenanceCheck)mcp;
                            if (mc.Grouping)
                            {
                                MaintenanceNextPerformance mnp =
                                    mc.GetNextPergormanceGroupWhereCheckIsSenior();
                                if (mnp != null)
                                {
                                    temp += mnp.PerformanceGroup.GetGroupName();
                                }
                                else
                                {
                                    temp += mc.Name;
                                }
                            }
                            else
                            {
                                temp += mc.Name;
                            }
                        }
                        temp += " ";
                    }
                    IEnumerable <IBaseEntityObject> allDirectives = performances.Select(GetParent).ToArray();
                    //Добавление в название присутствующих на данную дату директив летной годности
                    IEnumerable <Directive> directivesPerformances = allDirectives.OfType <Directive>().ToArray();
                    if (directivesPerformances.Any())
                    {
                        IEnumerable <IGrouping <DirectiveType, Directive> > groupByDirectiveType =
                            directivesPerformances.GroupBy(d => d.DirectiveType);

                        foreach (IGrouping <DirectiveType, Directive> grouping in groupByDirectiveType)
                        {
                            if (!string.IsNullOrEmpty(temp))
                            {
                                temp += Environment.NewLine;
                            }
                            temp += grouping.Key.ShortName + " " + Environment.NewLine;

                            foreach (Directive ad in grouping)
                            {
                                temp += ad.Title + " § " + ad.Paragraph + " " + ad.WorkType;
                                temp += "; ";
                            }
                        }

                        manHours += directivesPerformances.Sum(dp => dp.ManHours);
                    }

                    //Добавление в название присутствующих на данную дату компонентов или задач по ним
                    IEnumerable <IBaseEntityObject> componentPerformances =
                        allDirectives.Where(np => np is Component || np is ComponentDirective).ToArray();
                    if (componentPerformances.Any())
                    {
                        if (!string.IsNullOrEmpty(temp))
                        {
                            temp += Environment.NewLine;
                        }
                        temp += "Component" + Environment.NewLine;

                        foreach (IBaseEntityObject componentPerformance in componentPerformances)
                        {
                            Component d;
                            if (componentPerformance is ComponentDirective)
                            {
                                ComponentDirective dd = (ComponentDirective)componentPerformance;
                                d = ((ComponentDirective)componentPerformance).ParentComponent;
                                if (d != null)
                                {
                                    temp += "P/N:" + d.PartNumber + " S/N:" + d.SerialNumber + " " + dd.DirectiveType;
                                }
                                else
                                {
                                    temp += dd.DirectiveType;
                                }
                                manHours += dd.ManHours;

                                if (dd.DirectiveType == ComponentRecordType.Remove ||
                                    dd.DirectiveType == ComponentRecordType.Discard ||
                                    dd.DirectiveType == ComponentRecordType.Overhaul)
                                {
                                    //типом работ является удаление или уничтожение компонента

                                    //Добавление в коллекцию Китов ВС данного компонента,
                                    //т.к. его необходимо будет приобрести
                                    aircraftKits.Add(d);
                                }
                            }
                            else
                            {
                                d = componentPerformance as Component;
                                if (d != null)
                                {
                                    temp     += "P/N:" + d.PartNumber + " S/N:" + d.SerialNumber + " Discard";
                                    manHours += d.ManHours;
                                    //Добавление в коллекцию Китов ВС данного компонента,
                                    //т.к. его необходимо будет приобрести
                                    aircraftKits.Add(d);
                                }
                            }
                            temp += "; ";
                        }
                    }
                    //Добавление в название присутствующих на данную дату MPD
                    //Вывод только тех MPD что не привязаны к чекам
                    IEnumerable <MaintenanceDirective> mpdPerformances =
                        allDirectives.OfType <MaintenanceDirective>().ToArray();
                    if (mpdPerformances.Any())
                    {
                        if (!string.IsNullOrEmpty(temp))
                        {
                            temp += Environment.NewLine;
                        }
                        temp += "MPD " + Environment.NewLine;

                        foreach (MaintenanceDirective mpd in mpdPerformances)
                        {
                            temp     += mpd.TaskNumberCheck + " " + mpd.WorkType.ShortName + "; ";
                            manHours += mpd.ManHours;
                        }
                    }
                    dataset.ItemsTable.AddItemsTableRow("",
                                                        "",
                                                        temp,
                                                        dateTime,
                                                        manHours,
                                                        0,
                                                        kitString,
                                                        byAircraft.Key != null ? byAircraft.Key + " " + byAircraft.Key.Model : "Unk");
                }


                IEnumerable <IGrouping <Product, AbstractAccessory> > products =
                    aircraftKits.GroupBy(ak => ak.Product ??
                                         new Product {
                    GoodsClass  = ak.GoodsClass,
                    Standart    = ak.Standart,
                    PartNumber  = ak.ParentString,
                    Description = ak.Description
                }
                                         );
                foreach (IGrouping <Product, AbstractAccessory> product in products)
                {
                    string type             = GetAccessoryTypeString(product.First());
                    double quantity         = 0;
                    double totalProductCost = 0;

                    if (product.Key.GoodsClass.IsNodeOrSubNodeOf(GoodsClass.Tools) ||
                        product.Key.GoodsClass.IsNodeOrSubNodeOf(GoodsClass.ControlTestEquipment))
                    {
                        quantity         = product.Max(p => p.Quantity);
                        totalProductCost = 0;
                    }
                    else if (product.Key.GoodsClass.IsNodeOrSubNodeOf(GoodsClass.ComponentsAndParts))
                    {
                        foreach (AbstractAccessory accessoryRequired in product)
                        {
                            int qty = accessoryRequired.Quantity < 1 ? 1 : (int)accessoryRequired.Quantity;
                            quantity         += qty;
                            totalProductCost += (qty * accessoryRequired.CostNew);
                        }
                    }
                    else
                    {
                        foreach (AbstractAccessory accessoryRequired in product)
                        {
                            quantity         += accessoryRequired.Quantity;
                            totalProductCost += (accessoryRequired.Quantity * accessoryRequired.CostNew);
                        }
                    }

                    dataset.KitsTable.AddKitsTableRow(product.Key.ToString(),
                                                      quantity,
                                                      totalProductCost,
                                                      byAircraft.Key != null ? byAircraft.Key + " " + byAircraft.Key.Model : "Unk",
                                                      type);
                }
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Добавление директив в таблицу данных
        /// </summary>
        /// <param name="destinationDataSet">Таблица, в которую добавляются данные</param>
        protected virtual void AddDirectivesToDataSet(MaintenanceHistoryDataSet destinationDataSet)
        {
            if (_reportedAircraft == null)
            {
                return;
            }
            var compliance = from item in _reportedDirectives
                             group item by item.NumGroup into compl
                             orderby compl.First().RecordDate descending
                             select compl;

            foreach (IGrouping <int, MaintenanceCheckRecord> grouping in compliance)
            {
                MaintenanceCheckRecord reportedDirective = grouping.First();
                string name = grouping.Aggregate("", (current, g) => current + (g.ParentCheck.Name + " "));

                Lifelength reportAircraftLifeLenght =
                    GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(_reportedBaseComponent);
                Lifelength used = new Lifelength(reportAircraftLifeLenght);

                string lastComplianceDate = "", lastComplianceHours = "", lastComplianceCycles = "", lastComplianceDays = "";
                string remarks, references = "";


                remarks              = reportedDirective.Remarks;
                lastComplianceDate   = reportedDirective.RecordDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString());
                lastComplianceCycles = reportedDirective.OnLifelength.Cycles != null
                                               ? reportedDirective.OnLifelength.Cycles.ToString()
                                               : "";

                lastComplianceHours = reportedDirective.OnLifelength.Hours != null
                                               ? reportedDirective.OnLifelength.Hours.ToString()
                                               : "";

                lastComplianceDays = reportedDirective.OnLifelength.Days != null
                                               ? reportedDirective.OnLifelength.Days.ToString()
                                               : "";

                var unusedDays     = reportedDirective.Unused?.Days.ToString() ?? "";
                var unusedHours    = reportedDirective.Unused?.Hours.ToString() ?? "";
                var unusedCycles   = reportedDirective.Unused?.Cycles.ToString() ?? "";
                var overusedDays   = reportedDirective.Overused?.Days.ToString() ?? "";
                var overusedHours  = reportedDirective.Overused?.Hours.ToString() ?? "";
                var overusedCycles = reportedDirective.Overused?.Cycles.ToString() ?? "";

                used.Substract(reportedDirective.OnLifelength);
                destinationDataSet.ItemsTable.AddItemsTableRow(lastComplianceDate,
                                                               reportedDirective.NumGroup,
                                                               reportedDirective.ParentCheck.Schedule ? "SCHEDULE" : "UNSCHEDULE",
                                                               name,
                                                               lastComplianceDays,
                                                               lastComplianceHours,
                                                               lastComplianceCycles,
                                                               unusedDays,
                                                               unusedHours,
                                                               unusedCycles,
                                                               overusedDays,
                                                               overusedHours,
                                                               overusedCycles,
                                                               remarks,
                                                               references);
            }
        }
Esempio n. 14
0
 /// <summary>
 /// Контрол редактирует данные о закрытии привязанной директивы программы обслуживания
 /// </summary>
 public BindedMpdItemControl(MaintenanceDirective mpd, MaintenanceCheckRecord maintenanceCheckRecord)
     : this()
 {
     _maintenanceCheckRecord = maintenanceCheckRecord;
     AttachedObject          = mpd;
 }
Esempio n. 15
0
        private void HeaderControlButtonPrintDisplayerRequested(object sender, Interfaces.ReferenceEventArgs e)
        {
            if (sender == _itemPrintReportGeneralData)
            {
                AircraftGeneralDataReportBuilder builder = new AircraftGeneralDataReportBuilder();
                string caption = CurrentAircraft.RegistrationNumber + "." + "General data report";
                builder.ReportedAircraft           = CurrentAircraft;
                builder.LifelengthAircraftSinceNew =
                    GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(CurrentAircraft);
                e.DisplayerText    = caption;
                e.TypeOfReflection = ReflectionTypes.DisplayInNew;
                e.RequestedEntity  = new ReportScreen(builder);
                GlobalObjects.AuditRepository.WriteReportAsync(GlobalObjects.CasEnvironment.IdentityUser, "AircraftSummaryScreen (Aircraft General Data)");
            }
            else if (sender == _itemPrintReportTechnicalCondition)
            {
                var maintenanceChecks = GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <MaintenanceCheckDTO, MaintenanceCheck> (new List <Filter>
                {
                    new Filter("ParentAircraft", CurrentAircraft.ItemId),
                    new Filter("Schedule", true)
                }, true);

                var workPackages = GlobalObjects.WorkPackageCore.GetWorkPackagesLite(CurrentAircraft, WorkPackageStatus.Closed, maintenanceChecks.Select(m => (IDirective)m).ToList());

                MaintenanceCheck minCCheck =
                    maintenanceChecks.Where(mc => mc.CheckType.ShortName == "C" &&
                                            mc.Schedule &&
                                            mc.Grouping &&
                                            mc.Resource == LifelengthSubResource.Hours)
                    .OrderBy(mc => mc.Interval.GetSubresource(LifelengthSubResource.Hours))
                    .FirstOrDefault();

                MaintenanceCheckRecord lastCCheckRecord =
                    maintenanceChecks.Where(mc => mc.CheckType.ShortName == "C" &&
                                            mc.Schedule &&
                                            mc.Grouping &&
                                            mc.Resource == LifelengthSubResource.Hours)
                    .SelectMany(mc => mc.PerformanceRecords)
                    .Where(pr => pr.RecordDate.Date <= DateTime.Now)
                    .OrderByDescending(pr => pr.RecordDate)
                    .FirstOrDefault();

                MaintenanceCheckRecord lastACheckRecord =
                    maintenanceChecks.Where(mc => mc.CheckType.ShortName == "A" &&
                                            mc.Schedule &&
                                            mc.Grouping &&
                                            mc.Resource == LifelengthSubResource.Hours)
                    .SelectMany(mc => mc.PerformanceRecords)
                    .Where(pr => pr.RecordDate.Date <= DateTime.Now)
                    .OrderByDescending(pr => pr.RecordDate)
                    .FirstOrDefault();
                if (lastACheckRecord.NumGroup == lastCCheckRecord.NumGroup)
                {
                    lastACheckRecord = null;
                }

                List <MaintenanceCheckRecord> dCheckRecords =
                    maintenanceChecks.Where(mc => mc.CheckType.ShortName == "D")
                    .SelectMany(mc => mc.PerformanceRecords)
                    .ToList();

                List <MaintenanceCheckRecordGroup> maintenanceCheckRecordGroups = new List <MaintenanceCheckRecordGroup>();

                foreach (MaintenanceCheckRecord record in dCheckRecords)
                {
                    //Поиск коллекции групп, в которую входят группы с нужными критериями
                    //по плану, группировка и основному ресурсу
                    if (record.ParentCheck.Grouping)
                    {
                        MaintenanceCheckRecordGroup recordGroup = maintenanceCheckRecordGroups
                                                                  .FirstOrDefault(g => g.Schedule == record.ParentCheck.Schedule &&
                                                                                  g.Grouping == record.ParentCheck.Grouping &&
                                                                                  g.Resource == record.ParentCheck.Resource &&
                                                                                  g.GroupComplianceNum == record.NumGroup);
                        if (recordGroup != null)
                        {
                            //Коллекция найдена
                            //Поиск в ней группы чеков с нужным типом
                            recordGroup.Records.Add(record);
                        }
                        else
                        {
                            //Коллекции с нужными критериями нет
                            //Созадние и добавление
                            recordGroup =
                                new MaintenanceCheckRecordGroup(record.ParentCheck.Schedule, record.ParentCheck.Grouping,
                                                                record.ParentCheck.Resource, record.NumGroup);
                            recordGroup.Records.Add(record);
                            maintenanceCheckRecordGroups.Add(recordGroup);
                        }
                    }
                    else
                    {
                        MaintenanceCheckRecordGroup recordGroup =
                            new MaintenanceCheckRecordGroup(record.ParentCheck.Schedule, record.ParentCheck.Grouping,
                                                            record.ParentCheck.Resource);
                        recordGroup.Records.Add(record);
                        maintenanceCheckRecordGroups.Add(recordGroup);
                    }
                }

                AircraftTechnicalConditionReportBuilder reportBuilder =
                    new AircraftTechnicalConditionReportBuilder(CurrentAircraft,
                                                                minCCheck,
                                                                GlobalObjects.ComponentCore.GetAicraftBaseComponents(CurrentAircraft.ItemId),
                                                                lastACheckRecord,
                                                                lastCCheckRecord,
                                                                workPackages,
                                                                maintenanceCheckRecordGroups.Count);

                e.TypeOfReflection = ReflectionTypes.DisplayInNew;
                e.DisplayerText    = CurrentAircraft.RegistrationNumber + " Operation Time Report";
                e.RequestedEntity  = new ReportScreen(reportBuilder);
                GlobalObjects.AuditRepository.WriteReportAsync(GlobalObjects.CasEnvironment.IdentityUser, "AircraftSummaryScreen (Technical Condition)");
            }
            else
            {
                e.Cancel = true;
            }
        }
Esempio n. 16
0
        private ListViewItem GetListViewItem(MaintenanceCheckRecordGroup grouping)
        {
            string name              = "N/A";
            string type              = "N/A";
            string resource          = "N/A";
            string group             = "N/A";
            string num               = "N/A";
            string recordDate        = "N/A";
            string performanceSource = "N/A";
            string remarksString     = "N/A";
            Color  backColor         = Color.White;

            if (grouping.Records.Count > 0)
            {
                grouping.Sort();

                MaintenanceCheckRecord mcr = grouping.LastOrDefault();
                MaintenanceCheck       mc  = grouping.GetMaxIntervalCheck();

                type      = mc.Schedule ? " (Schedule) " : " (Store) ";
                resource  = mc.Resource.ToString();
                group     = mc.Grouping ? " (Group)" : "";
                backColor = mc.Schedule ? Color.White : Color.Gainsboro;

                if (mcr != null)
                {
                    num  = mc.Grouping ? mcr.NumGroup.ToString() : "N/A";
                    name = _currentAircraft != null && _currentAircraft.MaintenanceProgramCheckNaming
                                        ? (!string.IsNullOrEmpty(grouping.First().ComplianceCheckName)
                                               ? mcr.ComplianceCheckName
                                               : mc.Name)
                                        : mc.Name;
                    recordDate        = UsefulMethods.NormalizeDate(mcr.RecordDate);
                    performanceSource = mcr.OnLifelength.ToRepeatIntervalsFormat();
                    remarksString     = mcr.Remarks;

                    if (mc.Grouping)
                    {
                        MaintenanceProgramChangeRecord mpcr = mc.ParentAircraft != null
                            ? mc.ParentAircraft.MaintenanceProgramChangeRecords.
                                                              GetLastKnownRecord(Convert.ToDateTime(mcr.RecordDate))
                            : null;

                        if (mpcr == null || mpcr.MSG < MSG.MSG3)
                        {
                            var complianceItems = from compliance in grouping
                                                  orderby compliance.OnLifelength.Hours descending
                                                  select compliance;
                            name += " (" + complianceItems.Aggregate("", (current, compliance) => current + (compliance.ParentCheck.Name + " ")) + ")";
                        }
                    }
                }
            }

            ListViewItem listViewItem = new ListViewItem(num + type + resource + group)
            {
                Tag       = grouping.ToList(),
                Group     = listViewCompliance.Groups["last"],
                BackColor = backColor
            };

            listViewItem.SubItems.Add(name);
            listViewItem.SubItems.Add(recordDate);
            listViewItem.SubItems.Add(performanceSource);
            listViewItem.SubItems.Add(remarksString);
            return(listViewItem);
        }
Esempio n. 17
0
        /// <summary>
        /// Выполняет работу с записями о выполнении задачи
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected override void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            backgroundWorker.ReportProgress(50);

            Invoke(new Action(() => listViewCompliance.Items.Clear()));

            if (_currentDirective == null)
            {
                e.Cancel = true;
                return;
            }

            List <AbstractPerformanceRecord> lastRecords      = new List <AbstractPerformanceRecord>();
            List <NextPerformance>           nextPerformances = new List <NextPerformance>();

            if (_openPubAudits == null)
            {
                _openPubAudits = new CommonCollection <Audit>();
            }
            _openPubAudits.Clear();
            //_openPubAudits.AddRange(GlobalObjects.CasEnvironment.Loader.GetWorkPackages(_currentDirective.ParentBaseDetail.ParentAircraft, WorkPackageStatus.Opened, true));
            //_openPubAudits.AddRange(GlobalObjects.CasEnvironment.Loader.GetWorkPackages(_currentDirective.ParentBaseDetail.ParentAircraft, WorkPackageStatus.Published, true));

            _openPubAudits.AddRange(GlobalObjects.AuditCore.GetAuditsLite(_currentDirective.ParentOperator, WorkPackageStatus.Opened));
            _openPubAudits.AddRange(GlobalObjects.AuditCore.GetAuditsLite(_currentDirective.ParentOperator, WorkPackageStatus.Published));

            CommonCollection <Audit> allWorkPackagesIncludedTask = new CommonCollection <Audit>();
            CommonCollection <Audit> openPubWorkPackages         = new CommonCollection <Audit>();
            CommonCollection <Audit> closedWorkPackages          = new CommonCollection <Audit>();

            //Поиск и заполнение просроченных директив и записей о перемещении
            //Объекты для в которые будет извлекаться информация
            //из записеи о перемещении

            //прогнозируемый ресурс
            ForecastData forecastData   = null;
            Aircraft     parentAircraft = null;

            if (_currentDirective.ParentOperator != null)
            {
                ////если известна родительская деталь данной директивы,
                ////то ее текущая наработка и средняя утилизация
                ////используются в качестве ресурсов прогноза
                ////для расчета всех просроченных выполнений
                //forecastData = new ForecastData(DateTime.Now,
                //    _currentDirective.ParentBaseDetail.AverageUtilization,
                //    GlobalObjects.CasEnvironment.Calculator.GetLifelength(_currentDirective.ParentBaseDetail));
                //parentAircraft = _currentDirective.ParentBaseDetail.ParentAircraft;
            }

            //расчет след. выполнений директивы.
            //если известен ресурс прогноза, то будут расчитаны все просрочнные выполнения
            //если неизвестне, то только первое
            GlobalObjects.PerformanceCalculator.GetNextPerformance(_currentDirective, forecastData);
            nextPerformances.AddRange(_currentDirective.NextPerformances);
            lastRecords.AddRange(_currentDirective.PerformanceRecords.ToArray());
            ////////////////////////////////////////////
            //загрузка рабочих пакетов для определения
            //перекрытых ими выполнений задач
            //_openPubWorkPackages.AddRange(GlobalObjects.CasEnvironment.Loader.GetWorkPackages(parentAircraft, WorkPackageStatus.Opened, true));
            //_openPubWorkPackages.AddRange(GlobalObjects.CasEnvironment.Loader.GetWorkPackages(parentAircraft, WorkPackageStatus.Published, true));

            CommonCollection <Procedure> includedTasks = new CommonCollection <Procedure>(new[] { _currentDirective });

            allWorkPackagesIncludedTask.AddRange(GlobalObjects.AuditCore.GetAuditsLite(_currentDirective.ParentOperator,
                                                                                       WorkPackageStatus.All,
                                                                                       includedTasks));
            includedTasks.Clear();

            #region Добавление в список просроченных выполнений
            //и сравнение их с открытыми и опубликованными рабочими пакетами
            openPubWorkPackages.AddRange(allWorkPackagesIncludedTask.Where(wp => wp.Status == WorkPackageStatus.Opened ||
                                                                           wp.Status == WorkPackageStatus.Published));
            //сбор всех записей рабочих пакетов для удобства фильтрации
            List <AuditRecord> openPubWpRecords = openPubWorkPackages.SelectMany(wp => wp.AuditRecords).ToList();
            //LINQ запрос для сортировки записей по дате
            List <NextPerformance> sortNextRecords = (from record in nextPerformances
                                                      orderby GetDate(record) descending
                                                      select record).ToList();

            for (int i = 0; i < sortNextRecords.Count; i++)
            {
                if (backgroundWorker.CancellationPending)
                {
                    allWorkPackagesIncludedTask.Clear();
                    openPubWorkPackages.Clear();
                    closedWorkPackages.Clear();

                    e.Cancel = true;
                    return;
                }

                //поиск записи в рабочих пакетах по данному чеку
                //чей номер группы выполнения (по записи) совпадает с расчитанным
                Procedure directive = (Procedure)sortNextRecords[i].Parent;
                //номер выполнения
                int parentCountPerf;
                if (directive.LastPerformance != null)
                {
                    parentCountPerf = directive.LastPerformance.PerformanceNum <= 0
                        ? 1
                        : directive.LastPerformance.PerformanceNum;
                }
                else
                {
                    parentCountPerf = 0;
                }
                parentCountPerf += directive.NextPerformances.IndexOf(sortNextRecords[i]);
                parentCountPerf += 1;

                AuditRecord wpr =
                    openPubWpRecords.FirstOrDefault(r => r.PerformanceNumFromStart == parentCountPerf &&
                                                    r.AuditItemTypeId == directive.SmartCoreObjectType.ItemId &&
                                                    r.DirectiveId == directive.ItemId);
                if (wpr != null)
                {
                    Audit wp = openPubWorkPackages.GetItemById(wpr.AuditId);
                    //запись о выполнении блокируется найденым пакетом
                    sortNextRecords[i].BlockedByPackage = wp;
                    //последующие записи о выполнении так же должны быть заблокированы
                    for (int j = i - 1; j >= 0; j--)
                    {
                        //блокировать нужно все рабочие записи, или до первой записи,
                        //заблокированной другим рабочим пакетом
                        if (sortNextRecords[j].BlockedByPackage != null ||
                            sortNextRecords[j].Condition != ConditionState.Overdue)
                        {
                            break;
                        }
                        if (sortNextRecords[j].Parent == directive)
                        {
                            sortNextRecords[j].BlockedByPackage = wp;
                            Invoke(new Action <int, Color>(SetItemColor), new object[] { j, Color.FromArgb(Highlight.GrayLight.Color) });
                        }
                    }
                }
                Invoke(new Action <NextPerformance>(AddListViewItem), sortNextRecords[i]);
            }
            #endregion

            #region Добавление в список записей о произведенных выполнениях
            //и сравнение их с закрытыми рабочими пакетами
            closedWorkPackages.AddRange(allWorkPackagesIncludedTask.Where(wp => wp.Status == WorkPackageStatus.Closed));

            //LINQ запрос для сортировки записей по дате
            List <AbstractPerformanceRecord> sortLastRecords = (from record in lastRecords
                                                                orderby record.RecordDate descending
                                                                select record).ToList();
            ////////////////////////////////////////////

            for (int i = 0; i < sortLastRecords.Count(); i++)
            {
                if (backgroundWorker.CancellationPending)
                {
                    allWorkPackagesIncludedTask.Clear();
                    openPubWorkPackages.Clear();
                    closedWorkPackages.Clear();

                    e.Cancel = true;
                    return;
                }

                DirectiveRecord directiveRecord = (DirectiveRecord)sortLastRecords[i];
                Audit           workPackage     = closedWorkPackages.FirstOrDefault(wp => wp.ItemId == directiveRecord.DirectivePackageId);
                if (workPackage != null)
                {
                    Invoke(new Action <AbstractPerformanceRecord, Audit, MaintenanceCheckRecord>(AddListViewItem),
                           new object[] { sortLastRecords[i], workPackage, null });
                }
                else if (directiveRecord.MaintenanceCheckRecordId > 0)
                {
                    MaintenanceCheckRecord mcr =
                        GlobalObjects.CasEnvironment.NewLoader.GetObject <DirectiveRecordDTO, MaintenanceCheckRecord>(new Filter("ItemId", directiveRecord.MaintenanceCheckRecordId));

                    if (mcr != null)
                    {
                        mcr.ParentCheck = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <MaintenanceCheckDTO, MaintenanceCheck>(mcr.ParentId);
                    }

                    Invoke(new Action <AbstractPerformanceRecord, Audit, MaintenanceCheckRecord>(AddListViewItem),
                           new object[] { sortLastRecords[i], workPackage, mcr });
                }
                else
                {
                    Invoke(new Action <AbstractPerformanceRecord, Audit>(AddListViewItem),
                           new object[] { sortLastRecords[i], workPackage });
                }
            }
            #endregion

            allWorkPackagesIncludedTask.Clear();
            openPubWorkPackages.Clear();
            closedWorkPackages.Clear();

            backgroundWorker.ReportProgress(100);
        }
Esempio n. 18
0
        private ListViewItem GetListViewItem(MaintenanceCheck check)
        {
            ListViewItem listViewItem = new ListViewItem {
                Tag = check, Text = check.Name
            };

            if (check.Grouping)
            {
                MaintenanceNextPerformance     np   = check.NextPerformances.FirstOrDefault() as MaintenanceNextPerformance;
                MaintenanceProgramChangeRecord mpcr = np != null && np.PerformanceDate != null
                                                          ? _currentAircraft.MaintenanceProgramChangeRecords.
                                                      GetLastKnownRecord(Convert.ToDateTime(np.PerformanceDate))
                                                          : null;

                if (mpcr != null && mpcr.MSG >= MSG.MSG3)
                {
                    string lastPerformanceDate   = "N/A";
                    string lastPerformanceSource = "N/A";
                    string lastPerformaceGroup   = "N/A";
                    string lastCheckName         = "N/A";
                    string nextPerformanceDate   = "N/A";
                    string nextPerformanceSource = "N/A";
                    string nextPerformaceGroup   = "N/A";
                    string nextCheckName         = "N/A";
                    string remains = "N/A";

                    MaintenanceNextPerformance mnp = check.GetNextPergormanceGroupWhereCheckIsSenior();
                    if (mnp != null)
                    {
                        nextPerformanceDate   = UsefulMethods.NormalizeDate(Convert.ToDateTime(mnp.PerformanceDate));
                        nextPerformanceSource = mnp.PerformanceSource.ToString();
                        nextPerformaceGroup   = mnp.PerformanceGroupNum + "/" + mnp.PerformanceNum;
                        nextCheckName         = mnp.PerformanceGroup.GetGroupName();
                        remains = mnp.Remains.ToString();
                    }
                    if (check.LastPerformance != null)
                    {
                        MaintenanceCheckRecord mcr = _checkItems.GetLastCheckRecordWhereCheckIsSenior(check);
                        if (mcr != null)
                        {
                            lastPerformanceDate   = UsefulMethods.NormalizeDate(mcr.RecordDate);
                            lastPerformanceSource = mcr.OnLifelength.ToString();
                            lastPerformaceGroup   = mcr.NumGroup + "/" + mcr.PerformanceNum;
                            lastCheckName         =
                                _currentAircraft != null && _currentAircraft.MaintenanceProgramCheckNaming
                                        ? (!string.IsNullOrEmpty(mcr.ComplianceCheckName)
                                               ? mcr.ComplianceCheckName
                                               : check.Name)
                                        : check.Name;
                        }
                    }

                    listViewItem.SubItems.Add(lastPerformanceDate);
                    listViewItem.SubItems.Add(lastPerformanceSource);
                    listViewItem.SubItems.Add(lastPerformaceGroup);
                    listViewItem.SubItems.Add(lastCheckName);
                    listViewItem.SubItems.Add(nextPerformanceDate);
                    listViewItem.SubItems.Add(nextPerformanceSource);
                    listViewItem.SubItems.Add(nextPerformaceGroup);
                    listViewItem.SubItems.Add(nextCheckName);
                    listViewItem.SubItems.Add(remains);
                }
                else
                {
                    if (check.LastPerformance == null)
                    {
                        listViewItem.SubItems.Add("N/A");
                        listViewItem.SubItems.Add("N/A");
                        listViewItem.SubItems.Add("N/A");
                        listViewItem.SubItems.Add("N/A");
                        listViewItem.SubItems.Add(np != null && np.PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)np.PerformanceDate) : "N/A");
                        listViewItem.SubItems.Add(np != null ? np.PerformanceSource.ToString() : "N/A");
                        listViewItem.SubItems.Add(np != null ? np.PerformanceGroupNum + "/" + np.PerformanceNum : "N/A");
                        listViewItem.SubItems.Add(np != null ? np.PerformanceGroup.GetGroupName() : "N/A");
                        listViewItem.SubItems.Add(np != null ? np.Remains.ToString() : "N/A");
                    }
                    else
                    {
                        string lastCheckName =
                            _currentAircraft != null && _currentAircraft.MaintenanceProgramCheckNaming
                                    ? (!string.IsNullOrEmpty(check.LastPerformance.ComplianceCheckName)
                                           ? check.LastPerformance.ComplianceCheckName
                                           : check.Name)
                                    : check.Name;
                        listViewItem.SubItems.Add(UsefulMethods.NormalizeDate(check.LastPerformance.RecordDate));
                        listViewItem.SubItems.Add(check.LastPerformance.OnLifelength.ToString());
                        listViewItem.SubItems.Add(check.LastPerformance.NumGroup + "/" + check.LastPerformance.PerformanceNum);
                        listViewItem.SubItems.Add(lastCheckName);
                        listViewItem.SubItems.Add(np != null && np.PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)np.PerformanceDate) : "N/A");
                        listViewItem.SubItems.Add(np != null ? np.PerformanceSource.ToString() : "N/A");
                        listViewItem.SubItems.Add(np != null ? np.PerformanceGroupNum + "/" + np.PerformanceNum : "N/A");
                        listViewItem.SubItems.Add(np != null ? np.PerformanceGroup.GetGroupName() : "N/A");
                        listViewItem.SubItems.Add(np != null ? np.Remains.ToString() : "N/A");
                    }
                }
                if (np != null && np.Condition == ConditionState.Overdue)
                {
                    listViewItem.BackColor = Color.FromArgb(255, 170, 170);
                }
                else if (np != null && np.Condition == ConditionState.Notify)
                {
                    listViewItem.BackColor = Color.FromArgb(255, 255, 170);
                }
                else if (np == null || np.Condition == ConditionState.NotEstimated)
                {
                    listViewItem.BackColor = Color.FromArgb(170, 170, 255);
                }
            }
            else
            {
                NextPerformance np = check.NextPerformances.FirstOrDefault();
                if (check.LastPerformance == null)
                {
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add(np != null && np.PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)np.PerformanceDate) : "N/A");
                    listViewItem.SubItems.Add(np != null ? np.PerformanceSource.ToString() : "N/A");
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add(np != null ? np.Remains.ToString() : "N/A");
                }
                else
                {
                    listViewItem.SubItems.Add(UsefulMethods.NormalizeDate(check.LastPerformance.RecordDate));
                    listViewItem.SubItems.Add(check.LastPerformance.OnLifelength.ToString());
                    listViewItem.SubItems.Add(check.LastPerformance.NumGroup.ToString());
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add(np != null && np.PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)np.PerformanceDate) : "N/A");
                    listViewItem.SubItems.Add(np != null ? np.PerformanceSource.ToString() : "N/A");
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add("N/A");
                    listViewItem.SubItems.Add(np != null ? np.Remains.ToString() : "N/A");
                }
                if (np != null && np.Condition == ConditionState.Overdue)
                {
                    listViewItem.BackColor = Color.FromArgb(255, 170, 170);
                }
                else if (np != null && np.Condition == ConditionState.Notify)
                {
                    listViewItem.BackColor = Color.FromArgb(255, 255, 170);
                }
                else if (np == null || np.Condition == ConditionState.NotEstimated)
                {
                    listViewItem.BackColor = Color.FromArgb(170, 170, 255);
                }
            }


            listViewItem.Group = GetGroup(check);
            return(listViewItem);
        }
Esempio n. 19
0
        private void BackgroundWorkerRunWorkerLoadCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            dataGridViewItems.Rows.Clear();

            if (_workPackage == null)
            {
                return;
            }

            #region Чеки программы обслуживания и директивы программы обслуживания

            List <MaintenanceDirective> checkDirectives = new List <MaintenanceDirective>();

            foreach (MaintenanceCheck maintenanceCheck in _workPackage.MaintenanceChecks)
            {
                DataGridViewRow  row;
                DataGridViewCell discCell;
                DataGridViewCell taskCardCell;
                DataGridViewCell compntCell;

                if (_workPackage.Aircraft.MSG >= MSG.MSG3)
                {
                    MaintenanceCheckRecord mcr =
                        maintenanceCheck.PerformanceRecords.FirstOrDefault(pr => pr.DirectivePackageId == _workPackage.ItemId);
                    if (mcr != null)
                    {
                        row = new DataGridViewRow {
                            Tag = maintenanceCheck
                        };
                        discCell = new DataGridViewTextBoxCell
                        {
                            Value = string.IsNullOrEmpty(mcr.ComplianceCheckName)
                                     ? maintenanceCheck.Name
                                     : mcr.ComplianceCheckName
                        };
                        taskCardCell = new DataGridViewTextBoxCell {
                            Value = ""
                        };
                        compntCell = new DataGridViewCheckBoxCell {
                            Value = maintenanceCheck.PrintInWorkPackage
                        };
                    }
                    else
                    {
                        if (maintenanceCheck.Grouping)
                        {
                            MaintenanceNextPerformance mnp = maintenanceCheck.GetNextPergormanceGroupWhereCheckIsSenior();
                            if (mnp != null)
                            {
                                row = new DataGridViewRow {
                                    Tag = maintenanceCheck
                                };
                                discCell = new DataGridViewTextBoxCell {
                                    Value = mnp.PerformanceGroup.GetGroupName()
                                };
                                taskCardCell = new DataGridViewTextBoxCell {
                                    Value = ""
                                };
                                compntCell = new DataGridViewCheckBoxCell {
                                    Value = maintenanceCheck.PrintInWorkPackage
                                };
                            }
                            else
                            {
                                continue;
                            }
                        }
                        else
                        {
                            row = new DataGridViewRow {
                                Tag = maintenanceCheck
                            };
                            discCell = new DataGridViewTextBoxCell {
                                Value = maintenanceCheck.Name
                            };
                            taskCardCell = new DataGridViewTextBoxCell {
                                Value = ""
                            };
                            compntCell = new DataGridViewCheckBoxCell {
                                Value = maintenanceCheck.PrintInWorkPackage
                            };
                        }
                    }
                }
                else
                {
                    row = new DataGridViewRow {
                        Tag = maintenanceCheck
                    };
                    discCell = new DataGridViewTextBoxCell {
                        Value = maintenanceCheck.Name
                    };
                    taskCardCell = new DataGridViewTextBoxCell {
                        Value = ""
                    };
                    compntCell = new DataGridViewCheckBoxCell {
                        Value = maintenanceCheck.PrintInWorkPackage
                    };
                }

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });
                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);

                List <MaintenanceDirective> checkMpds =
                    (from record in _workPackage.MaintenanceCheckBindTaskRecords
                     where record.TaskType == SmartCoreType.MaintenanceDirective && record.CheckId == maintenanceCheck.ItemId
                     select record.Task as MaintenanceDirective)
                    .OrderBy(cm => cm.TaskNumberCheck)
                    .ToList();

                checkMpds.AddRange(maintenanceCheck.BindMpds
                                   .Where(bmpd => _workPackage.WorkPakageRecords
                                          .FirstOrDefault(r => r.WorkPackageItemType == SmartCoreType.MaintenanceDirective.ItemId &&
                                                          r.DirectiveId == bmpd.ItemId) != null));
                checkDirectives.AddRange(checkMpds);

                foreach (MaintenanceDirective checkMpd in checkMpds)
                {
                    //TODO:(Evgenii Babak) избавиться от кода
                    if (checkMpd.ItemRelations.Count == 0)
                    {
                        checkMpd.ItemRelations
                        .AddRange(_workPackage.ComponentDirectives.Where(bdd => bdd.ItemRelations.IsAllRelationWith(checkMpd)).SelectMany(bdd => bdd.ItemRelations));
                    }
                    DataGridViewRow checkMpdRow = new DataGridViewRow {
                        Tag = checkMpd
                    };
                    DataGridViewCell checkMpdDiscCell;
                    DataGridViewCell checkMpdTaskCardCell;
                    DataGridViewCell checkMpdCompntCell;

                    string checkMpdTaskCardCellValue;
                    Color  checkMpdTaskCardCellBackColor = Color.White;

                    if (string.IsNullOrEmpty(checkMpd.TaskCardNumber) && checkMpd.TaskCardNumberFile == null)
                    {
                        checkMpdTaskCardCellValue     = "Not set Task Card file.";
                        checkMpdTaskCardCellBackColor = Color.Red;
                    }
                    else if (!string.IsNullOrEmpty(checkMpd.TaskCardNumber) && checkMpd.TaskCardNumberFile == null)
                    {
                        checkMpdTaskCardCellValue =
                            $"Not set Task Card file. (Task Card No {checkMpd.TaskCardNumber}.)";
                        checkMpdTaskCardCellBackColor = Color.Red;
                    }
                    else if (string.IsNullOrEmpty(checkMpd.TaskCardNumber) && checkMpd.TaskCardNumberFile != null)
                    {
                        checkMpdTaskCardCellValue =
                            $"Not set Task Card name. (File name {checkMpd.TaskCardNumberFile.FileName}.)";
                        checkMpdTaskCardCellBackColor = Color.Red;
                    }
                    else
                    {
                        checkMpdTaskCardCellValue = checkMpd.TaskCardNumber;
                    }

                    if (checkMpd.ItemRelations.Count > 0)
                    {
                        checkMpdDiscCell = new DataGridViewTextBoxCell {
                            Value =
                                $"{maintenanceCheck.Name}--{checkMpd.TaskNumberCheck} for {checkMpd.ItemRelations.Count} components"
                        };
                        checkMpdTaskCardCell = new DataGridViewTextBoxCell
                        {
                            Value = checkMpdTaskCardCellValue,
                            Style = { BackColor = checkMpdTaskCardCellBackColor },
                        };
                        checkMpdCompntCell = new DataGridViewCheckBoxCell {
                            Value = checkMpd.PrintInWorkPackage
                        };

                        checkMpdRow.Cells.AddRange(new[] { checkMpdDiscCell, checkMpdTaskCardCell, checkMpdCompntCell });

                        checkMpdDiscCell.ReadOnly     = true;
                        checkMpdTaskCardCell.ReadOnly = true;
                    }
                    else
                    {
                        checkMpdDiscCell = new DataGridViewTextBoxCell {
                            Value = maintenanceCheck.Name + "--" + checkMpd.TaskNumberCheck
                        };
                        checkMpdTaskCardCell = new DataGridViewTextBoxCell
                        {
                            Value = checkMpdTaskCardCellValue,
                            Style = { BackColor = checkMpdTaskCardCellBackColor },
                        };
                        checkMpdCompntCell = new DataGridViewCheckBoxCell {
                            Value = checkMpd.PrintInWorkPackage
                        };

                        checkMpdRow.Cells.AddRange(new[] { checkMpdDiscCell, checkMpdTaskCardCell, checkMpdCompntCell });

                        checkMpdDiscCell.ReadOnly     = true;
                        checkMpdTaskCardCell.ReadOnly = true;
                    }

                    dataGridViewItems.Rows.Add(checkMpdRow);
                }
            }

            List <MaintenanceDirective> nonCheckMpds =
                _workPackage.MaintenanceDirectives.Where(md => checkDirectives.FirstOrDefault(dd => dd.ItemId == md.ItemId) == null)
                .OrderBy(md => md.TaskNumberCheck)
                .ToList();

            foreach (MaintenanceDirective item in nonCheckMpds)
            {
                string taskCardCellValue;
                Color  taskCardCellBackColor = Color.White;

                if (string.IsNullOrEmpty(item.TaskCardNumber) && item.TaskCardNumberFile == null)
                {
                    taskCardCellValue     = "Not set Task Card file.";
                    taskCardCellBackColor = Color.Red;
                }
                else if (!string.IsNullOrEmpty(item.TaskCardNumber) && item.TaskCardNumberFile == null)
                {
                    taskCardCellValue     = $"Not set Task Card file. (Task Card No {item.TaskCardNumber}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else if (string.IsNullOrEmpty(item.TaskCardNumber) && item.TaskCardNumberFile != null)
                {
                    taskCardCellValue     = $"Not set Task Card name. (File name {item.TaskCardNumberFile.FileName}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else
                {
                    taskCardCellValue = item.TaskCardNumber;
                }

                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };
                DataGridViewCell discCell = new DataGridViewTextBoxCell {
                    Value = item.TaskNumberCheck
                };
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell
                {
                    Value = taskCardCellValue,
                    Style = { BackColor = taskCardCellBackColor },
                };
                DataGridViewCell compntCell = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });
                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }

            #endregion

            #region Директивы летной годности

            foreach (Directive item in _workPackage.AdStatus)
            {
                string taskCardCellValue;
                Color  taskCardCellBackColor = Color.White;

                if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue     = "Not set Engineering Order file.";
                    taskCardCellBackColor = Color.Red;
                }
                else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else
                {
                    taskCardCellValue = item.EngineeringOrders;
                }

                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell     = new DataGridViewTextBoxCell();
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell
                {
                    Value = taskCardCellValue,
                    Style = { BackColor = taskCardCellBackColor },
                };
                DataGridViewCell compntCell = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };
                discCell.Value = "(AD)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph;

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }
            #endregion

            #region SB

            foreach (Directive item in _workPackage.SbStatus)
            {
                string taskCardCellValue;
                Color  taskCardCellBackColor = Color.White;

                if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue     = "Not set Engineering Order file.";
                    taskCardCellBackColor = Color.Red;
                }
                else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else
                {
                    taskCardCellValue = item.EngineeringOrders;
                }

                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell     = new DataGridViewTextBoxCell();
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell
                {
                    Value = taskCardCellValue,
                    Style = { BackColor = taskCardCellBackColor },
                };
                DataGridViewCell compntCell = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };
                discCell.Value = "(SB)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph;

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }

            #endregion

            #region EO

            foreach (Directive item in _workPackage.EoStatus)
            {
                string taskCardCellValue;
                Color  taskCardCellBackColor = Color.White;

                if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue     = "Not set Engineering Order file.";
                    taskCardCellBackColor = Color.Red;
                }
                else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else
                {
                    taskCardCellValue = item.EngineeringOrders;
                }

                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell     = new DataGridViewTextBoxCell();
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell
                {
                    Value = taskCardCellValue,
                    Style = { BackColor = taskCardCellBackColor },
                };
                DataGridViewCell compntCell = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };
                discCell.Value = "(EO)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph;

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }

            #endregion

            #region Повреждения

            foreach (Directive item in _workPackage.Damages)
            {
                string taskCardCellValue;
                Color  taskCardCellBackColor = Color.White;

                if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue     = "Not set Engineering Order file.";
                    taskCardCellBackColor = Color.Red;
                }
                else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else
                {
                    taskCardCellValue = item.EngineeringOrders;
                }

                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell     = new DataGridViewTextBoxCell();
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell
                {
                    Value = taskCardCellValue,
                    Style = { BackColor = taskCardCellBackColor },
                };
                DataGridViewCell compntCell = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };
                discCell.Value = "(DRI)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph;

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }
            #endregion

            #region OutOfPhaseItems

            foreach (Directive item in _workPackage.OutOfPhaseItems)
            {
                string taskCardCellValue;
                Color  taskCardCellBackColor = Color.White;

                if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue     = "Not set Engineering Order file.";
                    taskCardCellBackColor = Color.Red;
                }
                else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else
                {
                    taskCardCellValue = item.EngineeringOrders;
                }

                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell     = new DataGridViewTextBoxCell();
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell
                {
                    Value = taskCardCellValue,
                    Style = { BackColor = taskCardCellBackColor },
                };
                DataGridViewCell compntCell = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };
                discCell.Value = "(OP)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph;

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }
            #endregion

            #region Отложенные дефекты

            foreach (Directive item in _workPackage.DefferedItems)
            {
                string taskCardCellValue;
                Color  taskCardCellBackColor = Color.White;

                if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue     = "Not set Engineering Order file.";
                    taskCardCellBackColor = Color.Red;
                }
                else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null)
                {
                    taskCardCellValue =
                        $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)";
                    taskCardCellBackColor = Color.Red;
                }
                else
                {
                    taskCardCellValue = item.EngineeringOrders;
                }

                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell     = new DataGridViewTextBoxCell();
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell
                {
                    Value = taskCardCellValue,
                    Style = { BackColor = taskCardCellBackColor },
                };
                DataGridViewCell compntCell = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };
                discCell.Value = "(DI)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph;

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }
            #endregion

            #region Компоненты и задачи по компонентам

            var componentDirectives = _workPackage.ComponentDirectives.ToList();
            foreach (var item in _workPackage.Components)
            {
                List <ComponentDirective> dds =
                    componentDirectives.Where(dd => dd.ParentComponent != null &&
                                              dd.ParentComponent.ItemId == item.ItemId).ToList();

                foreach (var componentDirective in dds)
                {
                    componentDirectives.Remove(componentDirective);
                }

                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell     = new DataGridViewTextBoxCell();
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell();
                DataGridViewCell compntCell   = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };
                discCell.Value = "CCO:" + item.Description + " " + item.PartNumber + " " + item.SerialNumber;

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }
            foreach (ComponentDirective item in componentDirectives)
            {
                Component       d   = item.ParentComponent;
                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell     = new DataGridViewTextBoxCell();
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell();
                DataGridViewCell compntCell   = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };
                discCell.Value = "CCO:" + item.DirectiveType + " for " + d.Description + " " + d.PartNumber + " " + d.SerialNumber;

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }
            #endregion

            #region Нерутинные задачи

            foreach (NonRoutineJob item in _workPackage.NonRoutines)
            {
                DataGridViewRow row = new DataGridViewRow {
                    Tag = item
                };

                DataGridViewCell discCell = new DataGridViewTextBoxCell {
                    Value = "(Non-Routine)" + item.Title
                };
                DataGridViewCell taskCardCell = new DataGridViewTextBoxCell();
                DataGridViewCell compntCell   = new DataGridViewCheckBoxCell {
                    Value = item.PrintInWorkPackage
                };

                row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell });

                discCell.ReadOnly     = true;
                taskCardCell.ReadOnly = true;

                dataGridViewItems.Rows.Add(row);
            }
            #endregion
        }
Esempio n. 20
0
        /// <summary>
        /// ??????????? ??????? ? ??????? ??????
        /// </summary>
        /// <param name="grouping">?????????? ?????????</param>
        /// <param name="destinationDataSet">???????, ? ??????? ??????????? ???????</param>
        private void AddItemDataset(MaintenanceCheckRecordGroup grouping, OperationTimeDataSet destinationDataSet)
        {
            if (grouping == null)
            {
                return;
            }

            string checkName = "";
            string performanceSourceHours  = "";
            string performanceSourceCycles = "";
            string station             = "";
            string checkStartEndString = "";

            if (grouping.Records.Count > 0)
            {
                grouping.Sort();

                MaintenanceCheckRecord mcr = grouping.LastOrDefault();
                MaintenanceCheck       mc  = grouping.GetMaxIntervalCheck();

                if (mcr != null)
                {
                    checkName = _currentAircraft != null && _currentAircraft.MaintenanceProgramCheckNaming
                                                                                ? (!string.IsNullOrEmpty(grouping.First().ComplianceCheckName)
                                                                                           ? mcr.ComplianceCheckName
                                                                                           : mc.Name)
                                                                                : mc.Name;
                    performanceSourceHours  = mcr.OnLifelength.ToHoursMinutesFormat("");
                    performanceSourceCycles = mcr.OnLifelength.Cycles != null?mcr.OnLifelength.Cycles.ToString() : "";

                    if (mcr.DirectivePackage == null)
                    {
                        mcr.DirectivePackage = _workPackages != null
                                                                                          ? _workPackages.FirstOrDefault(wp => wp.ItemId == mcr.DirectivePackageId)
                                                                                          : null;
                    }
                    if (mcr.DirectivePackage != null)
                    {
                        if (mcr.DirectivePackage.Status == WorkPackageStatus.Published)
                        {
                            checkStartEndString  = mcr.DirectivePackage.PublishingDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString());
                            checkStartEndString += " - Present day";
                        }
                        if (mcr.DirectivePackage.Status == WorkPackageStatus.Closed)
                        {
                            checkStartEndString  = mcr.DirectivePackage.PublishingDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString());
                            checkStartEndString += " - " + mcr.DirectivePackage.ClosingDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString());
                        }
                        station = mcr.DirectivePackage.Station;
                    }
                    else
                    {
                        checkStartEndString = mcr.RecordDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString());
                        station             = "--";
                    }
                }
            }

            var sinceLastCCheckHours  = "--";
            var sinceLastCCheckCycles = "--";

            //TODO:???????????? ??????
            //if(_lastC?heckRecord != null &&
            //   _aircraftBaseDetails != null &&
            //   _aircraftBaseDetails.FirstOrDefault(bd => bd.BaseComponentType == BaseComponentType.Frame) != null)
            //{
            //    BaseComponent frame = _aircraftBaseDetails.First(bd => bd.BaseComponentType == BaseComponentType.Frame);
            //    Lifelength current = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnEndOfDay(frame, grouping.LastOrDefault() != null ? grouping.Last().RecordDate : DateTime.Today);
            //    Lifelength sinceLast =  current - _lastC?heckRecord.OnLifelength;
            //    sinceLastCCheckHours = sinceLast.TotalMinutes != null ? sinceLast.ToHoursMinutesFormat("") : "";
            //    sinceLastCCheckCycles = sinceLast.Cycles != null ? sinceLast.Cycles.ToString() : "";
            //}

            destinationDataSet.MaintenanceTable.AddMaintenanceTableRow(checkName,
                                                                       checkStartEndString,
                                                                       station,
                                                                       performanceSourceHours,
                                                                       performanceSourceCycles,
                                                                       sinceLastCCheckHours,
                                                                       sinceLastCCheckCycles);
        }
Esempio n. 21
0
        ///<summary>
        ///</summary>
        public void Save()
        {
            foreach (CompliancePDFItem pdFitem in flowLayoutPanelContainer.Controls)
            {
                pdFitem.ApplyChanges();

                MaintenanceCheckRecord lastPerformance;

                if (_isEdit == false)
                {
                    lastPerformance = new MaintenanceCheckRecord {
                        ParentCheck = pdFitem.Check
                    };
                    if (pdFitem.Check.Grouping)
                    {
                        MaintenanceNextPerformance mnp =
                            _performances.FirstOrDefault(p => p.Parent != null && p.Parent.ItemId == pdFitem.Check.ItemId);
                        lastPerformance.PerformanceNum = mnp != null ? mnp.PerformanceNum : _numGroup;
                    }
                    else
                    {
                        lastPerformance.PerformanceNum = _numGroup;
                    }
                    lastPerformance.NumGroup = _numGroup;
                    lastPerformance.CalculatedPerformanceSource =
                        lastPerformance.ParentCheck.Interval * lastPerformance.PerformanceNum;
                }
                else
                {
                    lastPerformance = pdFitem.Record;
                }

                lastPerformance.AttachedFile        = pdFitem.AttachedFile;
                lastPerformance.ComplianceCheckName = textBoxCheckName.Text.Trim();
                lastPerformance.RecordDate          = dateTimePicker1.Value;
                lastPerformance.OnLifelength        = lifelengthViewer_LastCompliance.Lifelength;
                lastPerformance.IsControlPoint      = checkBoxControlPoint.Checked;
                lastPerformance.Remarks             = textBox_Remarks.Text.Trim();

                try
                {
                    GlobalObjects.PerformanceCore.RegisterPerformance(pdFitem.Check, lastPerformance);

                    IEnumerable <DirectiveRecord> bindedDirectivesRecord = pdFitem.BindDirectivesRecords;
                    foreach (DirectiveRecord record in bindedDirectivesRecord)
                    {
                        if (record.ItemId > 0 && record.IsDeleted)
                        {
                            GlobalObjects.PerformanceCore.Delete(record);
                        }
                        else
                        {
                            record.MaintenanceCheckRecordId = lastPerformance.ItemId;
                            record.OnLifelength             = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(_currentAircraft, record.RecordDate);
                            record.Remarks = string.IsNullOrEmpty(lastPerformance.Remarks)
                                                 ? "This performance added by " + pdFitem.Check.Name + " on " +
                                             UsefulMethods.NormalizeDate(lastPerformance.RecordDate)
                                                 : lastPerformance.Remarks;

                            GlobalObjects.CasEnvironment.Manipulator.Save(record, false);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("Error while save performance for maintenance check", ex);

                    break;
                }
            }
        }
Esempio n. 22
0
        private void AddAircraftFlightInformation(ATLBDataSet dataSet, AircraftFlight aircraftFlight)
        {
            var aircraft             = GlobalObjects.AircraftsCore.GetAircraftById(_currentATLB.ParentAircraftId);
            var currentOperator      = GlobalObjects.CasEnvironment.Operators.First(o => o.ItemId == aircraft.OperatorId);
            var operatorLogotype     = currentOperator.LogoTypeWhite;
            var operatorAddress      = currentOperator.Address;
            var revision             = _termsProvider["Revision"].ToString();
            var caaRequirements      = _termsProvider["CAARequirements"].ToString();
            var pageNumber           = (_currentPageNumber++).ToString().PadLeft(5, '0');//todo проверить
            var reportFooterPrepared = new GlobalTermsProvider()["ReportFooterPrepared"].ToString();
            var reportFooterLink     = new GlobalTermsProvider()["ReportFooterLink"].ToString();
            var specialistCaptain    =
                aircraftFlight.GetSpecialistBySpecializationId(1);
            var specialistCopilot =
                aircraftFlight.GetSpecialistBySpecializationId(2);
            var specialistGroundEngineerAP =
                aircraftFlight.GetSpecialistBySpecializationId(3);
            var specialistGroundEngineerAVI =
                aircraftFlight.GetSpecialistBySpecializationId(4);
            var specialistLoadMaster =
                aircraftFlight.GetSpecialistBySpecializationId(5);
            var specialistQualityControl =
                aircraftFlight.GetSpecialistBySpecializationId(6);
            var captain                    = specialistCaptain == null ? "" : specialistCaptain.FirstName;
            var captainId                  = specialistCaptain == null ? "" : specialistCaptain.IdNo;
            var copilot                    = specialistCopilot == null ? "" : specialistCopilot.FirstName;
            var copilotId                  = specialistCopilot == null ? "" : specialistCopilot.IdNo;
            var groundEngineerAP           = specialistGroundEngineerAP == null ? "" : specialistGroundEngineerAP.FirstName;
            var groundEngineerApid         = specialistGroundEngineerAP == null ? "" : specialistGroundEngineerAP.IdNo;
            var groundEngineerAVI          = specialistGroundEngineerAVI == null ? "" : specialistGroundEngineerAVI.FirstName;
            var groundEngineerAviid        = specialistGroundEngineerAVI == null ? "" : specialistGroundEngineerAVI.IdNo;
            var loadMaster                 = specialistLoadMaster == null ? "" : specialistLoadMaster.FirstName;
            var loadMasterId               = specialistLoadMaster == null ? "" : specialistLoadMaster.IdNo;
            var qualityControl             = specialistQualityControl == null ? "" : specialistQualityControl.FirstName;
            var qualityControlId           = specialistQualityControl == null ? "" : specialistQualityControl.IdNo;
            var aircraftFlightNo           = aircraftFlight.FlightNumber.ToString();
            var aircraftFlightDate         = aircraftFlight.FlightDate.ToString(_termsProvider["DateFormat"].ToString());
            var stationFrom                = aircraftFlight.StationFromId.ShortName;
            var stationTo                  = aircraftFlight.StationToId.ShortName;
            var airborneTimeOut            = aircraftFlight.TimespanOutTime.ToString();     // UsefulMethods.TimeToString(aircraftFlight.OutTime);
            var airborneTimeIn             = aircraftFlight.TimespanInTime.ToString();      //UsefulMethods.TimeToString(aircraftFlight.InTime));
            var airborneTimeBlock          = aircraftFlight.BlockTime.ToString();
            var airborneTimeTakeOff        = aircraftFlight.TimespanTakeOffTime.ToString(); //UsefulMethods.TimeToString(aircraftFlight.TakeOffTime));
            var airborneTimeLDG            = aircraftFlight.TimespanLDGTime.ToString();     //UsefulMethods.TimeToString(aircraftFlight.LDGTime));
            var airborneTimeFlight         = aircraftFlight.FlightTime.ToString();          //UsefulMethods.TimeToString(aircraftFlight.FlightTime);
            var accumulatedTime            = "";                                            //todo
            var totalFlightTime            = "";                                            //aircraft.//todo
            var accumulatedLanding         = "";                                            //todo
            var totalFlightLanding         = "";                                            //todo
            var aircraftModel              = aircraft.Model.ToString();
            var aircraftRegistrationNumber = aircraft.RegistrationNumber;
            var aCheckLastExecutionD       = "";
            var aCheckLastExecutionH       = "";
            var aCheckNextDueD             = "";
            var aCheckNextDueH             = "";
            //  MaintenanceLimitation aCheckLimitation;// = GetCheck(Cas3MaintenanceTypeItem.Instance.ACheck);//GetCheck(MaintenanceCheckTypesCollection.Instance.ACheck);
            //if (aCheckLimitation != null)
            //{
            //    Main
            //    MaintenancePerformance aCheckLastPerformance = aCheckLimitation.LastPerformance as MaintenancePerformance;
            //    if (aCheckLastPerformance != null)
            //    {
            //        aCheckLastExecutionD = aCheckLastPerformance.RecordDate.ToString(termsProvider["DateFormat"].ToString());
            //        aCheckLastExecutionH = Math.Round(aCheckLastPerformance.Lifelength.Hours.TotalHours).ToString();
            //    }
            //    aCheckNextDueD = aircraft.ManufactureDate.AddTicks(aCheckLimitation.Next.Calendar.Ticks).ToString(termsProvider["DateFormat"].ToString());
            //    aCheckNextDueH = Math.Round(aCheckLimitation.Next.Hours.TotalHours).ToString();
            //}
            var aCheckLimitation = GetCheck(1 /*ACheck*/);

            if (aCheckLimitation != null)
            {
                MaintenanceCheckRecord aCheckLastPerformance = GetLastPerformanceForCheckType(1);
                if (aCheckLastPerformance != null)
                {
                    aCheckLastExecutionD = aCheckLastPerformance.RecordDate.ToString(_termsProvider["DateFormat"].ToString());
                    //    aCheckLastExecutionH = Math.Round(aCheckLastPerformance.Lifelength.Hours.TotalHours).ToString();
                }
                //aCheckNextDueD = aircraft.ManufactureDate.AddTicks(aCheckLimitation.Next.Calendar.Ticks).ToString(termsProvider["DateFormat"].ToString());
                //aCheckNextDueH = Math.Round(aCheckLimitation.Next.Hours.TotalHours).ToString();
            }
            var bCheckLastExecutionD = "";
            var bCheckLastExecutionH = "";
            var bCheckNextDueD       = "";
            var bCheckNextDueH       = "";
            var bCheckLimitation     = GetCheck(2 /*BCheck*/);

            if (bCheckLimitation != null)
            {
                MaintenanceCheckRecord bCheckLastPerformance = GetLastPerformanceForCheckType(2);
                if (bCheckLastPerformance != null)
                {
                    bCheckLastExecutionD = bCheckLastPerformance.RecordDate.ToString(_termsProvider["DateFormat"].ToString());
                    //    bCheckLastExecutionH = Math.Round(bCheckLastPerformance.Lifelength.Hours.TotalHours).ToString();
                }
                //bCheckNextDueD = aircraft.ManufactureDate.AddTicks(bCheckLimitation.Next.Calendar.Ticks).ToString(termsProvider["DateFormat"].ToString());
                //bCheckNextDueH = Math.Round(bCheckLimitation.Next.Hours.TotalHours).ToString();
            }
            var cCheckLastExecutionD = "";
            var cCheckLastExecutionH = "";
            var cCheckNextDueD       = "";
            var cCheckNextDueH       = "";
            var cCheckLimitation     = GetCheck(3 /*CCheck*/);

            if (cCheckLimitation != null)
            {
                MaintenanceCheckRecord cCheckLastPerformance = GetLastPerformanceForCheckType(3);
                if (cCheckLastPerformance != null)
                {
                    cCheckLastExecutionD = cCheckLastPerformance.RecordDate.ToString(_termsProvider["DateFormat"].ToString());
                    //    cCheckLastExecutionH = Math.Round(cCheckLastPerformance.Lifelength.Hours.TotalHours).ToString();
                }
                //cCheckNextDueD = aircraft.ManufactureDate.AddTicks(cCheckLimitation.Next.Calendar.Ticks).ToString(termsProvider["DateFormat"].ToString());
                //cCheckNextDueH = Math.Round(cCheckLimitation.Next.Hours.TotalHours).ToString();
            }
            var discrepancy1    = "";
            var discrepancy2    = "";
            var discrepancy3    = "";
            var discrepancy4    = "";
            var filledBy1       = "";
            var filledBy2       = "";
            var filledBy3       = "";
            var filledBy4       = "";
            var addNo1          = "";
            var addNo2          = "";
            var addNo3          = "";
            var addNo4          = "";
            var openClosePage1  = "";
            var openClosePage2  = "";
            var openClosePage3  = "";
            var openClosePage4  = "";
            var caDescription1  = "";
            var caDescription2  = "";
            var caDescription3  = "";
            var caDescription4  = "";
            var pnOn1           = "";
            var pnOn2           = "";
            var pnOn3           = "";
            var pnOn4           = "";
            var snOn1           = "";
            var snOn2           = "";
            var snOn3           = "";
            var snOn4           = "";
            var pnOff1          = "";
            var pnOff2          = "";
            var pnOff3          = "";
            var pnOff4          = "";
            var snOff1          = "";
            var snOff2          = "";
            var snOff3          = "";
            var snOff4          = "";
            var sta1            = "";
            var sta2            = "";
            var sta3            = "";
            var sta4            = "";
            var autorizationNo1 = "";
            var autorizationNo2 = "";
            var autorizationNo3 = "";
            var autorizationNo4 = "";
            var date1           = "";
            var date2           = "";
            var date3           = "";
            var date4           = "";

            if (aircraftFlight.Discrepancies.Count > 0)
            {
                FillDiscrepancyInformation(aircraftFlight.Discrepancies[0], out discrepancy1, out filledBy1, out addNo1, out openClosePage1, out caDescription1, out pnOn1, out snOn1, out pnOff1, out snOff1, out sta1, out autorizationNo1, out date1);
            }
            if (aircraftFlight.Discrepancies.Count > 1)
            {
                FillDiscrepancyInformation(aircraftFlight.Discrepancies[1], out discrepancy2, out filledBy2, out addNo2, out openClosePage2, out caDescription2, out pnOn2, out snOn2, out pnOff2, out snOff2, out sta2, out autorizationNo2, out date2);
            }
            if (aircraftFlight.Discrepancies.Count > 2)
            {
                FillDiscrepancyInformation(aircraftFlight.Discrepancies[2], out discrepancy3, out filledBy3, out addNo3, out openClosePage3, out caDescription3, out pnOn3, out snOn3, out pnOff3, out snOff3, out sta3, out autorizationNo3, out date3);
            }
            if (aircraftFlight.Discrepancies.Count > 3)
            {
                FillDiscrepancyInformation(aircraftFlight.Discrepancies[3], out discrepancy4, out filledBy4, out addNo4, out openClosePage4, out caDescription4, out pnOn4, out snOn4, out pnOff4, out snOff4, out sta4, out autorizationNo4, out date4);
            }
            var tank1Name         = "";
            var tank1RemainKg     = "";
            var tank1OnBoardKg    = "";
            var tank1CorrectionKg = "";
            var tank2Name         = "";
            var tank2RemainKg     = "";
            var tank2OnBoardKg    = "";
            var tank2CorrectionKg = "";
            var tank3Name         = "";
            var tank3RemainKg     = "";
            var tank3OnBoardKg    = "";
            var tank3CorrectionKg = "";
            var totalName         = aircraftFlight.FuelTankCollection.TotalFuel.Tank;
            var totalRemainKg     = aircraftFlight.FuelTankCollection.TotalFuel.Remaining.ToString();       //aircraftFlight.FuelTankCollection.TotalFuel.Remaining.ToString();
            var totalOnBoardKg    = aircraftFlight.FuelTankCollection.TotalFuel.OnBoard.ToString();         //aircraftFlight.FuelTankCollection.TotalFuel.OnBoard.ToString();
            var totalCorrectionKg = aircraftFlight.FuelTankCollection.TotalFuel.Correction.ToString();      //aircraftFlight.FuelTankCollection.TotalFuel.Correction.ToString();
            var calculateUpliftKg = "";
            var actualUpliftLit   = "";
            var discrepancy       = "";
            var density           = "";

            if (aircraftFlight.FuelTankCollection.Count > 0)
            {
                tank1Name         = aircraftFlight.FuelTankCollection[0].Tank;
                tank1RemainKg     = aircraftFlight.FuelTankCollection[0].Remaining.ToString();
                tank1OnBoardKg    = aircraftFlight.FuelTankCollection[0].OnBoard.ToString();
                tank1CorrectionKg = aircraftFlight.FuelTankCollection[0].Correction.ToString();
                calculateUpliftKg = aircraftFlight.FuelTankCollection[0].CalculateUplift.ToString();
                actualUpliftLit   = aircraftFlight.FuelTankCollection[0].ActualUpliftLit.ToString();
                discrepancy       = aircraftFlight.FuelTankCollection[0].Discrepancy.ToString();
                density           = aircraftFlight.FuelTankCollection[0].Density.ToString();
            }
            if (aircraftFlight.FuelTankCollection.Count > 1)
            {
                tank2Name         = aircraftFlight.FuelTankCollection[1].Tank;
                tank2RemainKg     = aircraftFlight.FuelTankCollection[1].Remaining.ToString();
                tank2OnBoardKg    = aircraftFlight.FuelTankCollection[1].OnBoard.ToString();
                tank2CorrectionKg = aircraftFlight.FuelTankCollection[1].Correction.ToString();
            }
            if (aircraftFlight.FuelTankCollection.Count > 2)
            {
                tank3Name         = aircraftFlight.FuelTankCollection[2].Tank;
                tank3RemainKg     = aircraftFlight.FuelTankCollection[2].Remaining.ToString();
                tank3OnBoardKg    = aircraftFlight.FuelTankCollection[2].OnBoard.ToString();
                tank3CorrectionKg = aircraftFlight.FuelTankCollection[2].Correction.ToString();
            }
            var added        = aircraftFlight.FluidsCondition.HydraulicFluidAdded.ToString();
            var onBoard      = aircraftFlight.FluidsCondition.HydraulicFluidOnBoard.ToString();
            var groundDeIce  = aircraftFlight.FluidsCondition.GroundDeIce ? "X" : "";
            var start        = aircraftFlight.FluidsCondition.AntiIcingStartTime.ToString();
            var end          = aircraftFlight.FluidsCondition.AntiIcingEndTime.ToString();   //UsefulMethods.TimeToString(aircraftFlight.FluidsCondition.AntiIcingEndTime);
            var fluidType    = aircraftFlight.FluidsCondition.AntiIcingFluidType;
            var aeaCode      = aircraftFlight.FluidsCondition.AEACode;
            var landingGear1 = "";
            var landingGear1TirePressure1 = "";
            var landingGear1TirePressure2 = "";
            var landingGear2 = "";
            var landingGear2TirePressure1 = "";
            var landingGear2TirePressure2 = "";
            var landingGear3 = "";
            var landingGear3TirePressure1 = "";
            var landingGear3TirePressure2 = "";

            if (aircraftFlight.LandingGearConditions.Count > 0)
            {
                //    landingGear1 = "";//UsefulMethods.GetLandingGearPositionName(aircraftFlight.LandingGearConditions[0].LandingGear);
                landingGear1 = aircraftFlight.LandingGearConditions[0].LandingGear.ToString();
                landingGear1TirePressure1 = aircraftFlight.LandingGearConditions[0].TirePressure1.ToString();
                landingGear1TirePressure2 = aircraftFlight.LandingGearConditions[0].TirePressure2.ToString();
            }
            if (aircraftFlight.LandingGearConditions.Count > 1)
            {
                //    landingGear2 = ""; //UsefulMethods.GetLandingGearPositionName(aircraftFlight.LandingGearConditions[1].LandingGear);
                landingGear2 = aircraftFlight.LandingGearConditions[1].LandingGear.ToString();
                landingGear2TirePressure1 = aircraftFlight.LandingGearConditions[1].TirePressure1.ToString();
                landingGear2TirePressure2 = aircraftFlight.LandingGearConditions[1].TirePressure2.ToString();
            }
            if (aircraftFlight.LandingGearConditions.Count > 2)
            {
                //     landingGear3 = ""; //UsefulMethods.GetLandingGearPositionName(aircraftFlight.LandingGearConditions[2].LandingGear);
                landingGear3 = aircraftFlight.LandingGearConditions[2].LandingGear.ToString();
                landingGear3TirePressure1 = aircraftFlight.LandingGearConditions[2].TirePressure1.ToString();
                landingGear3TirePressure2 = aircraftFlight.LandingGearConditions[2].TirePressure2.ToString();
            }
            var oilCSD1Name    = "";
            var oilCsd1Add     = "";
            var oilCsd1OnBoard = "";
            var oilCSD2Name    = "";
            var oilCsd2Add     = "";
            var oilCsd2OnBoard = "";
            var oilEng1Name    = "";
            var oilEng1Add     = "";
            var oilEng1OnBoard = "";
            var oilEng2Name    = "";
            var oilEng2Add     = "";
            var oilEng2OnBoard = "";
            var oilAPUName     = "";
            var oilAPUAdd      = "";
            var oilAPUOnBoard  = "";

            if (aircraftFlight.OilConditionCollection.Count > 0)
            {
                //oilCSD1Name = aircraftFlight.OilConditionCollection[0].DetailId;
                oilCsd1Add     = aircraftFlight.OilConditionCollection[0].OilAdded.ToString();
                oilCsd1OnBoard = aircraftFlight.OilConditionCollection[0].OnBoard.ToString();
            }
            if (aircraftFlight.OilConditionCollection.Count > 1)
            {
                //oilCSD2Name = aircraftFlight.OilConditionCollection[1].DetailId;
                oilCsd2Add     = aircraftFlight.OilConditionCollection[1].OilAdded.ToString();
                oilCsd2OnBoard = aircraftFlight.OilConditionCollection[1].OnBoard.ToString();
            }
            if (aircraftFlight.OilConditionCollection.Count > 2)
            {
                //oilEng1Name = aircraftFlight.OilConditionCollection[2].DetailId;
                oilEng1Add     = aircraftFlight.OilConditionCollection[2].OilAdded.ToString();
                oilEng1OnBoard = aircraftFlight.OilConditionCollection[2].OnBoard.ToString();
            }
            if (aircraftFlight.OilConditionCollection.Count > 3)
            {
                //oilEng2Name = aircraftFlight.OilConditionCollection[3].DetailId;
                oilEng2Add     = aircraftFlight.OilConditionCollection[3].OilAdded.ToString();
                oilEng2OnBoard = aircraftFlight.OilConditionCollection[3].OnBoard.ToString();
            }
            if (aircraftFlight.OilConditionCollection.Count > 4)
            {
                //oilAPUName = aircraftFlight.OilConditionCollection[4].DetailId;
                oilAPUAdd     = aircraftFlight.OilConditionCollection[4].OilAdded.ToString();
                oilAPUOnBoard = aircraftFlight.OilConditionCollection[4].OnBoard.ToString();
            }
            var pressAlt    = aircraftFlight.EnginesGeneralConditions.PressALT;
            var gmt         = UsefulMethods.TimeToString(aircraftFlight.EnginesGeneralConditions.TimeGMT);
            var grossWeight = aircraftFlight.EnginesGeneralConditions.GrossWeight.ToString();
            var ias         = aircraftFlight.EnginesGeneralConditions.IAS.ToString();
            var mach        = aircraftFlight.EnginesGeneralConditions.Mach.ToString();
            var tat         = aircraftFlight.EnginesGeneralConditions.TAT.ToString();
            var oat         = aircraftFlight.EnginesGeneralConditions.OAT.ToString();
            var releaseToServiceCheckPerformed = "";
            var releaseToServiceDate           = "";
            var releaseToServiceAuth           = "";

            if (aircraftFlight.CertificateOfReleaseToService != null)
            {
                releaseToServiceCheckPerformed = aircraftFlight.CertificateOfReleaseToService.CheckPerformed;
                releaseToServiceDate           = aircraftFlight.CertificateOfReleaseToService.RecordDate.ToString(_termsProvider["DateFormat"].ToString());
                if (aircraftFlight.CertificateOfReleaseToService.AuthorizationB1 != null)
                {
                    releaseToServiceAuth = aircraftFlight.CertificateOfReleaseToService.AuthorizationB1.ToString();
                }
                if (aircraftFlight.CertificateOfReleaseToService.AuthorizationB2 != null)
                {
                    releaseToServiceAuth = aircraftFlight.CertificateOfReleaseToService.AuthorizationB2.ToString();
                }
            }
            var engine1         = "";
            var engine2         = "";
            var epr1            = "";
            var epr2            = "";
            var n11             = "";
            var n12             = "";
            var egt1            = "";
            var egt2            = "";
            var n21             = "";
            var n22             = "";
            var oilTemperature1 = "";
            var oilTemperature2 = "";
            var oilPressure1    = "";
            var oilPressure2    = "";
            var fuelFlow1       = "";
            var fuelFlow2       = "";
            var fuelBnKg1       = "";
            var fuelBnKg2       = "";

            if (aircraftFlight.EngineConditionCollection.Count > 0)
            {
                engine1         = "Engine " + aircraftFlight.EngineConditionCollection[0].Engine.PositionNumber;
                epr1            = aircraftFlight.EngineConditionCollection[0].ERP.ToString();
                n11             = aircraftFlight.EngineConditionCollection[0].N1.ToString();
                egt1            = aircraftFlight.EngineConditionCollection[0].EGT.ToString();
                n21             = aircraftFlight.EngineConditionCollection[0].N2.ToString();
                oilTemperature1 = aircraftFlight.EngineConditionCollection[0].OilTemperature.ToString();
                oilPressure1    = aircraftFlight.EngineConditionCollection[0].OilPressure.ToString();
                fuelFlow1       = aircraftFlight.EngineConditionCollection[0].FuelFlow.ToString();
                fuelBnKg1       = aircraftFlight.EngineConditionCollection[0].FuelBurn.ToString();
            }
            if (aircraftFlight.EngineConditionCollection.Count > 1)
            {
                engine2         = "Engine " + aircraftFlight.EngineConditionCollection[1].Engine.PositionNumber;
                epr2            = aircraftFlight.EngineConditionCollection[1].ERP.ToString();
                n12             = aircraftFlight.EngineConditionCollection[1].N1.ToString();
                egt2            = aircraftFlight.EngineConditionCollection[1].EGT.ToString();
                n22             = aircraftFlight.EngineConditionCollection[1].N2.ToString();
                oilTemperature2 = aircraftFlight.EngineConditionCollection[1].OilTemperature.ToString();
                oilPressure2    = aircraftFlight.EngineConditionCollection[1].OilPressure.ToString();
                fuelFlow2       = aircraftFlight.EngineConditionCollection[1].FuelFlow.ToString();
                fuelBnKg2       = aircraftFlight.EngineConditionCollection[1].FuelBurn.ToString();
            }
            dataSet.AircraftFlightTable.AddAircraftFlightTableRow(operatorLogotype, operatorAddress, revision,
                                                                  caaRequirements, pageNumber, reportFooterPrepared,
                                                                  reportFooterLink, captain, captainId, copilot,
                                                                  copilotId,
                                                                  groundEngineerAP, groundEngineerApid,
                                                                  groundEngineerAVI, groundEngineerAviid, loadMaster,
                                                                  loadMasterId, qualityControl, qualityControlId,
                                                                  aircraftFlightNo, aircraftFlightDate, stationFrom,
                                                                  stationTo, airborneTimeOut, airborneTimeIn,
                                                                  airborneTimeBlock, airborneTimeTakeOff,
                                                                  airborneTimeLDG, airborneTimeFlight,
                                                                  accumulatedTime, totalFlightTime,
                                                                  accumulatedLanding, totalFlightLanding,
                                                                  aircraftModel, aircraftRegistrationNumber,
                                                                  aCheckLastExecutionD, aCheckLastExecutionH,
                                                                  aCheckNextDueD, aCheckNextDueH,
                                                                  bCheckLastExecutionD, bCheckLastExecutionH,
                                                                  bCheckNextDueD, bCheckNextDueH,
                                                                  cCheckLastExecutionD, cCheckLastExecutionH,
                                                                  cCheckNextDueD, cCheckNextDueH, discrepancy1,
                                                                  discrepancy2, discrepancy3, discrepancy4, filledBy1,
                                                                  filledBy2, filledBy3, filledBy4, addNo1, addNo2,
                                                                  addNo3, addNo4, openClosePage1, openClosePage2,
                                                                  openClosePage3, openClosePage4, caDescription1,
                                                                  caDescription2, caDescription3, caDescription4, pnOn1,
                                                                  pnOn2, pnOn3,
                                                                  pnOn4, snOn1, snOn2, snOn3, snOn4, pnOff1,
                                                                  pnOff2, pnOff3, pnOff4, snOff1, snOff2, snOff3,
                                                                  snOff4, sta1, sta2, sta3, sta4, autorizationNo1,
                                                                  autorizationNo2, autorizationNo3, autorizationNo4,
                                                                  date1, date2, date3, date4, tank1Name, tank1RemainKg,
                                                                  tank1OnBoardKg, tank1CorrectionKg, tank2Name,
                                                                  tank2RemainKg, tank2OnBoardKg, tank2CorrectionKg,
                                                                  tank3Name, tank3RemainKg, tank3OnBoardKg,
                                                                  tank3CorrectionKg, totalName, totalRemainKg,
                                                                  totalOnBoardKg, totalCorrectionKg, calculateUpliftKg,
                                                                  actualUpliftLit, discrepancy, density, added, onBoard,
                                                                  groundDeIce, start, end, fluidType, aeaCode,
                                                                  landingGear1, landingGear1TirePressure1,
                                                                  landingGear1TirePressure2, landingGear2,
                                                                  landingGear2TirePressure1, landingGear2TirePressure2,
                                                                  landingGear3, landingGear3TirePressure1,
                                                                  landingGear3TirePressure2,
                                                                  oilCSD1Name, oilCsd1Add, oilCsd1OnBoard, oilCSD2Name,
                                                                  oilCsd2Add, oilCsd2OnBoard, oilEng1Name, oilEng1Add,
                                                                  oilEng1OnBoard, oilEng2Name, oilEng2Add,
                                                                  oilEng2OnBoard, oilAPUName, oilAPUAdd, oilAPUOnBoard,
                                                                  pressAlt,
                                                                  gmt, grossWeight, ias, mach, tat, oat,
                                                                  releaseToServiceCheckPerformed, releaseToServiceDate,
                                                                  releaseToServiceAuth, engine1,
                                                                  engine2, epr1, epr2, n11, n12, egt1, egt2, n21,
                                                                  n22, oilTemperature1, oilTemperature2, oilPressure1,
                                                                  oilPressure2, fuelFlow1, fuelFlow2, fuelBnKg1,
                                                                  fuelBnKg2, _ATASpec);
            if (aircraftFlight.Discrepancies.Count > 4)
            {
                AddAdditionalAircraftFlightTableRow(dataSet, aircraftFlight, 4);
            }
        }