Пример #1
0
        private void CopyItemsClick(object sender, EventArgs e)
        {
            if (_directivesViewer.SelectedItem == null)
            {
                return;
            }

            var form = new PlanOpsForm(_directivesViewer.SelectedItem, _initialFlightOpsArray.Select(i => i.From).ToList());

            if (form.ShowDialog() == DialogResult.OK)
            {
                AnimatedThreadWorker.RunWorkerAsync();
            }
        }
Пример #2
0
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            _updateChecks.Clear();
            _updateChecks.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <PelSpecialistDTO, PelSpecialist>(new Filter("AuditId", _auditId)));

            foreach (var rec in _updateChecks)
            {
                rec.Specialist = _specialists.FirstOrDefault(i => i.ItemId == rec.SpecialistId);
            }

            var ids = _updateChecks.Select(i => i.SpecialistId);

            if (ids.Any())
            {
                _addedChecks.AddRange(_specialists.Where(q => !ids.Contains(q.ItemId)).Select(i => new PelSpecialist
                {
                    SpecialistId = i.ItemId,
                    Specialist   = i,
                    AuditId      = _auditId
                }));
            }
            else
            {
                _addedChecks.AddRange(_specialists.Select(i => new PelSpecialist
                {
                    SpecialistId = i.ItemId,
                    Specialist   = i,
                    AuditId      = _auditId
                }));
            }
        }
Пример #3
0
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            _workPackageSpecialists.Clear();

            _initialDocumentArray.Clear();
            _wpSpecialists.Clear();

            _initialDocumentArray.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <SpecialistDTO, Specialist>(loadChild: true));
            var aircraftModels = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <AccessoryDescriptionDTO, AircraftModel>(new Filter("ModelingObjectTypeId", 7));

            foreach (var specialist in _initialDocumentArray)
            {
                foreach (var license in specialist.Licenses)
                {
                    if (license.AircraftTypeID > 0)
                    {
                        license.AircraftType = aircraftModels.FirstOrDefault(a => a.ItemId == license.AircraftTypeID);
                    }
                }
            }


            _workPackageSpecialists.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <WorkPackageSpecialistsDTO, WorkPackageSpecialists>(new Filter("WorkPackageId", _currentWorkPackage.ItemId)));

            var specialistIds = _workPackageSpecialists.Select(w => w.SpecialistId).ToArray();

            if (specialistIds.Length > 0)
            {
                _wpSpecialists.AddRange(_initialDocumentArray.Where(s => specialistIds.Any(id => id == s.ItemId)));
            }


            FilterItems(_initialDocumentArray, _resultDocumentArray);
        }
Пример #4
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _initialDocumentArray.Clear();
            _resultDocumentArray.Clear();

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



            if (_operatorId > 0)
            {
                _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <ConcessionRequestDTO, SmartCore.CAA.ConcessionRequest>(new Filter("From", GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId), loadChild: true));
            }
            else
            {
                _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <ConcessionRequestDTO, SmartCore.CAA.ConcessionRequest>(new Filter("To", GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId), loadChild: true));
            }

            var ids = _initialDocumentArray.Select(i => i.FromId).ToList();

            ids.AddRange(_initialDocumentArray.Select(i => i.ToId));


            var specialists = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAASpecialistDTO, Specialist>(new Filter("ItemId", ids.Distinct()));
            var aircraft    = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAAAircraftDTO, Aircraft>();


            foreach (var req in _initialDocumentArray)
            {
                req.Aircraft = aircraft.FirstOrDefault(i => i.ItemId == req.Settings.AircraftId) ?? Aircraft.Unknown;
                req.From     = specialists.FirstOrDefault(i => i.ItemId == req.FromId);
                req.To       = specialists.FirstOrDefault(i => i.ItemId == req.ToId);
                req.Current  = specialists.FirstOrDefault(i => i.ItemId == req.CurrentId);
            }


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


            FilterItems(_initialDocumentArray, _resultDocumentArray);

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }
Пример #5
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _initialDocumentArray.Clear();
            _resultDocumentArray.Clear();

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


            _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader
                                           .GetObjectListAll <CourseRecordDTO, CourseRecord>(new Filter("WorkPackageId", _wp.ItemId)));

            var ids = _initialDocumentArray.Select(i => i.ObjectId).Distinct();

            if (ids.Any())
            {
                var educationRecords = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <EducationRecordsDTO, CAAEducationRecord>(new Filter("ItemId", ids));

                var edIds      = educationRecords.Select(i => i.EducationId);
                var educations = GlobalObjects.CaaEnvironment.NewLoader
                                 .GetObjectListAll <EducationDTO, SmartCore.CAA.CAAEducation.CAAEducation>(new Filter("ItemId", edIds), loadChild: true);

                var spIds       = educationRecords.Select(i => i.SpecialistId);
                var specialists = GlobalObjects.CaaEnvironment.NewLoader
                                  .GetObjectListAll <CAASpecialistDTO, Specialist>(new Filter("ItemId", spIds));


                foreach (var wpR in _initialDocumentArray)
                {
                    var r = educationRecords.FirstOrDefault(i => i.ItemId == wpR.ObjectId);
                    if (r == null)
                    {
                        continue;
                    }

                    r.Education = educations.FirstOrDefault(i => i.ItemId == r.EducationId);
                    EducationCalculator.CalculateEducation(r);
                    var item = new CAAEducationManagment()
                    {
                        Specialist = specialists.FirstOrDefault(i => i.ItemId == r.SpecialistId),
                        Education  = educations.FirstOrDefault(i => i.ItemId == r.EducationId),
                        Record     = r,
                    };
                    item.Occupation    = item.Education.Occupation;
                    item.IsCombination = item.Record.Settings.IsCombination;

                    wpR.Parent = item;
                }
            }

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

            FilterItems(_initialDocumentArray, _resultDocumentArray);

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }
Пример #6
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _initialDocumentArray.Clear();
            _resultDocumentArray.Clear();

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

            _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader
                                           .GetObjectListAll <TaskDTO, SmartCore.CAA.Tasks.CAATask>(new Filter("OperatorId", _operatorId), loadChild: true));

            var ids   = _initialDocumentArray.Select(i => i.ItemId);
            var links = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAAItemFileLinkDTO, ItemFileLink>(new List <Filter>()
            {
                new Filter("ParentId", ids),
                new Filter("ParentTypeId", 3088)
            }, 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;
                }
            }


            foreach (var task in _initialDocumentArray)
            {
                task.Files.AddRange(links.Where(i => i.ParentId == task.ItemId));
            }

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

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

            FilterItems(_initialDocumentArray, _resultDocumentArray);

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }
Пример #7
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");
        }
Пример #8
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            #region Загрузка элементов

            _initialFlightsArray.Clear();
            _resultFlightsArray.Clear();
            _result.Clear();
            _resultPeriodArray.Clear();
            _initialPeriodArray.Clear();

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

            try
            {
                var flightTypes = new List <int>();
                if (_screenType == FlightNumberScreenType.Schedule)
                {
                    flightTypes.AddRange(FlightType.Items.Where(i => i.ItemId == FlightType.Schedule.ItemId).Select(i => i.ItemId));
                }
                else
                {
                    flightTypes.AddRange(FlightType.Items.Where(i => i.ItemId != FlightType.Schedule.ItemId).Select(i => i.ItemId));
                }

                CommonFilter <int> filter;
                if (isAllRadioButton.Checked)
                {
                    filter = new CommonFilter <int>(FlightNumberPeriod.ScheduleProperty, FilterType.In, new [] { 0, 1, -1 });
                }
                else if (isWinterRadioButton.Checked)
                {
                    filter = new CommonFilter <int>(FlightNumberPeriod.ScheduleProperty, 0);
                }
                else
                {
                    filter = new CommonFilter <int>(FlightNumberPeriod.ScheduleProperty, 1);
                }


                _initialFlightsArray.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <FlightNumberDTO, FlightNumber>(new Filter("FlightType", flightTypes), true));

                var ids = _initialFlightsArray.Select(f => f.ItemId);

                var periods = GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <FlightNumberPeriodDTO, FlightNumberPeriod>(new Filter("FlightNumberId", ids), true);

                if (filterPeriod)
                {
                    _initialPeriodArray.AddRange(periods.Where(t => t.DepartureDate >= dateTimePickerDateFrom.Value &&
                                                               t.ArrivalDate <= dateTimePickerDateTo.Value));
                }
                else
                {
                    _initialPeriodArray.AddRange(periods);
                }

                foreach (var period in _initialPeriodArray)
                {
                    period.FlightNum = _initialFlightsArray.FirstOrDefault(f => f.ItemId == period.FlightNumberId);
                }
            }
            catch (Exception exception)
            {
                Program.Provider.Logger.Log("Error while load records", exception);
            }

            AnimatedThreadWorker.ReportProgress(40, "Calculate records");

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

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

            FilterItems(_initialFlightsArray, _resultFlightsArray);
            FilterItems(_initialPeriodArray, _resultPeriodArray);

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

            AnimatedThreadWorker.ReportProgress(100, "Complete");
            #endregion
        }
