示例#1
0
        private void ButtonDeleteClick(object sender, EventArgs e)
        {
            if (listViewBindedTasks.SelectedItems.Count == 0)
            {
                return;
            }

            //Коллекция элементов которые нужно добавить в элемента управления содержащий список всех задач
            var itemsToInsert    = new CommonCollection <BaseEntityObject>();
            var detailDirectives = listViewBindedTasks.SelectedItems.OfType <ComponentDirective>().ToList();

            foreach (var selectedItem in detailDirectives)
            {
                try
                {
                    //Если задача по компоненту была сохранена в бд , то добавляем в список удаляемых элементов
                    if (selectedItem.ItemId > 0)
                    {
                        itemsToInsert.Add(selectedItem);
                        _bindedItemsToRemove.Add(selectedItem);
                    }

                    //Удаление задачи по компоненту  из коллекции содержащей все связаные задачи
                    _bindedItems.Remove(selectedItem);

                    //Удаление задачи по  компоненту из элемента управления содержащего список всех привязаных задач
                    listViewBindedTasks.RemoveItem(selectedItem);

                    //если в коллекции содержащей все связные задачи не содержится задач по компоненту,
                    //которые принадлежат тому же компоненту что и текущая задача
                    //требуется удалить компонент из коллекции содержащей все связные задачи
                    if (_bindedItems.OfType <ComponentDirective>().All(x => x.ParentComponent.ItemId != selectedItem.ParentComponent.ItemId))
                    {
                        _bindedItems.Remove(selectedItem.ParentComponent);
                        //Удаление компонента из элемента управления содержащего список всех привязаных задач
                        listViewBindedTasks.RemoveItem(selectedItem.ParentComponent);
                    }

                    if (_newBindedItems.ContainsKey(selectedItem.ParentComponent))
                    {
                        //Удаление задачи по компоненту из коллекции новых привязанных зачач по компоненту
                        _newBindedItems[selectedItem.ParentComponent].Remove(selectedItem);
                        //Если среди новых привязанных задач по компоненту не содержатся задачи по компонентам,
                        //которые принадлежат тому же компоненту что и текущая задача
                        //требуется удалить компонент из словаря
                        if (_newBindedItems[selectedItem.ParentComponent].Count == 0)
                        {
                            _newBindedItems.Remove(selectedItem.ParentComponent);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("Error while delete bind task record", ex);
                }
            }

            listViewTasksForSelect.InsertItems(itemsToInsert);
        }
示例#2
0
        private void ButtonDeleteClick(object sender, EventArgs e)
        {
            CommonCollection <Hangar> stores = new CommonCollection <Hangar>();

            foreach (ReferenceStatusImageLinkLabel item in _controlItems)
            {
                stores.Add((Hangar)item.Tag);
            }
            CommonDeletingForm cdf = new CommonDeletingForm(typeof(Hangar), stores);

            if (cdf.ShowDialog() == DialogResult.OK)
            {
                if (cdf.DeletedObjects.Count == 0)
                {
                    return;
                }

                foreach (BaseEntityObject o in cdf.DeletedObjects)
                {
                    Hangar s = o as Hangar;
                    if (s != null)
                    {
                        _itemsollection.Remove(s);
                    }
                }
                FillUiElementsFromCollection();
            }
        }
示例#3
0
        private void buttonDelete_Click(object sender, EventArgs e)
        {
            if (workPackageEmployeeListView2.SelectedItems.Count == 0)
            {
                return;
            }

            foreach (var selectedItem in workPackageEmployeeListView2.SelectedItems)
            {
                try
                {
                    var wpSpecialist = _workPackageSpecialists.First(s => s.SpecialistId == selectedItem.ItemId);
                    if (wpSpecialist != null)
                    {
                        GlobalObjects.CasEnvironment.NewKeeper.Delete(wpSpecialist);
                    }

                    _wpSpecialists.Remove(selectedItem);
                    workPackageEmployeeListView2.SetItemsArray(_wpSpecialists.ToArray());
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("Error while save bind task record", ex);
                }
            }
        }
示例#4
0
 private void ButtonDelete_Click(object sender, EventArgs e)
 {
     if (_tocheckListView.SelectedItems.Count > 0)
     {
         foreach (var item in _tocheckListView.SelectedItems.ToArray())
         {
             _updateChecks.Remove(item);
             _addedChecks.Add(item);
         }
     }
 }
示例#5
0
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            pelSpec.Clear();
            specialists.Clear();

            var records = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <AuditPelRecordDTO, AuditPelRecord>(new Filter("AuditId", _auditId));

            _audit = GlobalObjects.CaaEnvironment.NewLoader.GetObjectById <CAAAuditDTO, CAAAudit>(_auditId);

            specialists.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAASpecialistDTO, Specialist>(new Filter("OperatorId", new [] { _audit.OperatorId, -1, _operatorId }.Distinct()), loadChild: true));

            pelSpec.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <PelSpecialistDTO, PelSpecialist>(new Filter("AuditId", _auditId)));

            foreach (var specialist in specialists)
            {
                specialist.Operator = GlobalObjects.CaaEnvironment.AllOperators.FirstOrDefault(i => i.ItemId == specialist.OperatorId) ?? AllOperators.Unknown;
            }

            foreach (var pel in pelSpec)
            {
                pel.Specialist = specialists.FirstOrDefault(i => i.ItemId == pel.SpecialistId);
            }


            foreach (var rec in records)
            {
                var item = _addedChecks.FirstOrDefault(i => i.ItemId == rec.CheckListId);
                if (item == null)
                {
                    continue;
                }

                rec.CheckList = item;
                rec.Auditor   = pelSpec.FirstOrDefault(i => i.ItemId == rec.AuditorId)?.Specialist ?? Specialist.Unknown;
                rec.Auditee   = pelSpec.FirstOrDefault(i => i.ItemId == rec.AuditeeId)?.Specialist ?? Specialist.Unknown;
                _addedChecks.Remove(item);
                _updateChecks.Add(rec);
            }
        }
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            if (_currentDirectivePackage == null)
            {
                e.Cancel = true;
                return;
            }

            if (_itemsForSelect == null)
            {
                _itemsForSelect = new CommonCollection <BaseEntityObject>();
            }
            _itemsForSelect.Clear();

            _animatedThreadWorker.ReportProgress(0, "load binded tasks");

            try
            {
                _itemsForSelect.AddRange(GlobalObjects.DirectiveCore.GetDirectivesByDirectiveType(DirectiveType.AirworthenessDirectives.ItemId).ToArray());
                _itemsForSelect.AddRange(GlobalObjects.ComponentCore.GetComponents().ToArray());
                _itemsForSelect.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <MaintenanceDirectiveDTO, MaintenanceDirective>().ToArray());
                _itemsForSelect.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <MaintenanceCheckDTO, MaintenanceCheck>().ToArray());
                _itemsForSelect.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <NonRoutineJobDTO, NonRoutineJob>().ToArray());

                foreach (BaseDirectivePackageRecord pr in _currentDirectivePackage.PackageRecords.OfType <BaseDirectivePackageRecord>())
                {
                    _itemsForSelect.Remove(_itemsForSelect.FirstOrDefault(i => i.SmartCoreObjectType == pr.PackageItemType && i.ItemId == pr.DirectiveId));
                }
                //Определение списка привязанных задач и компонентов
            }
            catch (Exception ex)
            {
                Program.Provider.Logger.Log("Error while load Items For Select for Directive Package Form", ex);
            }

            if (_animatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            _animatedThreadWorker.ReportProgress(75, "calculate directives for select");

            if (_animatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            _animatedThreadWorker.ReportProgress(100, "binding complete");
        }
示例#7
0
        private void ButtonDelete_Click(object sender, EventArgs e)
        {
            if (_tocheckRevisionListView.SelectedItems.Count > 0)
            {
                foreach (var item in _tocheckRevisionListView.SelectedItems.ToArray())
                {
                    GlobalObjects.CaaEnvironment.NewKeeper.Delete(item);
                    _updateChecks.Remove(item);
                }

                _fromcheckRevisionListView.SetItemsArray(_addedChecks.ToArray());
                _tocheckRevisionListView.SetItemsArray(_updateChecks.ToArray());
            }
        }
示例#8
0
        private void ButtonAdd_Click(object sender, EventArgs e)
        {
            if (_fromcheckListView.SelectedItems.Count > 0)
            {
                foreach (var item in _fromcheckListView.SelectedItems.ToArray())
                {
                    _updateChecks.Add(item);
                    _addedChecks.Remove(item);

                    GlobalObjects.CaaEnvironment.NewKeeper.Save(new CheckListRevisionRecord
                    {
                        CheckListId = item.ItemId,
                        ParentId    = _parent.ItemId
                    });
                }

                _fromcheckListView.SetItemsArray(_addedChecks.ToArray());
                _tocheckListView.SetItemsArray(_updateChecks.ToArray());
            }
        }
示例#9
0
        private void ButtonDelete_Click(object sender, EventArgs e)
        {
            if (_tocheckRevisionListView.SelectedItems.Count > 0)
            {
                foreach (var item in _tocheckRevisionListView.SelectedItems.ToArray())
                {
                    item.Role = PELRole.Unknown;
                    item.PELResponsibilities = PELResponsibilities.Unknown;
                    item.PELPosition         = PELPosition.Unknown;

                    GlobalObjects.CaaEnvironment.NewKeeper.Delete(item);

                    _updateChecks.Remove(item);
                    _addedChecks.Add(item);
                }

                _fromcheckRevisionListView.SetItemsArray(_addedChecks.ToArray());
                _tocheckRevisionListView.SetItemsArray(_updateChecks.ToArray());
            }
        }
示例#10
0
        private void ButtonDelete_Click(object sender, EventArgs e)
        {
            if (_tocheckListView.SelectedItems.Count > 0)
            {
                foreach (var item in _tocheckListView.SelectedItems.ToArray())
                {
                    _updateChecks.Remove(item);
                    if (item.RevisionStatus == RevisionCheckType.New)
                    {
                        GlobalObjects.CaaEnvironment.NewKeeper.Delete(item, true);
                    }
                    else
                    {
                        _addedChecks.Add(item);
                    }
                }

                GlobalObjects.CaaEnvironment.NewLoader.Execute(
                    $"delete from  dbo.CheckListRevisionRecord where ParentId = {_parent.ItemId} and CheckListId in ({string.Join(",",_tocheckListView.SelectedItems.Select(i => i.ItemId))})");

                _fromcheckListView.SetItemsArray(_addedChecks.ToArray());
                _tocheckListView.SetItemsArray(_updateChecks.ToArray());
            }
        }
示例#11
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            var initialZeroMaintenanceDirectives = new CommonCollection <MaintenanceDirective>();
            var initialMaintenanceDirectives     = new CommonCollection <MaintenanceDirective>();

            _result.Clear();
            _initial.Clear();
            _groupLifelengths.Clear();
            _groupLifelengthsForZeroCheck.Clear();

            if (!_isFirstLoad)
            {
                AnimatedThreadWorker.ReportProgress(0, "load checks");

                var checks = GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <MTOPCheckDTO, MTOPCheck>(new Filter("ParentAircraftId", CurrentAircraft.ItemId), true).ToList();

                foreach (var check in checks)
                {
                    foreach (var record in check.PerformanceRecords)
                    {
                        record.Parent = check;
                    }
                }

                if (AnimatedThreadWorker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }

                AnimatedThreadWorker.ReportProgress(10, "load MPDs");

                initialMaintenanceDirectives.AddRange(GlobalObjects.MaintenanceCore.GetMaintenanceDirectives(CurrentAircraft));

                var bindedItemsDict = GlobalObjects.BindedItemsCore.GetBindedItemsFor(CurrentAircraft.ItemId,
                                                                                      initialMaintenanceDirectives.Where(m => m.WorkItemsRelationType == WorkItemsRelationType.CalculationDepend));

                CalculateMaintenanceDirectives(initialMaintenanceDirectives.ToList(), bindedItemsDict);

                if (AnimatedThreadWorker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }


                AnimatedThreadWorker.ReportProgress(50, "calculation");


                if (checks.Count > 0)
                {
                    //Берем утилизацию с Frame
                    var frame = GlobalObjects.CasEnvironment.BaseComponents.FirstOrDefault(i =>
                                                                                           i.ParentAircraftId == CurrentAircraft.ItemId && Equals(i.BaseComponentType, BaseComponentType.Frame));
                    var avg = _currentForecast.ForecastDatas[0].AverageUtilization;

                    var lastCompliance = checks.SelectMany(i => i.PerformanceRecords).OrderByDescending(i => i.RecordDate)
                                         .FirstOrDefault();

                    GlobalObjects.MTOPCalculator.CalculateMtopChecks(checks, avg);

                    _groupLifelengths = GlobalObjects.MTOPCalculator.CalculateGroupNew(checks.Where(i => !i.Thresh.IsNullOrZero() && !i.IsZeroPhase).ToList());

                    GlobalObjects.MTOPCalculator.CalculateNextPerformance(checks.Where(i => !i.IsZeroPhase).ToList(),
                                                                          frame.StartDate, _groupLifelengths, CurrentAircraft, avg, lastCompliance);

                    GlobalObjects.MTOPCalculator.CalculatePhaseWithPerformance(initialMaintenanceDirectives, checks.Where(i => !i.Thresh.IsNullOrZero() && !i.IsZeroPhase).ToList(), avg, _currentForecast.ForecastDatas[0].LowerLimit, _currentForecast.ForecastDatas[0].ForecastDate);


                    var maintenanceZeroChecks = checks.Where(i => i.IsZeroPhase).ToList();

                    var lowerZeroCheck = maintenanceZeroChecks.Where(i => !i.Thresh.IsNullOrZero()).OrderBy(i => i.Thresh)
                                         .FirstOrDefault();
                    if (lowerZeroCheck != null)
                    {
                        GlobalObjects.MTOPCalculator.CalculateMtopChecks(maintenanceZeroChecks, avg);

                        _groupLifelengthsForZeroCheck = GlobalObjects.MTOPCalculator.CalculateGroupNew(checks.Where(i => !i.Thresh.IsNullOrZero() && i.IsZeroPhase).ToList());

                        GlobalObjects.MTOPCalculator.CalculateNextPerformance(maintenanceZeroChecks, frame.StartDate,
                                                                              _groupLifelengthsForZeroCheck, CurrentAircraft, avg, lastCompliance);

                        initialZeroMaintenanceDirectives.AddRange(initialMaintenanceDirectives
                                                                  .Where(i => i.MTOPPhase?.FirstPhase == 0).ToArray());

                        GlobalObjects.MTOPCalculator.CalculatePhaseWithPerformance(initialZeroMaintenanceDirectives, maintenanceZeroChecks, avg, _currentForecast.ForecastDatas[0].LowerLimit, _currentForecast.ForecastDatas[0].ForecastDate, true);
                    }

                    foreach (var d in initialZeroMaintenanceDirectives)
                    {
                        initialMaintenanceDirectives.Remove(d);
                    }


                    _initial.AddRange(initialMaintenanceDirectives.SelectMany(i => i.MtopNextPerformances));
                    _initial.AddRange(initialZeroMaintenanceDirectives.SelectMany(i => i.MtopNextPerformances));
                }

                #region Фильтрация директив

                AnimatedThreadWorker.ReportProgress(75, "filter directives");

                FilterItems(_initial, _result);

                if (AnimatedThreadWorker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
                #endregion

                #region Load WP

                AnimatedThreadWorker.ReportProgress(75, "filter Work Packages");

                if (AnimatedThreadWorker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }

                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));
                //сбор всех записей рабочих пакетов для удобства фильтрации
                List <WorkPackageRecord> openWPRecords = new List <WorkPackageRecord>();
                foreach (WorkPackage openWorkPackage in _openPubWorkPackages)
                {
                    openWPRecords.AddRange(openWorkPackage.WorkPakageRecords);
                }


                #endregion

                #region Загрузка Котировочных ордеров

                AnimatedThreadWorker.ReportProgress(95, "Load Quotations");

                //загрузка рабочих пакетов для определения
                //перекрытых ими выполнений задач
                if (_openPubQuotations == null)
                {
                    _openPubQuotations = new CommonCollection <RequestForQuotation>();
                }

                BaseEntityObject parent = CurrentAircraft ?? (BaseEntityObject)CurrentOperator;
                _openPubQuotations.Clear();
                _openPubQuotations.AddRange(GlobalObjects.PurchaseCore.GetRequestForQuotation(parent, new[] { WorkPackageStatus.Opened, WorkPackageStatus.Published }));

                if (AnimatedThreadWorker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
                #endregion

                AnimatedThreadWorker.ReportProgress(100, "Completed");
            }
        }
