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