Пример #9
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _initialFlightOpsRecordArray.Clear();
            _resultFlightOpsRecordArray.Clear();
            aircrafts.Clear();

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

            try
            {
                _initialFlightOpsRecordArray.AddRange(GlobalObjects.PlanOpsCalculator.LoadOpsRecordsByPlanOpsId(_currentPlanOps.ItemId));
                var calculatedItem = GlobalObjects.PlanOpsCalculator.CalculateTripForPeriod(_currentPlanOps);


                if (_initialFlightOpsRecordArray.Count <= 0)
                {
                    _initialFlightOpsRecordArray.AddRange(calculatedItem);
                    foreach (var rec in calculatedItem)
                    {
                        GlobalObjects.NewKeeper.Save(rec);
                    }
                }
                else
                {
                    foreach (var rec in calculatedItem.Where(i => _initialFlightOpsRecordArray.All(q => q.FlightTrackRecordId != i.FlightTrackRecordId)))
                    {
                        GlobalObjects.NewKeeper.Save(rec);
                        _initialFlightOpsRecordArray.Add(rec);
                    }
                }

                AnimatedThreadWorker.ReportProgress(50, "load Aircraft Flights");

                if (_calculated)
                {
                    aircrafts.AddRange(_initialFlightOpsRecordArray.Select(i => i.AircraftId).Distinct());
                    aircrafts.AddRange(_initialFlightOpsRecordArray.Select(i => i.AircraftExchangeId).Distinct());
                    foreach (var aircraft in aircrafts.Distinct())
                    {
                        GlobalObjects.AircraftFlightsCore.LoadAircraftFlightsLight(aircraft);
                    }
                }
            }
            catch (Exception exception)
            {
                Program.Provider.Logger.Log("Error while load records", exception);
            }

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

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

            FilterItems(_initialFlightOpsRecordArray, _resultFlightOpsRecordArray);

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


            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }
Пример #10
0
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            _resultArray.Clear();
            _addedItems.Clear();
            _initialFlightsArray.Clear();
            _resultFlightsArray.Clear();
            _initialPeriodArray.Clear();
            _resultPeriodArray.Clear();

            try
            {
                var flightTypes = new List <int>();
                if (radioButtonSchedule.Checked)
                {
                    flightTypes.AddRange(FlightType.Items.Where(i => i.ItemId == FlightType.Schedule.ItemId).Select(i => i.ItemId));
                }
                else
                {
                    flightTypes.AddRange(FlightType.Items.Where(i => i.ItemId != FlightType.Schedule.ItemId).Select(i => i.ItemId));
                }

                CommonFilter <int> filter;
                if (radioButtonWinter.Checked)
                {
                    filter = new CommonFilter <int>(FlightNumberPeriod.ScheduleProperty, 0);
                }
                else
                {
                    filter = new CommonFilter <int>(FlightNumberPeriod.ScheduleProperty, 1);
                }

                //Выбираем все полеты(ItemId) фильтруя по FlightType
                var query = BaseQueries.GetSelectQueryColumnOnly <FlightNumber>(BaseEntityObject.ItemIdProperty, new ICommonFilter[]
                {
                    new CommonFilter <int>(FlightNumber.FlightTypeProperty, FilterType.In, flightTypes.ToArray()),
                });
                //Загрузка всех периодов фильтруя по зимнему или летнему периоду
                _initialPeriodArray.AddRange(GlobalObjects.CasEnvironment.Loader.GetObjectListAll <FlightNumberPeriod>(new ICommonFilter[]
                {
                    filter,
                    new CommonFilter <string>(FlightNumberPeriod.FlightNumberIdProperty, FilterType.In, new [] { query })
                }, true).ToArray());

                var ids = _initialPeriodArray.Select(f => f.FlightNumberId);

                if (ids.Any())
                {
                    _initialFlightsArray.AddRange(GlobalObjects.CasEnvironment.Loader.GetObjectListAll <FlightNumber>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), true, true).ToArray());
                }

                foreach (var period in _initialPeriodArray)
                {
                    period.FlightNum = _initialFlightsArray.FirstOrDefault(f => f.ItemId == period.FlightNumberId);
                }

                foreach (var selectedItem in _selectedItems.GroupBy(g => g.FlightNum))
                {
                    _addedItems.Add(selectedItem.Key);
                    foreach (var param in selectedItem)
                    {
                        _addedItems.Add(param);
                    }
                }

                _supplierArray.AddRange(GlobalObjects.CasEnvironment.Loader.GetObjectListAll <Supplier>(new CommonFilter <SupplierClass>(Supplier.SupplierClassProperty, SupplierClass.Customer)));

                var tripRecords = GlobalObjects.FlightTrackCore.GetFlightTrackRecordsByFlightTripId(_flightTrack.ItemId, true);
                foreach (var record in tripRecords)
                {
                    if (!_addedItems.Contains(record.FlightNumberPeriod.FlightNum))
                    {
                        _addedItems.Add(record.FlightNumberPeriod.FlightNum);
                    }
                    _addedItems.Add(record.FlightNumberPeriod);
                }
            }
            catch (Exception exception)
            {
                Program.Provider.Logger.Log("Error while load records", exception);
            }


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

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

            FilterItems(_initialFlightsArray, _resultFlightsArray);
            FilterItems(_initialPeriodArray, _resultPeriodArray);

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

            _animatedThreadWorker.ReportProgress(100, "Complete");
        }