示例#12
0
文件: MTOPScreen.cs 项目: jecus/Cas
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _maintenanceChecks.Clear();
            _maintenanceZeroChecks.Clear();
            _groupLifelengths.Clear();
            _groupLifelengthsForZeroCheck.Clear();
            _initialMaintenanceDirectives.Clear();
            _initialZeroMaintenanceDirectives.Clear();

            AnimatedThreadWorker.ReportProgress(0, "load records");

            #region Загрузка

            try
            {
                var checks =
                    GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <MTOPCheckDTO, MTOPCheck>(
                        new Filter("ParentAircraftId", CurrentAircraft.ItemId), true, true);

                _maintenanceChecks.AddRange(checks.Where(i => !i.IsDeleted));
                _maintenanceChecksDeleted.AddRange(checks.Where(i => i.IsDeleted));

                var baseComponents      = GlobalObjects.ComponentCore.GetAicraftBaseComponents(CurrentAircraft.ItemId);
                var components          = GlobalObjects.ComponentCore.GetComponents(baseComponents.ToList());
                var componentDirectives = components.SelectMany(i => i.ComponentDirectives);

                var mpds = GlobalObjects.MaintenanceCore.GetMaintenanceDirectives(CurrentAircraft);
                foreach (var componentDirective in componentDirectives)
                {
                    foreach (var items in componentDirective.ItemRelations.Where(i =>
                                                                                 i.FirtsItemTypeId == SmartCoreType.MaintenanceDirective.ItemId ||
                                                                                 i.SecondItemTypeId == SmartCoreType.MaintenanceDirective.ItemId))
                    {
                        var id = componentDirective.IsFirst == true ? items.SecondItemId : items.FirstItemId;
                        componentDirective.MaintenanceDirective = mpds.FirstOrDefault(i => i.ItemId == id);
                    }
                }

                _initialMaintenanceDirectives.AddRange(mpds);
                _initialMaintenanceDirectives.AddRange(GlobalObjects.DirectiveCore.GetDirectives(CurrentAircraft, DirectiveType.All).ToList());
                _initialMaintenanceDirectives.AddRange(componentDirectives);


                var bindedItemsDict = GlobalObjects.BindedItemsCore.GetBindedItemsFor(CurrentAircraft.ItemId,
                                                                                      _initialMaintenanceDirectives.Where(m => m is MaintenanceDirective)
                                                                                      .Cast <MaintenanceDirective>().Where(m =>
                                                                                                                           m.WorkItemsRelationType == WorkItemsRelationType.CalculationDepend));

                CalculateMaintenanceDirectives(_initialMaintenanceDirectives, bindedItemsDict);
            }
            catch (Exception exception)
            {
                Program.Provider.Logger.Log("Error while load records", exception);
            }

            if (AnimatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            #endregion

            AnimatedThreadWorker.ReportProgress(50, "Calculate MTOP");

            #region  асчет

            foreach (var check in _maintenanceChecks)
            {
                foreach (var record in check.PerformanceRecords)
                {
                    record.Parent = check;
                }
            }

            foreach (var check in _maintenanceChecksDeleted)
            {
                foreach (var record in check.PerformanceRecords)
                {
                    record.Parent = check;
                }
            }

            if (_maintenanceChecks.Count > 0)
            {
                //Берем утилизацию с Frame
                var frame = GlobalObjects.CasEnvironment.BaseComponents.FirstOrDefault(i =>
                                                                                       i.ParentAircraftId == CurrentAircraft.ItemId &&
                                                                                       Equals(i.BaseComponentType, BaseComponentType.Frame));
                _averageUtilization = frame.AverageUtilization;

                var lastCompliance = _maintenanceChecks.Where(i => !i.IsZeroPhase).SelectMany(i => i.PerformanceRecords)
                                     .OrderByDescending(i => i.RecordDate).FirstOrDefault();

                GlobalObjects.MTOPCalculator.CalculateMtopChecks(_maintenanceChecks, _averageUtilization);

                _groupLifelengths = GlobalObjects.MTOPCalculator.CalculateGroupNew(_maintenanceChecks
                                                                                   .Where(i => !i.Thresh.IsNullOrZero() && !i.IsZeroPhase).ToList());

                GlobalObjects.MTOPCalculator.CalculateNextPerformance(
                    _maintenanceChecks.Where(i => !i.IsZeroPhase).ToList(), frame.StartDate, _groupLifelengths,
                    CurrentAircraft, _averageUtilization, lastCompliance);
                GlobalObjects.MTOPCalculator.CalculateNextPerformance(
                    _maintenanceChecks.Where(i => !i.IsZeroPhase).ToList(), frame.StartDate, _groupLifelengths,
                    CurrentAircraft, _averageUtilization, lastCompliance, true);
                GlobalObjects.MTOPCalculator.CalculatePhase(_initialMaintenanceDirectives,
                                                            _maintenanceChecks.Where(i => !i.Thresh.IsNullOrZero() && !i.IsZeroPhase).ToList(),
                                                            _averageUtilization);



                _maintenanceZeroChecks = _maintenanceChecks.Where(i => i.IsZeroPhase).ToList();

                var lowerZeroCheck = _maintenanceZeroChecks.Where(i => !i.Thresh.IsNullOrZero()).OrderBy(i => i.Thresh)
                                     .FirstOrDefault();
                if (lowerZeroCheck != null)
                {
                    lastCompliance = _maintenanceChecks.Where(i => i.IsZeroPhase).SelectMany(i => i.PerformanceRecords)
                                     .OrderByDescending(i => i.RecordDate).FirstOrDefault();

                    GlobalObjects.MTOPCalculator.CalculateMtopChecks(_maintenanceZeroChecks, _averageUtilization);

                    _groupLifelengthsForZeroCheck =
                        GlobalObjects.MTOPCalculator.CalculateGroupNew(_maintenanceZeroChecks);

                    GlobalObjects.MTOPCalculator.CalculateNextPerformance(_maintenanceZeroChecks, frame.StartDate,
                                                                          _groupLifelengthsForZeroCheck, CurrentAircraft, _averageUtilization, lastCompliance);
                    GlobalObjects.MTOPCalculator.CalculateNextPerformance(_maintenanceZeroChecks, frame.StartDate,
                                                                          _groupLifelengthsForZeroCheck, CurrentAircraft, _averageUtilization, lastCompliance, true);

                    _initialZeroMaintenanceDirectives.AddRange(_initialMaintenanceDirectives
                                                               .Where(i => i.MTOPPhase?.FirstPhase == 0).ToArray());

                    GlobalObjects.MTOPCalculator.CalculatePhase(_initialZeroMaintenanceDirectives,
                                                                _maintenanceChecks.Where(i => !i.Thresh.IsNullOrZero() && i.IsZeroPhase).ToList(),
                                                                _averageUtilization, true);
                }

                foreach (var d in _initialZeroMaintenanceDirectives)
                {
                    _initialMaintenanceDirectives.Remove(d);
                }


                //var q = _maintenanceChecks.Where(i => !i.IsZeroPhase).SelectMany(i => i.NextPerformances);
                //var last = _maintenanceChecks.Where(i => !i.IsZeroPhase).SelectMany(i => i.PerformanceRecords).OrderByDescending(i => i.RecordDate).FirstOrDefault();
                //var group = last.GroupName;
                //var value = Lifelength.Null;
                //foreach (var performance in q.OrderBy(i => i.PerformanceSource.Days))
                //{

                //	if (value.Days == performance.PerformanceSource.Days)
                //	{
                //		performance.Group = group --;
                //	}
                //	else
                //	{
                //		performance.Group = group++;
                //	}


                //	value = performance.PerformanceSource;
                //}
            }

            if (AnimatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            #endregion

            #region Фильтрация директив

            AnimatedThreadWorker.ReportProgress(70, "filter records");

            FilterItems(_initialMaintenanceDirectives, _resultMaintenanceDirectives);

            if (AnimatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            AnimatedThreadWorker.ReportProgress(90, "filter records");

            FilterZeroItems(_initialZeroMaintenanceDirectives, _resultZeroMaintenanceDirectives);

            if (AnimatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            #endregion

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }