예제 #1
0
        public EditionRevisionListScreen(Operator currentOperator, int operatorId, SmartCore.CAA.StandartManual.StandartManual manual)
            : this()
        {
            if (currentOperator == null)
            {
                throw new ArgumentNullException("currentOperator");
            }
            _operatorId = operatorId;
            _manual     = manual;
            aircraftHeaderControl1.Operator = currentOperator;
            statusControl.ShowStatus        = false;
            labelTitle.Visible = false;

            _filter = new CommonFilterCollection(typeof(ICheckListRevisionFilterParams));

            InitToolStripMenuItems();
            InitListView();
            UpdateInformation();

            if (GlobalObjects.CaaEnvironment.IdentityUser.CAAUserType == CAAUserType.CAA ||
                GlobalObjects.CaaEnvironment.IdentityUser.CAAUserType == CAAUserType.Operator)
            {
                _toolStripMenuItemEdit.Enabled = false;
                pictureBox2.Visible            = buttonAdd.Visible = buttonDeleteSelected.Visible = false;
            }
        }
예제 #2
0
 public EditionRevisionListView(AnimatedThreadWorker animatedThreadWorker, SmartCore.CAA.StandartManual.StandartManual manual)
 {
     InitializeComponent();
     _animatedThreadWorker = animatedThreadWorker;
     _manual             = manual;
     SortDirection       = SortDirection.Asc;
     EnableCustomSorting = true;
     OldColumnIndex      = 3;
 }
예제 #3
0
 public CheckListIcaoRevisionForm(int operatorId, CheckListRevision parent, SmartCore.CAA.StandartManual.StandartManual manual)
 {
     _operatorId = operatorId;
     _parent     = parent;
     _manual     = manual;
     InitializeComponent();
     _animatedThreadWorker.DoWork             += AnimatedThreadWorkerDoLoad;
     _animatedThreadWorker.RunWorkerCompleted += BackgroundWorkerRunWorkerLoadCompleted;
     _animatedThreadWorker.RunWorkerAsync();
 }
예제 #4
0
 public CheckListRevisionEditForm(int operatorId, CheckListRevision parent, CommonCollection <CheckLists> added, SmartCore.CAA.StandartManual.StandartManual manual)
 {
     _operatorId = operatorId;
     _parent     = parent;
     _manual     = manual;
     _updateChecks.AddRange(added.ToList());
     InitializeComponent();
     _animatedThreadWorker.DoWork             += AnimatedThreadWorkerDoLoad;
     _animatedThreadWorker.RunWorkerCompleted += BackgroundWorkerRunWorkerLoadCompleted;
     _animatedThreadWorker.RunWorkerAsync();
 }
예제 #5
0
        public CheckListsScreen(Operator currentOperator, int operatorId, SmartCore.CAA.StandartManual.StandartManual manual)
            : this()
        {
            if (currentOperator == null)
            {
                throw new ArgumentNullException("currentOperator");
            }
            _type       = CheckListType.CheckList;
            _operatorId = operatorId;
            _manual     = manual;
            aircraftHeaderControl1.Operator = currentOperator;
            statusControl.ShowStatus        = false;
            labelTitle.Visible = false;

            UpdateInformation();
        }
예제 #6
0
        public EditionRevisionRecordListScreen(Operator currentOperator, CheckListRevision parent, int operatorId, SmartCore.CAA.StandartManual.StandartManual manual)
            : this()
        {
            if (currentOperator == null)
            {
                throw new ArgumentNullException("currentOperator");
            }
            _parent     = parent;
            _operatorId = operatorId;
            _manual     = manual;
            aircraftHeaderControl1.Operator = currentOperator;
            statusControl.ShowStatus        = false;
            labelTitle.Visible = false;

            if (_manual.CheckUIType == CheckUIType.Iosa)
            {
                _filter = new CommonFilterCollection(typeof(ICheckListFilterParams));
            }
            else if (_manual.CheckUIType == CheckUIType.Safa)
            {
                _filter = new CommonFilterCollection(typeof(ICheckListSafaFilterParams));
            }
            else if (_manual.CheckUIType == CheckUIType.Icao)
            {
                _filter = new CommonFilterCollection(typeof(ICheckListIcaoFilterParams));
            }


            if (parent.Status == EditionRevisionStatus.Previous || (parent.Status == EditionRevisionStatus.Current && parent.Type == RevisionType.Revision))
            {
                buttonRevison.Visible           =
                    pictureBox2.Visible         =
                        buttonAddNew.Visible    =
                            pictureBox4.Visible = false;
            }
            InitListView();
            UpdateInformation();
        }
예제 #7
0
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            _manual = GlobalObjects.CaaEnvironment.NewLoader.GetObjectById <StandartManualDTO, SmartCore.CAA.StandartManual.StandartManual>(_currentCheck.ManualId);
            _levels.Clear();
            _levels = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <FindingLevelsDTO, FindingLevels>(new []
            {
                new Filter("OperatorId", _currentCheck.OperatorId),
                new Filter("ProgramTypeId", _manual.ProgramTypeId),
            });

            if (_currentCheck == null)
            {
                return;
            }

            if (_currentCheck.ItemId > 0)
            {
                _currentCheck = GlobalObjects.CaaEnvironment.NewLoader.GetObjectById <CheckListDTO, CheckLists>(_currentCheck.ItemId);
                _currentCheck.AllRevisions.Clear();

                var edition =
                    GlobalObjects.CaaEnvironment.NewLoader.GetObjectById <CheckListRevisionDTO, CheckListRevision>(_currentCheck.EditionId);
                if (edition != null)
                {
                    _currentCheck.AllRevisions.Add(new EditionRevisionView()
                    {
                        Date    = edition.Date,
                        Number  = edition.Number,
                        Remark  = edition.Settings.Remark,
                        Type    = edition.Type,
                        EffDate = edition.EffDate
                    });
                }


                var revisionRec = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CheckListRevisionRecordDTO, CheckListRevisionRecord>(new Filter("CheckListId", _currentCheck.ItemId));
                if (revisionRec.Any())
                {
                    var ids       = revisionRec.Select(i => i.ParentId);
                    var revisions = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CheckListRevisionDTO, CheckListRevision>(new Filter("ItemId", ids));

                    foreach (var rec in revisionRec)
                    {
                        var revision = revisions.FirstOrDefault(i => i.ItemId == rec.ParentId);
                        if (revision == null)
                        {
                            continue;
                        }

                        _currentCheck.AllRevisions.Add(new EditionRevisionView()
                        {
                            Date    = revision.Date,
                            Number  = revision.Number,
                            Remark  = string.Join(",", rec.Settings.ModData.OrderBy(i => i.Key).Select(i => i.Key)),
                            Type    = revision.Type,
                            EffDate = revision.EffDate
                        });
                    }
                }

                var links = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAAItemFileLinkDTO, ItemFileLink>(new List <Filter>()
                {
                    new Filter("ParentId", _currentCheck.ItemId),
                    new Filter("ParentTypeId", _currentCheck.SmartCoreObjectType.ItemId)
                }, true);

                var fileIds = links.Where(i => i.FileId.HasValue).Select(i => i.FileId.Value);
                if (fileIds.Any())
                {
                    var files = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CAAAttachedFileDTO, AttachedFile>(new Filter("ItemId", values: fileIds));
                    foreach (var file in links)
                    {
                        var f = files.FirstOrDefault(i => i.ItemId == file.FileId)?.GetCopyUnsaved(false);
                        if (f == null)
                        {
                            continue;
                        }
                        f.ItemId  = file.FileId.Value;
                        file.File = (AttachedFile)f;
                    }
                }
                _currentCheck.Files = new CommonCollection <ItemFileLink>(links);

                _currentCheck.Level = _levels.FirstOrDefault(i => i.ItemId == _currentCheck.SettingsSafa.LevelId) ??
                                      FindingLevels.Unknown;
            }
        }
예제 #8
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _initialDocumentArray.Clear();
            _resultDocumentArray.Clear();

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

            if (_type == CheckListType.Routine)
            {
                _currentRoutineId = _parentId;
                var records = GlobalObjects.CaaEnvironment.NewLoader
                              .GetObjectListAll <RoutineAuditRecordDTO, RoutineAuditRecord>(new Filter("RoutineAuditId", _parentId), loadChild: true).ToList();

                var routine = GlobalObjects.CaaEnvironment.NewLoader
                              .GetObjectById <RoutineAuditDTO, SmartCore.CAA.RoutineAudits.RoutineAudit>(_parentId);
                var manuals = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <StandartManualDTO, SmartCore.CAA.StandartManual.StandartManual>(new []
                {
                    new Filter("OperatorId", new [] { _operatorId, -1 }.Distinct()),
                    new Filter("ProgramTypeId", routine.Settings.TypeId),
                });

                _manual = manuals.FirstOrDefault();

                var ids = records.Select(i => i.CheckListId);

                if (ids.Any())
                {
                    _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CheckListDTO, CheckLists>(new Filter("ItemId", ids), loadChild: true));
                }


                var revisions = new List <CheckListRevision>();
                var revedIds  = _initialDocumentArray.Where(i => i.RevisionId.HasValue).Select(i => i.RevisionId.Value).Distinct().ToList();
                revedIds.AddRange(_initialDocumentArray.Select(i => i.EditionId).Distinct());
                if (revedIds.Any())
                {
                    revisions.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CheckListRevisionDTO, CheckListRevision>(new List <Filter>()
                    {
                        new Filter("ItemId", values: revedIds),
                    }));
                }

                foreach (var check in _initialDocumentArray)
                {
                    check.RevisionNumber = revisions.FirstOrDefault(i => i.ItemId == check.RevisionId)?.Number.ToString() ?? "";
                    check.EditionNumber  = revisions.FirstOrDefault(i => i.ItemId == check.RevisionId)?.Number.ToString() ?? "";
                }
            }
            else
            {
                var editions = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CheckListRevisionDTO, CheckListRevision>(new List <Filter>()
                {
                    new Filter("Status", (byte)EditionRevisionStatus.Current),
                    new Filter("Type", (byte)RevisionType.Edition),
                    new Filter("ManualId", _manual.ItemId),
                });

                if (editions.Any())
                {
                    var edition = editions.FirstOrDefault();
                    _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CheckListDTO, CheckLists>(new Filter("EditionId", edition.ItemId), loadChild: true));

                    var revisions = new List <CheckListRevision>();
                    var revIds    = _initialDocumentArray.Where(i => i.RevisionId.HasValue).Select(i => i.RevisionId.Value).Distinct();
                    if (revIds.Any())
                    {
                        revisions.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CheckListRevisionDTO, CheckListRevision>(new List <Filter>()
                        {
                            new Filter("ItemId", values: revIds),
                        }));
                    }

                    foreach (var check in _initialDocumentArray)
                    {
                        check.RevisionNumber = revisions.FirstOrDefault(i => i.ItemId == check.RevisionId)?.Number.ToString() ?? "";
                        check.EditionNumber  = edition.Number.ToString();
                    }
                }
            }


            var levels = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <FindingLevelsDTO, FindingLevels>(new []
            {
                new Filter("OperatorId", _operatorId),
                new Filter("ProgramTypeId", _manual.ProgramTypeId),
            });

            foreach (var check in _initialDocumentArray)
            {
                if (check.CheckUIType == CheckUIType.Iosa)
                {
                    check.Level = levels.FirstOrDefault(i => i.ItemId == check.Settings.LevelId) ??
                                  FindingLevels.Unknown;
                }
                else if (check.CheckUIType == CheckUIType.Safa)
                {
                    check.Level = levels.FirstOrDefault(i => i.ItemId == check.SettingsSafa.LevelId) ??
                                  FindingLevels.Unknown;
                }
                else if (check.CheckUIType == CheckUIType.Icao)
                {
                    check.Level = levels.FirstOrDefault(i => i.ItemId == check.SettingsIcao.LevelId) ??
                                  FindingLevels.Unknown;
                }
                check.Remains   = Lifelength.Null;
                check.Condition = ConditionState.Satisfactory;
            }


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

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

            FilterItems(_initialDocumentArray, _resultDocumentArray);

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }
예제 #9
0
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            _addedChecks.Clear();

            var routine = GlobalObjects.CaaEnvironment.NewLoader
                          .GetObjectById <RoutineAuditDTO, SmartCore.CAA.RoutineAudits.RoutineAudit>(_routineId);

            if (routine == null)
            {
                return;
            }

            var manuals = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <StandartManualDTO, SmartCore.CAA.StandartManual.StandartManual>(new []
            {
                new Filter("OperatorId", new [] { _operatorId, -1 }.Distinct()),
                new Filter("ProgramTypeId", routine.Settings.TypeId),
            });

            if (!manuals.Any())
            {
                return;
            }

            _manual = manuals.FirstOrDefault();


            var editions = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CheckListRevisionDTO, CheckListRevision>(new List <Filter>()
            {
                new Filter("Status", (byte)EditionRevisionStatus.Current),
                new Filter("Type", (byte)RevisionType.Edition),
                new Filter("OperatorId", _operatorId),
                new Filter("ManualId", _manual.ItemId),
            });

            if (editions.Any())
            {
                var edition = editions.FirstOrDefault();
                _addedChecks.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CheckListDTO, CheckLists>(new []
                {
                    new Filter("EditionId", edition.ItemId),
                    new Filter("ManualId", _manual.ItemId)
                }, loadChild: true));

                var revisions = new List <CheckListRevision>();
                var revIds    = _addedChecks.Where(i => i.RevisionId.HasValue).Select(i => i.RevisionId.Value).Distinct();
                if (revIds.Any())
                {
                    revisions.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CheckListRevisionDTO, CheckListRevision>(new List <Filter>()
                    {
                        new Filter("ItemId", values: revIds),
                    }));
                }

                foreach (var check in _addedChecks)
                {
                    check.EditionNumber  = edition.Number.ToString();
                    check.RevisionNumber = revisions.FirstOrDefault(i => i.ItemId == check.RevisionId)?.Number.ToString() ?? "";
                }
            }


            _levels.Clear();
            _levels = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <FindingLevelsDTO, FindingLevels>(new []
            {
                new Filter("OperatorId", _operatorId),
                new Filter("ProgramTypeId", _manual.ProgramTypeId),
            });


            foreach (var check in _addedChecks)
            {
                if (check.CheckUIType == CheckUIType.Iosa)
                {
                    check.Level = _levels.FirstOrDefault(i => i.ItemId == check.Settings.LevelId) ??
                                  FindingLevels.Unknown;
                }
                else if (check.CheckUIType == CheckUIType.Safa)
                {
                    check.Level = _levels.FirstOrDefault(i => i.ItemId == check.SettingsSafa.LevelId) ??
                                  FindingLevels.Unknown;
                }
                else if (check.CheckUIType == CheckUIType.Icao)
                {
                    check.Level = _levels.FirstOrDefault(i => i.ItemId == check.SettingsIcao.LevelId) ??
                                  FindingLevels.Unknown;
                }

                check.Remains   = Lifelength.Null;
                check.Condition = ConditionState.Satisfactory;
            }

            var records = GlobalObjects.CaaEnvironment.NewLoader
                          .GetObjectListAll <RoutineAuditRecordDTO, RoutineAuditRecord>(new Filter("RoutineAuditId", _routineId), loadChild: true).ToList();

            var ids = records.Select(i => i.CheckListId);

            foreach (var id in ids)
            {
                var item = _addedChecks.FirstOrDefault(i => i.ItemId == id);
                if (item == null)
                {
                    continue;
                }

                _addedChecks.Remove(item);
                _updateChecks.Add(item);
            }
        }