Пример #11
0
        private void UpdateInformation()
        {
            _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader
                                           .GetObjectListAll <CourseRecordDTO, CourseRecord>(new Filter("WorkPackageId", _currentWp.ItemId)));

            var ids = _initialDocumentArray.Select(i => i.ObjectId).Distinct();

            if (ids.Any())
            {
                var educationRecords = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <EducationRecordsDTO, CAAEducationRecord>(new Filter("ItemId", ids));

                var edIds      = educationRecords.Select(i => i.EducationId);
                var educations = GlobalObjects.CaaEnvironment.NewLoader
                                 .GetObjectListAll <EducationDTO, SmartCore.CAA.CAAEducation.CAAEducation>(new Filter("ItemId", edIds), loadChild: true);

                var spIds       = educationRecords.Select(i => i.SpecialistId);
                var specialists = GlobalObjects.CaaEnvironment.NewLoader
                                  .GetObjectListAll <CAASpecialistDTO, Specialist>(new Filter("ItemId", spIds));

                var recordIds = _initialDocumentArray.Select(i => i.ItemId);
                var documents = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CAADocumentDTO, SmartCore.Entities.General.Document>(new Filter("ParentID", recordIds));


                foreach (var wpR in _initialDocumentArray)
                {
                    var r = educationRecords.FirstOrDefault(i => i.ItemId == wpR.ObjectId);
                    if (r == null)
                    {
                        continue;
                    }
                    //EducationCalculator.CalculateEducation(r);
                    var item = new CAAEducationManagment()
                    {
                        Specialist = specialists.FirstOrDefault(i => i.ItemId == r.SpecialistId),
                        Education  = educations.FirstOrDefault(i => i.ItemId == r.EducationId),
                        Record     = r,
                    };
                    item.Occupation    = item.Education.Occupation;
                    item.IsCombination = item.Record.Settings.IsCombination;

                    wpR.CloseDocument = documents.FirstOrDefault(i => i.ParentId == wpR.ItemId);
                    wpR.Parent        = item;
                }

                foreach (var item in _initialDocumentArray)
                {
                    var r = dataGridViewItems.Rows[dataGridViewItems.Rows.Add(new DataGridViewRow()
                    {
                        Tag = item
                    })];
                    r.Cells[0].Value    = item.Parent.Specialist.FirstName;
                    r.Cells[1].Value    = item.Parent.Specialist.LastName;
                    r.Cells[2].Value    = item.CloseDocument != null;
                    r.Cells[0].ReadOnly = false;
                    r.Cells[1].ReadOnly = false;
                    r.Cells[2].ReadOnly = false;
                }
            }


            dataGridViewItems.CellClick += DataGridViewItemsOnCellClick;
        }
Пример #12
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");
        }
Пример #13
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _initialDocumentArray.Clear();
            _resultDocumentArray.Clear();

            AnimatedThreadWorker.ReportProgress(0, "load directives");
            DataSet ds = null;


            if (_type == AuditType.CAA)
            {
                _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAAAuditDTO, CAAAudit>(new Filter("OperatorId", _operatorId), loadChild: true));


                ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@"select a.AuditId, Sum(a.MH) from dbo.AuditRecords ar