예제 #10
0
 public StandartManualForm(SmartCore.CAA.StandartManual.StandartManual standartManual)
 {
     _standartManual = standartManual;
     InitializeComponent();
     UpdateInformation();
 }
예제 #11
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _initialDocumentArray.Clear();
            _resultDocumentArray.Clear();

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

            _audit = GlobalObjects.CaaEnvironment.NewLoader.GetObjectById <CAAAuditDTO, CAAAudit>(_parentId);
            var records = GlobalObjects.CaaEnvironment.NewLoader
                          .GetObjectListAll <CAAAuditRecordDTO, CAAAuditRecord>(new Filter("AuditId", _parentId), loadChild: true).ToList();

            _currentRoutineId = records.Select(i => i.RoutineAuditId).FirstOrDefault();
            _routineAudit     = GlobalObjects.CaaEnvironment.NewLoader.GetObjectById <RoutineAuditDTO, SmartCore.CAA.RoutineAudits.RoutineAudit>(_currentRoutineId.Value);
            var manuals = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <StandartManualDTO, SmartCore.CAA.StandartManual.StandartManual>(new []
            {
                new Filter("OperatorId", new [] { _operatorId, -1 }.Distinct()),
                new Filter("ProgramTypeId", _routineAudit.Settings.TypeId),
            });

            _manual = manuals.FirstOrDefault();

            var routines = GlobalObjects.CaaEnvironment.NewLoader
                           .GetObjectListAll <RoutineAuditRecordDTO, RoutineAuditRecord>(new Filter("RoutineAuditId", _currentRoutineId), loadChild: true).ToList();

            var ids = new List <int>();

            if (_type == CheckListAuditType.Admin)
            {
                if (_audit.Settings.Status == RoutineStatus.Published)
                {
                    var ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@"select CheckListId from dbo.AuditChecks 
where AuditId in ({_parentId}) and IsDeleted = 0 and WorkflowStageId = {_stage.Value}");

                    var dt = ds.Tables[0];
                    ids.AddRange(from DataRow dr in dt.Rows select(int) dr[0]);
                }
                else
                {
                    ids = routines.Select(i => i.CheckListId).Distinct().ToList();
                }
            }
            else
            {
                var condition = _stage.HasValue ? $" and ac.WorkflowStageId = {_stage}" : "";

                var ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@"SELECT rec.CheckListId
   FROM [AuditPelRecords] rec
   cross apply
   (
		select SpecialistId as Auditor from  [dbo].[PelSpecialist] where ItemId = rec.AuditorId
   ) as auditor
   cross apply
   (
		select SpecialistId as Auditee from  [dbo].[PelSpecialist] where ItemId = rec.AuditeeId
   ) as auditee
   cross apply
   (
		select JSON_VALUE(SettingsJSON, '$.WorkflowStageId') as WorkflowStageId   from  [dbo].AuditChecks 
		where AuditId = rec.AuditId and CheckListId = rec.CheckListId
   ) as ac
   where rec.AuditId in ({_parentId}) and rec.IsDeleted = 0  {condition} 
   and (auditor.Auditor = {GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId} or auditee.Auditee = {GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId})");

                var dt = ds.Tables[0];

                ids.AddRange(from DataRow dr in dt.Rows select(int) dr[0]);
            }


            if (ids.Any())
            {
                var filter = new List <Filter>()
                {
                    new Filter("CheckListId", ids),
                    new Filter("AuditId", _audit.ItemId)
                };

                if (_stage.HasValue)
                {
                    filter.Add(new Filter("WorkflowStageId", _stage.Value));
                }

                var auditChecks = GlobalObjects.CaaEnvironment.NewLoader
                                  .GetObjectListAll <AuditCheckDTO, AuditCheck>(filter, loadChild: true).ToList();

                _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CheckListDTO, CheckLists>(new Filter("ItemId", ids), loadChild: true, true));

                var revisions = new List <CheckListRevision>();
                var revedIds  = _initialDocumentArray.Where(i => i.RevisionId.HasValue).Select(i => i.RevisionId.Value).Distinct().ToList();
                revedIds.AddRange(_initialDocumentArray.Select(i => i.EditionId).Distinct());
                if (revedIds.Any())
                {
                    revisions.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CheckListRevisionDTO, CheckListRevision>(new List <Filter>()
                    {
                        new Filter("ItemId", values: revedIds),
                    }));
                }

                foreach (var check in _initialDocumentArray)
                {
                    check.AuditCheck     = auditChecks.FirstOrDefault(i => i.CheckListId == check.ItemId);
                    check.RevisionNumber = revisions.FirstOrDefault(i => i.ItemId == check.RevisionId)?.Number.ToString() ?? "";
                    check.EditionNumber  = revisions.FirstOrDefault(i => i.ItemId == check.RevisionId)?.Number.ToString() ?? "";
                }
            }


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

            if (records.Any())
            {
                var pelSpec = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <PelSpecialistDTO, PelSpecialist>(new Filter("AuditId", _parentId));

                var specIds     = pelSpec.Select(i => i.SpecialistId);
                var specialists = GlobalObjects.CaaEnvironment.NewLoader
                                  .GetObjectListAll <CAASpecialistDTO, Specialist>(new Filter("ItemId", specIds),
                                                                                   loadChild: true);

                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);
                }


                var dsTransfer = GlobalObjects.CaaEnvironment.NewLoader.Execute($@";WITH cte AS
(
   SELECT *,
         ROW_NUMBER() OVER (PARTITION BY CheckListId ORDER BY Created DESC) AS rn
   FROM [CheckListTransfer] where AuditId = {_parentId}
)
SELECT CheckListId, [From], [To]
FROM cte
WHERE rn = 1 and  IsDeleted = 0");

                var transfers = dsTransfer.Tables[0].Rows.OfType <DataRow>().Select(i => new
                {
                    CheckListId = (int)i[0],
                    From        = (int)i[1],
                    To          = (int)i[2],
                });

                foreach (var rec in pelRecords)
                {
                    rec.CheckList = _initialDocumentArray.FirstOrDefault(i => i.ItemId == rec.CheckListId);
                    rec.Auditor   = pelSpec.FirstOrDefault(i => i.ItemId == rec.AuditorId)?.Specialist ?? Specialist.Unknown;
                    rec.Auditee   = pelSpec.FirstOrDefault(i => i.ItemId == rec.AuditeeId)?.Specialist ?? Specialist.Unknown;

                    var tr = transfers.FirstOrDefault(i => i.CheckListId == rec.CheckListId);
                    if (tr != null)
                    {
                        rec.CurrentAuditor = pelSpec.FirstOrDefault(i => i.SpecialistId == tr.To)?.Specialist ?? Specialist.Unknown;
                    }
                }
            }


            var levels = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <FindingLevelsDTO, FindingLevels>(new []
            {
                new Filter("OperatorId", _operatorId),
                new Filter("ProgramTypeId", _manual.ProgramTypeId),
            });

            foreach (var check in _initialDocumentArray)
            {
                check.PelRecord = pelRecords.FirstOrDefault(i => i.CheckListId == check.ItemId);

                if (check.PelRecord?.CurrentAuditor?.ItemId == GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId)
                {
                    check.IsEditable = true;
                }


                if (check.CheckUIType == CheckUIType.Iosa)
                {
                    check.Level = levels.FirstOrDefault(i => i.ItemId == check.Settings.LevelId) ??
                                  FindingLevels.Unknown;
                }
                else if (check.CheckUIType == CheckUIType.Safa)
                {
                    check.Level = levels.FirstOrDefault(i => i.ItemId == check.SettingsSafa.LevelId) ??
                                  FindingLevels.Unknown;
                }
                else if (check.CheckUIType == CheckUIType.Icao)
                {
                    check.Level = levels.FirstOrDefault(i => i.ItemId == check.SettingsIcao.LevelId) ??
                                  FindingLevels.Unknown;
                }
                check.Remains   = Lifelength.Null;
                check.Condition = ConditionState.Satisfactory;
            }


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

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

            FilterItems(_initialDocumentArray, _resultDocumentArray);

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