cross apply
(
	select ar.AuditId, rar.MH from dbo.RoutineAuditRecords ra
	cross apply
	(
		select cast(JSON_VALUE(SettingsJSON, '$.ManHours') as float) as MH 
		from dbo.CheckList 
		where ra.CheckListId = ItemId and IsDeleted = 0 and OperatorId = {_operatorId}
	) rar
	where ar.RoutineAuditId = ra.RoutineAuditId and ra.IsDeleted = 0
) a
where ar.IsDeleted = 0 
group by a.AuditId
");
            }
            else if (_type == AuditType.All)
            {
                _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAAAuditDTO, CAAAudit>(loadChild: true));

                ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@"select a.AuditId, Sum(a.MH) from dbo.AuditRecords ar
cross apply
(
	select ar.AuditId, rar.MH from dbo.RoutineAuditRecords ra
	cross apply
	(
		select cast(JSON_VALUE(SettingsJSON, '$.ManHours') as float) as MH 
		from dbo.CheckList 
		where ra.CheckListId = ItemId and IsDeleted = 0
	) rar
	where ar.RoutineAuditId = ra.RoutineAuditId and ra.IsDeleted = 0
) a
where ar.IsDeleted = 0 
group by a.AuditId
");
            }
            else if (_type == AuditType.Operator)
            {
                _initialDocumentArray.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAAAuditDTO, CAAAudit>(new Filter("OperatorId", FilterType.Grather, 0), loadChild: true));

                ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@"select a.AuditId, Sum(a.MH) from dbo.AuditRecords ar
cross apply
(
	select ar.AuditId, rar.MH from dbo.RoutineAuditRecords ra
	cross apply
	(
		select cast(JSON_VALUE(SettingsJSON, '$.ManHours') as float) as MH 
		from dbo.CheckList 
		where ra.CheckListId = ItemId and IsDeleted = 0 and OperatorId > 0
	) rar
	where ar.RoutineAuditId = ra.RoutineAuditId and ra.IsDeleted = 0
) a
where ar.IsDeleted = 0 
group by a.AuditId
");
            }



            var dt = ds.Tables[0];

            foreach (DataRow dr in dt.Rows)
            {
                var id   = (int)dr[0];
                var find = _initialDocumentArray.FirstOrDefault(i => i.ItemId == id);

                if (find != null && !string.IsNullOrEmpty(dr[1].ToString()))
                {
                    find.MH = Convert.ToDouble(dr[1].ToString());
                }
            }


            var auditIds = _initialDocumentArray.Select(i => i.ItemId);

            if (auditIds.Any())
            {
                //TODO: раньше искал по перемещениям что не гуд первое перемещение только у аудитора
//              ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@";WITH cte AS
// (
//    SELECT *,
//          ROW_NUMBER() OVER (PARTITION BY CheckListId ORDER BY Created DESC) AS rn
//    FROM [CheckListTransfer] where AuditId in ({string.Join(",", auditIds)})
// )
// SELECT AuditId, Count(*), Sum(case when ([To] = {GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId} or [From] = {GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId}) then 1 else 0 end)
// FROM cte
// WHERE rn = 1    and IsDeleted = 0
// group by AuditId");


                ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@";WITH cte AS
(
   SELECT rec.*, auditor.Auditor ,auditee.Auditee, ROW_NUMBER() OVER (PARTITION BY rec.CheckListId ORDER BY rec.ItemId DESC) AS rn
   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
   where rec.AuditId in ({string.Join(",", auditIds)}) and rec.IsDeleted = 0
)
SELECT AuditId, Count(*), Sum(case when ([Auditor] = {GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId} or [Auditee] = {GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId}) then 1 else 0 end)
FROM cte
WHERE rn = 1
group by AuditId");

                var dtC = ds.Tables[0];
                foreach (DataRow dr in dtC.Rows)
                {
                    var auditId = (int)dr[0];
                    var count   = (int)dr[1];
                    var myTask  = (int)dr[2];

                    var audit = _initialDocumentArray.FirstOrDefault(i => i.ItemId == auditId);
                    if (audit != null)
                    {
                        audit.TaskCount = count;
                        audit.MyTask    = myTask;
                    }
                }
            }



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

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

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

            FilterItems(_initialDocumentArray, _resultDocumentArray);

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