///<summary> ///</summary> ///<param name="initialCollection"></param> ///<param name="resultCollection"></param> private void FilterItems(CommonCollection <AircraftFlight> initialCollection, CommonCollection <AircraftFlight> resultCollection) { if (_filter == null || _filter.All(i => i.Values.Length == 0)) { resultCollection.Clear(); foreach (var flight in initialCollection) { resultCollection.Add(flight); } return; } resultCollection.Clear(); foreach (var pd in initialCollection) { if (_filter.FilterTypeAnd) { bool acceptable = true; foreach (ICommonFilter filter in _filter) { acceptable = filter.Acceptable(pd); if (!acceptable) { break; } } if (acceptable) { resultCollection.Add(pd); } } else { bool acceptable = true; foreach (ICommonFilter filter in _filter) { if (filter.Values == null || filter.Values.Length == 0) { continue; } acceptable = filter.Acceptable(pd); if (acceptable) { break; } } if (acceptable) { resultCollection.Add(pd); } } } }
private void ButtonDeleteClick(object sender, EventArgs e) { CommonCollection <Hangar> stores = new CommonCollection <Hangar>(); foreach (ReferenceStatusImageLinkLabel item in _controlItems) { stores.Add((Hangar)item.Tag); } CommonDeletingForm cdf = new CommonDeletingForm(typeof(Hangar), stores); if (cdf.ShowDialog() == DialogResult.OK) { if (cdf.DeletedObjects.Count == 0) { return; } foreach (BaseEntityObject o in cdf.DeletedObjects) { Hangar s = o as Hangar; if (s != null) { _itemsollection.Remove(s); } } FillUiElementsFromCollection(); } }
/// <summary> /// Конструктор создает объект с привязкой родительского объекта /// </summary> public Product(Product toCopy) : this() { if (toCopy == null) return; _batchNumber = toCopy.BatchNumber; _costNew = toCopy.CostNew; _costOvehaul = toCopy.CostOverhaul; _costServiceable = toCopy.CostServiceable; _description = toCopy.Description; _manufacturer = toCopy.Manufacturer; _measure = toCopy.Measure; _partNumber = toCopy.PartNumber; _remarks = toCopy.Remarks; _serialNumber = toCopy.SerialNumber; _standart = toCopy.Standart; if (_suppliers == null) _suppliers = new SupplierCollection(); _suppliers.Clear(); foreach (Supplier supplier in toCopy.Suppliers) { _suppliers.Add(supplier); } if (_supplierRelations == null) _supplierRelations = new CommonCollection<KitSuppliersRelation>(); _supplierRelations.Clear(); foreach (KitSuppliersRelation ksr in toCopy.SupplierRelations) { _supplierRelations.Add(new KitSuppliersRelation(ksr) {KitId = ItemId}); } }
private void ReferenceButtonAddDisplayerRequested(object sender, ReferenceEventArgs e) { CommonEditorForm form = new CommonEditorForm(new Hangar { Operator = GlobalObjects.CasEnvironment.Operators[0], OperatorId = GlobalObjects.CasEnvironment.Operators[0].ItemId }); if (form.ShowDialog() == DialogResult.OK) { if (form.CurrentObject as Hangar == null) { e.Cancel = true; return; } Hangar s = form.CurrentObject as Hangar; _itemsollection.Add(s); FillUiElementsFromCollection(); //e.TypeOfReflection = ReflectionTypes.DisplayInNew; //e.DisplayerText = s.Name; //e.RequestedEntity = new StoreScreen(s); e.Cancel = true; //CommonEditorForm editorForm = new CommonEditorForm(s); //editorForm.ShowDialog(); } else { e.Cancel = true; } }
private void buttonAdd_Click(object sender, EventArgs e) { if (workPackageEmployeeListViewAll.SelectedItems.Count == 0) { return; } foreach (var selectedItem in workPackageEmployeeListViewAll.SelectedItems) { if (_wpSpecialists.Any(s => s.ItemId == selectedItem.ItemId)) { MessageBox.Show($"{selectedItem.FirstName} {selectedItem.LastName} alredy added!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2); continue; } try { var wpSpecialist = new WorkPackageSpecialists { SpecialistId = selectedItem.ItemId, WorkPackageId = _currentWorkPackage.ItemId }; _wpSpecialists.Add(selectedItem); GlobalObjects.CasEnvironment.NewKeeper.Save(wpSpecialist); _workPackageSpecialists.Add(wpSpecialist); } catch (Exception ex) { Program.Provider.Logger.Log("Error while save bind task record", ex); } } workPackageEmployeeListView2.SetItemsArray(_wpSpecialists.ToArray()); }
private void ButtonDeleteClick(object sender, EventArgs e) { if (listViewBindedTasks.SelectedItems.Count == 0) { return; } //Коллекция элементов которые нужно добавить в элемента управления содержащий список всех задач var itemsToInsert = new CommonCollection <BaseEntityObject>(); var detailDirectives = listViewBindedTasks.SelectedItems.OfType <ComponentDirective>().ToList(); foreach (var selectedItem in detailDirectives) { try { //Если задача по компоненту была сохранена в бд , то добавляем в список удаляемых элементов if (selectedItem.ItemId > 0) { itemsToInsert.Add(selectedItem); _bindedItemsToRemove.Add(selectedItem); } //Удаление задачи по компоненту из коллекции содержащей все связаные задачи _bindedItems.Remove(selectedItem); //Удаление задачи по компоненту из элемента управления содержащего список всех привязаных задач listViewBindedTasks.RemoveItem(selectedItem); //если в коллекции содержащей все связные задачи не содержится задач по компоненту, //которые принадлежат тому же компоненту что и текущая задача //требуется удалить компонент из коллекции содержащей все связные задачи if (_bindedItems.OfType <ComponentDirective>().All(x => x.ParentComponent.ItemId != selectedItem.ParentComponent.ItemId)) { _bindedItems.Remove(selectedItem.ParentComponent); //Удаление компонента из элемента управления содержащего список всех привязаных задач listViewBindedTasks.RemoveItem(selectedItem.ParentComponent); } if (_newBindedItems.ContainsKey(selectedItem.ParentComponent)) { //Удаление задачи по компоненту из коллекции новых привязанных зачач по компоненту _newBindedItems[selectedItem.ParentComponent].Remove(selectedItem); //Если среди новых привязанных задач по компоненту не содержатся задачи по компонентам, //которые принадлежат тому же компоненту что и текущая задача //требуется удалить компонент из словаря if (_newBindedItems[selectedItem.ParentComponent].Count == 0) { _newBindedItems.Remove(selectedItem.ParentComponent); } } } catch (Exception ex) { Program.Provider.Logger.Log("Error while delete bind task record", ex); } } listViewTasksForSelect.InsertItems(itemsToInsert); }
protected override async void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { _initial.Clear(); _result.Clear(); AnimatedThreadWorker.ReportProgress(0, "load Activities"); try { List <AuditEntity> activity = new List <AuditEntity>(); if (_operatorId > 0) { activity = GlobalObjects.AuditContext.AuditCollection .FindSync(i => i.Date >= dateTimePickerDateFrom.Value && i.Date <= dateTimePickerDateTo.Value && i.OperatorId == _operatorId) .ToList(); } else { activity = GlobalObjects.AuditContext.AuditCollection .FindSync(i => i.Date >= dateTimePickerDateFrom.Value && i.Date <= dateTimePickerDateTo.Value) .ToList(); } var users = GlobalObjects.CaaEnvironment.ApiProvider.GetAllUsersAsync(); foreach (var bsonElement in activity) { Enum.TryParse(bsonElement.Action, out AuditOperation myStatus); var userr = users.FirstOrDefault(i => i.ItemId == bsonElement.UserId); _initial.Add(new ActivityDTO() { Date = bsonElement.Date, User = userr != null ? new User(userr): new User() { Name = $"Deleted User with Id:{bsonElement.UserId}" }, Operation = myStatus, ObjectId = bsonElement.ObjectId, Type = SmartCoreType.GetSmartCoreTypeById(bsonElement.ObjectTypeId), Information = bsonElement.AdditionalParameters?.Count > 0 ? string.Join(",", bsonElement.AdditionalParameters.Select(i => i.Value.ToString())) : "" }); } } catch (Exception ex) { Program.Provider.Logger.Log("Error while load documents", ex); } AnimatedThreadWorker.ReportProgress(70, "filter documents"); FilterItems(_initial, _result); AnimatedThreadWorker.ReportProgress(100, "Complete"); }
private void ButtonDelete_Click(object sender, EventArgs e) { if (_tocheckListView.SelectedItems.Count > 0) { foreach (var item in _tocheckListView.SelectedItems.ToArray()) { _updateChecks.Remove(item); _addedChecks.Add(item); } } }
private void ReferenceButtonAddDisplayerRequested(object sender, ReferenceEventArgs e) { //e.TypeOfReflection = ReflectionTypes.DisplayFewPages; //TemplateAircraftAddToDataBaseForm form = // new TemplateAircraftAddToDataBaseForm(GlobalObjects.CasEnvironment.Operators[0]); //DialogResult formResult = form.ShowDialog(); //if (formResult == DialogResult.OK) //{ // _itemsCollection.Add(form.TransferedAircraft); // FillUiElementsFromCollection(); // e.TypeOfReflection = ReflectionTypes.DisplayInNew; // e.DisplayerText = form.TransferedAircraft.RegistrationNumber; // //e.RequestedEntity = new DispatcheredAircraftScreen(form.TransferedAircraft); // e.RequestedEntity = new AircraftScreen(form.TransferedAircraft); //} //else //{ // e.Cancel = true; //} //StoreForm form = new StoreForm(GlobalObjects.CasEnvironment.Operators[0]); CommonEditorForm form = new CommonEditorForm(new Vehicle { Operator = GlobalObjects.CasEnvironment.Operators[0], OperatorId = GlobalObjects.CasEnvironment.Operators[0].ItemId }); if (form.ShowDialog() == DialogResult.OK) { if (form.CurrentObject as Vehicle == null) { e.Cancel = true; return; } Vehicle s = form.CurrentObject as Vehicle; _itemsCollection.Add(s); FillUiElementsFromCollection(); e.Cancel = true; //e.TypeOfReflection = ReflectionTypes.DisplayInNew; //e.DisplayerText = s.Name; //e.RequestedEntity = new StoreScreen(s); } else { e.Cancel = true; } }
private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e) { pelSpec.Clear(); specialists.Clear(); var records = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <AuditPelRecordDTO, AuditPelRecord>(new Filter("AuditId", _auditId)); _audit = GlobalObjects.CaaEnvironment.NewLoader.GetObjectById <CAAAuditDTO, CAAAudit>(_auditId); specialists.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAASpecialistDTO, Specialist>(new Filter("OperatorId", new [] { _audit.OperatorId, -1, _operatorId }.Distinct()), loadChild: true)); pelSpec.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <PelSpecialistDTO, PelSpecialist>(new Filter("AuditId", _auditId))); foreach (var specialist in specialists) { specialist.Operator = GlobalObjects.CaaEnvironment.AllOperators.FirstOrDefault(i => i.ItemId == specialist.OperatorId) ?? AllOperators.Unknown; } foreach (var pel in pelSpec) { pel.Specialist = specialists.FirstOrDefault(i => i.ItemId == pel.SpecialistId); } foreach (var rec in records) { var item = _addedChecks.FirstOrDefault(i => i.ItemId == rec.CheckListId); if (item == null) { continue; } rec.CheckList = item; rec.Auditor = pelSpec.FirstOrDefault(i => i.ItemId == rec.AuditorId)?.Specialist ?? Specialist.Unknown; rec.Auditee = pelSpec.FirstOrDefault(i => i.ItemId == rec.AuditeeId)?.Specialist ?? Specialist.Unknown; _addedChecks.Remove(item); _updateChecks.Add(rec); } }
private void ButtonDelete_Click(object sender, EventArgs e) { if (_tocheckRevisionListView.SelectedItems.Count > 0) { foreach (var item in _tocheckRevisionListView.SelectedItems.ToArray()) { _updateChecks.Remove(item); _addedChecks.Add(item.CheckList); GlobalObjects.CaaEnvironment.NewKeeper.Delete(item); } _fromcheckRevisionListView.SetItemsArray(_addedChecks.ToArray()); _tocheckRevisionListView.SetItemsArray(_updateChecks.ToArray()); } }
private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e) { if (_supplier == null) { e.Cancel = true; return; } if (_tasksForSelect == null) { _tasksForSelect = new CommonCollection <Product>(); } _tasksForSelect.Clear(); if (_bindedTasks == null) { _bindedTasks = new CommonCollection <KitSuppliersRelation>(); } _bindedTasks.Clear(); _animatedThreadWorker.ReportProgress(0, "load binded tasks"); try { _tasksForSelect.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <AccessoryDescriptionDTO, Product>(new Filter("ModelingObjectTypeId", -1), true)); List <Product> supplierProducts = GlobalObjects.PurchaseCore.GetProducts(_supplier); foreach (Product supplierProduct in supplierProducts) { _tasksForSelect.RemoveById(supplierProduct.ItemId); _bindedTasks.Add(supplierProduct.SupplierRelations.FirstOrDefault(ksr => ksr.SupplierId == _supplier.ItemId)); } } catch (Exception ex) { string s = $"Error while load Products For selection for supplier {_supplier} id: {_supplier.ItemId}"; Program.Provider.Logger.Log(s, ex); } if (_animatedThreadWorker.CancellationPending) { e.Cancel = true; return; } _animatedThreadWorker.ReportProgress(100, "binding complete"); }
private void ButtonAdd_Click(object sender, EventArgs e) { if (_fromcheckRevisionListView.SelectedItems.Count > 0) { if (comboBoxOccupation.SelectedItem == null) { MessageBox.Show("Please select Occupation!", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); return; } if (comboBoxPriority.SelectedItem == null) { MessageBox.Show("Please select Priority!", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); return; } var occupation = comboBoxOccupation.SelectedItem as Occupation; var priority = comboBoxPriority.SelectedItem as EducationPriority; foreach (var item in _fromcheckRevisionListView.SelectedItems.ToArray()) { if (_updateChecks.Any(i => i.TaskId == item.ItemId && i.OccupationId == occupation.ItemId && i.Priority.ItemId == priority.ItemId)) { continue; } var newItem = new SmartCore.CAA.CAAEducation.CAAEducation() { OperatorId = _operatorId, Occupation = occupation, OccupationId = occupation.ItemId, Priority = priority, Task = item, TaskId = item.ItemId, }; GlobalObjects.CaaEnvironment.NewKeeper.Save(newItem); _updateChecks.Add(newItem); } _fromcheckRevisionListView.SetItemsArray(_addedChecks.ToArray()); _tocheckRevisionListView.SetItemsArray(_updateChecks.ToArray()); } }
private void ButtonAdd_Click(object sender, EventArgs e) { if (_fromcheckListView.SelectedItems.Count > 0) { foreach (var item in _fromcheckListView.SelectedItems.ToArray()) { _updateChecks.Add(item); _addedChecks.Remove(item); GlobalObjects.CaaEnvironment.NewKeeper.Save(new CheckListRevisionRecord { CheckListId = item.ItemId, ParentId = _parent.ItemId }); } _fromcheckListView.SetItemsArray(_addedChecks.ToArray()); _tocheckListView.SetItemsArray(_updateChecks.ToArray()); } }
private void ButtonDelete_Click(object sender, EventArgs e) { if (_tocheckRevisionListView.SelectedItems.Count > 0) { foreach (var item in _tocheckRevisionListView.SelectedItems.ToArray()) { item.Role = PELRole.Unknown; item.PELResponsibilities = PELResponsibilities.Unknown; item.PELPosition = PELPosition.Unknown; GlobalObjects.CaaEnvironment.NewKeeper.Delete(item); _updateChecks.Remove(item); _addedChecks.Add(item); } _fromcheckRevisionListView.SetItemsArray(_addedChecks.ToArray()); _tocheckRevisionListView.SetItemsArray(_updateChecks.ToArray()); } }
private void ReferenceButtonAddDisplayerRequested(object sender, ReferenceEventArgs e) { e.TypeOfReflection = ReflectionTypes.DisplayFewPages; TemplateAircraftAddToDataBaseForm form = new TemplateAircraftAddToDataBaseForm(GlobalObjects.CasEnvironment.Operators[0]); DialogResult formResult = form.ShowDialog(); if (formResult == DialogResult.OK) { _itemsCollection.Add(form.TransferedAircraft); FillUiElementsFromCollection(); e.TypeOfReflection = ReflectionTypes.DisplayInNew; e.DisplayerText = form.TransferedAircraft.RegistrationNumber; //e.RequestedEntity = new DispatcheredAircraftScreen(form.TransferedAircraft); e.RequestedEntity = new AircraftScreen(form.TransferedAircraft); } else { e.Cancel = true; } }
private void ButtonDelete_Click(object sender, EventArgs e) { if (_tocheckListView.SelectedItems.Count > 0) { foreach (var item in _tocheckListView.SelectedItems.ToArray()) { _updateChecks.Remove(item); if (item.RevisionStatus == RevisionCheckType.New) { GlobalObjects.CaaEnvironment.NewKeeper.Delete(item, true); } else { _addedChecks.Add(item); } } GlobalObjects.CaaEnvironment.NewLoader.Execute( $"delete from dbo.CheckListRevisionRecord where ParentId = {_parent.ItemId} and CheckListId in ({string.Join(",",_tocheckListView.SelectedItems.Select(i => i.ItemId))})"); _fromcheckListView.SetItemsArray(_addedChecks.ToArray()); _tocheckListView.SetItemsArray(_updateChecks.ToArray()); } }
private void AddToWorkPackageItemClick(object sender, EventArgs e) { if (_directivesViewer.SelectedItems.Count <= 0) { return; } var wp = (SmartCore.CAA.CAAWP.CoursePackage)((RadMenuItem)sender).Tag; var items = _directivesViewer.SelectedItems; if (!items.All(i => i.Education?.Task.ItemId == wp.Settings.TaskId)) { MessageBox.Show("Not all educations has equality Task!", (string)new GlobalTermsProvider()["SystemName"], MessageBoxButtons.OK, MessageBoxIcon.Error); return; } foreach (var item in items) { if (item.Record == null) { item.Record = new CAAEducationRecord() { EducationId = item.Education.ItemId, OccupationId = item.Occupation.ItemId, SpecialistId = item.Specialist.ItemId, OperatorId = item.Specialist.OperatorId, PriorityId = item.Education.Priority.ItemId, Settings = new CAAEducationRecordSettings() { IsCombination = item.IsCombination, BlockedWpId = wp.ItemId } }; } else { item.Record.Settings.BlockedWpId = wp.ItemId; } GlobalObjects.NewKeeper.Save(item.Record); GlobalObjects.NewKeeper.Save(new CourseRecord() { ObjectId = item.Record.ItemId, WorkPackageId = wp.ItemId, SpecialistId = item.Specialist.ItemId, Parent = item, }); } _directivesViewer.UpdateItemColor(); //Добавление нового рабочего пакета в коллекцию открытых рабочих пакетов _openPubWorkPackages.Add(wp); //Создание пункта в меню открытых рабочих пакетов var raditem = new RadMenuItem(wp.Title); raditem.Click += AddToWorkPackageItemClick; raditem.Tag = wp; _toolStripMenuItemsWorkPackages.Items.Add(raditem); if (MessageBox.Show("Items added successfully. Open work package?", (string)new GlobalTermsProvider()["SystemName"], MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { var refE = new ReferenceEventArgs(); refE.TypeOfReflection = ReflectionTypes.DisplayInNew; refE.DisplayerText = $"WP:{wp.Title}"; refE.RequestedEntity = new CourseRecordListScreen(CurrentOperator, wp); InvokeDisplayerRequested(refE); } }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { var temp = new CommonCollection <CAAEducationManagment>(); _initialDocumentArray.Clear(); _resultDocumentArray.Clear(); AnimatedThreadWorker.ReportProgress(0, "load directives"); var specialists = new List <Specialist>(); var educations = new List <SmartCore.CAA.CAAEducation.CAAEducation>(); var records = new List <CAAEducationRecord>(); var occupation = GlobalObjects.CaaEnvironment?.GetDictionary <Occupation>().ToArray(); educations.AddRange(GlobalObjects.CaaEnvironment.NewLoader .GetObjectListAll <EducationDTO, SmartCore.CAA.CAAEducation.CAAEducation>(new Filter("OperatorId", _operatorId), loadChild: true)); specialists.AddRange(GlobalObjects.CaaEnvironment.NewLoader .GetObjectListAll <CAASpecialistDTO, Specialist>(new Filter("OperatorId", _operatorId))); records.AddRange(GlobalObjects.CaaEnvironment.NewLoader .GetObjectListAll <EducationRecordsDTO, CAAEducationRecord>(new Filter("OperatorId", _operatorId))); foreach (var specialist in specialists) { FillCollection(educations, specialist.Occupation, specialist, records, false); foreach (Occupation dict in occupation) { if (specialist.Combination != null && specialist.Combination.Contains(dict.FullName)) { FillCollection(educations, dict, specialist, records); } } } AnimatedThreadWorker.ReportProgress(40, "filter directives"); if (_openPubWorkPackages == null) { _openPubWorkPackages = new CommonCollection <SmartCore.CAA.CAAWP.CoursePackage>(); } _openPubWorkPackages.Clear(); if (_operatorId == -1) { _openPubWorkPackages.AddRange(GlobalObjects.CaaEnvironment.NewLoader .GetObjectListAll <CoursePackageDTO, SmartCore.CAA.CAAWP.CoursePackage>(new List <Filter>() { new Filter("Status", 0) })); } else { _openPubWorkPackages.AddRange(GlobalObjects.CaaEnvironment.NewLoader .GetObjectListAll <CoursePackageDTO, SmartCore.CAA.CAAWP.CoursePackage>( new List <Filter>() { new Filter("Status", 0), new Filter("OperatorId", _operatorId) } )); } if (_toDate.HasValue) { temp.AddRange(_initialDocumentArray.ToArray()); _initialDocumentArray.Clear(); foreach (var t in temp) { if (t.Record.Settings.NextCompliances != null && t.Record.Settings.NextCompliances.Any()) { foreach (var next in t.Record.Settings.NextCompliances) { var newItem = t.DeepClone(); newItem.Record.Settings.NextCompliance = next; _initialDocumentArray.Add(newItem); } } else { var newItem = t.DeepClone(); newItem.Record.Settings.NextCompliance = new NextCompliance(); _initialDocumentArray.Add(t); } } } FilterItems(_initialDocumentArray, _resultDocumentArray); AnimatedThreadWorker.ReportProgress(100, "Complete"); }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { _initialDocumentArray.Clear(); _resultDocumentArray.Clear(); if (_type == CheckListAuditType.Admin) { var ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@" DECLARE @count INT DECLARE @countNotSatis INT DECLARE @countNotSatisRCA INT SELECT @count = COUNT(*), @countNotSatis = Sum(case when IsSatisfactory = 0 then 1 else 0 end), @countNotSatisRCA = Sum(case when IsSatisfactory = 0 and WorkflowStageId in (4) then 1 else 0 end) FROM [dbo].[AuditChecks] where AuditId = {_auditId} and IsDeleted = 0 select WorkflowStageId as WorkflowStageId, case when WorkflowStageId in(2,3,6) then @count else @countNotSatis end as AllTask, case when WorkflowStageId in (4) then @countNotSatisRCA else Count(*) end as TaskInProgress from dbo.AuditChecks where AuditId = {_auditId} and IsDeleted = 0 group by WorkflowStageId "); var dtC = ds.Tables[0]; foreach (DataRow dr in dtC.Rows) { _initialDocumentArray.Add(new AuditPublish() { WorkFlowStageId = int.Parse(dr[0].ToString()), AllTask = int.Parse(dr[1].ToString()), TaskInProgress = int.Parse(dr[2].ToString()), }); } } else { var ds = GlobalObjects.CaaEnvironment.NewLoader.Execute($@" DECLARE @countNotSatis INT declare @T table( WorkflowStageId int, Auditor int, Auditee int, IsSatisfactory bit); ;WITH cte AS ( SELECT rec.*, auditor.Auditor ,auditee.Auditee, ac.*, 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 cross apply ( select WorkflowStageId, WorkflowStatusId, IsSatisfactory from [dbo].AuditChecks where AuditId = rec.AuditId and CheckListId = rec.CheckListId ) as ac where rec.AuditId in ({_auditId}) and rec.IsDeleted = 0 ) insert into @T(WorkflowStageId, Auditor, Auditee, IsSatisfactory) select WorkflowStageId, Auditor, Auditee , IsSatisfactory from cte where rn = 1; SELECT @countNotSatis = Sum(case when IsSatisfactory = 0 then 1 else 0 end) FROM @T SELECT WorkflowStageId as WorkflowStageId, case when WorkflowStageId in(2,3,6) then Count(*) else @countNotSatis end as AllTask, Sum(case when ([Auditor] = {GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId} or [Auditee] = {GlobalObjects.CaaEnvironment.IdentityUser.PersonnelId} ) then 1 else 0 end) as TaskInProgress FROM @T group by WorkflowStageId "); var dtC = ds.Tables[0]; foreach (DataRow dr in dtC.Rows) { _initialDocumentArray.Add(new AuditPublish() { WorkFlowStageId = int.Parse(dr[0].ToString()), AllTask = int.Parse(dr[1].ToString()), TaskInProgress = int.Parse(dr[2].ToString()), }); } } foreach (var i in _initialDocumentArray.OrderBy(i => i.WorkFlowStageId)) { if (i.WorkFlowStageId == WorkFlowStage.Evaluation.ItemId || i.WorkFlowStageId == WorkFlowStage.RCA.ItemId || i.WorkFlowStageId == WorkFlowStage.CAP.ItemId) { var res = ((double)(i.AllTask - i.TaskInProgress) / i.AllTask) * 100; i.Persent = (int)Math.Round(res); } else if (i.WorkFlowStageId == WorkFlowStage.CAR.ItemId) { if (_type == CheckListAuditType.Admin) { var eval = _initialDocumentArray.FirstOrDefault(q => q.WorkFlowStageId == WorkFlowStage.Evaluation.ItemId); var res = ((double)(i.AllTask - (i.TaskInProgress + eval.TaskInProgress)) / i.AllTask) * 100; i.Persent = (int)Math.Round(res); } else { var res = ((double)(i.AllTask - i.TaskInProgress) / i.AllTask) * 100; i.Persent = (int)Math.Round(res); } } else if (i.WorkFlowStageId == WorkFlowStage.Closed.ItemId) { var res = (double)(i.TaskInProgress / i.AllTask) * 100; i.Persent = (int)Math.Round(res); } } _resultDocumentArray.AddRange(_initialDocumentArray.ToList()); AnimatedThreadWorker.ReportProgress(100, "Complete"); }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { _itemsArray.Clear(); _relatedWorkPackages.Clear(); AnimatedThreadWorker.ReportProgress(0, "load Audit"); //GlobalObjects.CasEnvironment.Loader.LoadWorkPackageItems(_currentWorkPackage); GlobalObjects.AuditCore.GetAuditItemsWithCalculate(_currentDirective); if (_currentDirective.MaxClosingDate < _currentDirective.MinClosingDate) { _currentDirective.CanClose = false; } CommonCollection <BaseEntityObject> wpItems = new CommonCollection <BaseEntityObject>(); foreach (AuditRecord record in _currentDirective.AuditRecords) { wpItems.Add((BaseEntityObject)record.Task); } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } double currentProc = 20; int countDirectives = wpItems.Count; if (countDirectives == 0) { countDirectives = 1; } double delay = (100 - currentProc) / countDirectives; if (_currentDirective.Status != WorkPackageStatus.Closed) { AnimatedThreadWorker.ReportProgress(10, "load related Audit"); foreach (AuditRecord record in _currentDirective.AuditRecords) { AnimatedThreadWorker.ReportProgress((int)(currentProc += delay), "calculation of directives"); if (record.Task.SmartCoreObjectType == SmartCoreType.MaintenanceCheck) { MaintenanceCheck mc = (MaintenanceCheck)record.Task; MaintenanceNextPerformance mnp = mc.GetPergormanceGroupWhereCheckIsSeniorByGroupNum(record.PerformanceNumFromStart); if (mnp != null) { _itemsArray.Add(mnp); } } else if (record.Task.SmartCoreObjectType == SmartCoreType.NonRoutineJob) { _itemsArray.Add((BaseEntityObject)record.Task); } else if (record.Task.SmartCoreObjectType == SmartCoreType.Component) { if (record.Task.NextPerformances.Count > 0) { _itemsArray.Add(record.Task.NextPerformances[0]); } else { _itemsArray.Add((BaseEntityObject)record.Task); } } else { if (record.Task.NextPerformances.Count > 0) { _itemsArray.Add(record.Task.NextPerformances[0]); } else { _itemsArray.Add((BaseEntityObject)record.Task); } } } } else { //При закоытом Рабочем пакете, в список попадают записи о выполении //сделанные в рамках данного рабочего пакета AnimatedThreadWorker.ReportProgress(10, "load related Audits"); _relatedWorkPackages.AddRange(GlobalObjects.AuditCore.GetAudits(CurrentOperator, WorkPackageStatus.Closed, true, wpItems)); //сбор всех записей рабочих пакетов для удобства фильтрации AbstractPerformanceRecord apr; foreach (AuditRecord record in _currentDirective.AuditRecords) { AnimatedThreadWorker.ReportProgress((int)(currentProc += delay), "check records"); apr = record.Task.PerformanceRecords .Cast <AbstractPerformanceRecord>() .FirstOrDefault(pr => pr.DirectivePackageId == _currentDirective.ItemId); if (apr != null) { _itemsArray.Add(apr); } else { if (record.Task.NextPerformances.Count > 0) { _itemsArray.Add(record.Task.NextPerformances[0]); } else { _itemsArray.Add((BaseEntityObject)record.Task); } } } } AnimatedThreadWorker.ReportProgress(100, "calculation over"); }
private void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { if (_selectedWorkPackage == null) { e.Cancel = true; return; } _itemsArray.Clear(); backgroundWorker.ReportProgress(0, "Load Work Package"); if (!_selectedWorkPackage.WorkPackageItemsLoaded) { GlobalObjects.WorkPackageCore.GetWorkPackageItemsWithCalculate(_selectedWorkPackage); } if (_selectedWorkPackage.MaxClosingDate < _selectedWorkPackage.MinClosingDate) { _selectedWorkPackage.CanClose = false; } CommonCollection <BaseEntityObject> wpItems = new CommonCollection <BaseEntityObject>(); foreach (WorkPackageRecord record in _selectedWorkPackage.WorkPakageRecords) { wpItems.Add((BaseEntityObject)record.Task); } if (backgroundWorker.CancellationPending) { e.Cancel = true; return; } double currentProc = 20; int countDirectives = wpItems.Count; if (countDirectives == 0) { countDirectives = 1; } double delay = (100 - currentProc) / countDirectives; if (_selectedWorkPackage.Status != WorkPackageStatus.Closed) { backgroundWorker.ReportProgress(10, "load related Work Packages"); foreach (WorkPackageRecord record in _selectedWorkPackage.WorkPakageRecords) { backgroundWorker.ReportProgress((int)(currentProc += delay), "calculation of directives"); if (record.Task.SmartCoreObjectType == SmartCoreType.MaintenanceCheck) { MaintenanceCheck mc = (MaintenanceCheck)record.Task; MaintenanceNextPerformance mnp = mc.GetPergormanceGroupWhereCheckIsSeniorByGroupNum(record.PerformanceNumFromStart); if (mnp != null) { _itemsArray.Add(mnp); } } else if (record.Task.SmartCoreObjectType == SmartCoreType.NonRoutineJob) { _itemsArray.Add((BaseEntityObject)record.Task); } else if (record.Task.SmartCoreObjectType == SmartCoreType.Component) { if (record.Task.NextPerformances.Count > 0) { _itemsArray.Add(record.Task.NextPerformances[0]); } else { _itemsArray.Add((BaseEntityObject)record.Task); } } else { if (record.Task.NextPerformances.Count > 0) { _itemsArray.Add(record.Task.NextPerformances[0]); } else { _itemsArray.Add((BaseEntityObject)record.Task); } } } } else { //При закоытом Рабочем пакете, в список попадают записи о выполении //сделанные в рамках данного рабочего пакета backgroundWorker.ReportProgress(10, "load related Work Packages"); AbstractPerformanceRecord apr; foreach (WorkPackageRecord record in _selectedWorkPackage.WorkPakageRecords) { backgroundWorker.ReportProgress((int)(currentProc += delay), "check records"); if (record.Task.SmartCoreObjectType == SmartCoreType.MaintenanceCheck) { backgroundWorker.ReportProgress((int)(currentProc += delay), "calculation of Maintenance checks"); apr = record.Task.PerformanceRecords .Cast <AbstractPerformanceRecord>() .FirstOrDefault(pr => pr.DirectivePackageId == _selectedWorkPackage.ItemId); if (apr != null) { _itemsArray.Add(apr); } else { MaintenanceCheck mc = (MaintenanceCheck)record.Task; if (mc.NextPerformances.OfType <MaintenanceNextPerformance>().Any(np => np.PerformanceGroupNum == record.PerformanceNumFromStart)) { MaintenanceNextPerformance mnp = mc.GetPergormanceGroupWhereCheckIsSeniorByGroupNum(record.PerformanceNumFromStart); if (mnp != null) { _itemsArray.Add(mnp); } } else { _itemsArray.Add((BaseEntityObject)record.Task); } } } else if (record.Task.SmartCoreObjectType == SmartCoreType.NonRoutineJob) { _itemsArray.Add((BaseEntityObject)record.Task); } else { apr = record.Task.PerformanceRecords .Cast <AbstractPerformanceRecord>() .FirstOrDefault(pr => pr.DirectivePackageId == _selectedWorkPackage.ItemId); if (apr != null) { _itemsArray.Add(apr); } else { if (record.Task.NextPerformances.Count > 0) { _itemsArray.Add(record.Task.NextPerformances[0]); } else { _itemsArray.Add((BaseEntityObject)record.Task); } } } if (_selectedWorkPackage.WorkPakageRecords.Where(wpr => wpr.Task != null && wpr.Task is Component) .Select(wpr => wpr.Task as Component) .Any(d => d.TransferRecords.Any(tr => tr.DirectivePackageId == _selectedWorkPackage.ItemId && tr.DODR))) { //Поиск записи в рабочем пакете по деталям(базовым деталям) //в записях о перемещении которых есть запись сделанная в рамках данного //рабочего пакета, и подтвержденная на стороне получателя //Если такие записи есть, то рабочий пакет перепубликовать нельзя _selectedWorkPackage.CanPublish = false; if (_selectedWorkPackage.BlockPublishReason != "") { _selectedWorkPackage.BlockPublishReason += "\n"; } _selectedWorkPackage.BlockPublishReason = "This work package has in its task of moving component," + "\nwhich was confirmed on the destination side"; } } } backgroundWorker.ReportProgress(100, "calculation over"); }
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"); }
protected override async void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { _initial.Clear(); _result.Clear(); AnimatedThreadWorker.ReportProgress(0, "load Activities"); try { var activity = GlobalObjects.AuditContext.AuditCollection .FindSync(i => i.Date >= dateTimePickerDateFrom.Value && i.Date <= dateTimePickerDateTo.Value) .ToList(); var users = GlobalObjects.CasEnvironment.ApiProvider.GetAllUsersAsync(); foreach (var bsonElement in activity) { Enum.TryParse(bsonElement.Action, out AuditOperation myStatus); var userr = users.FirstOrDefault(i => i.ItemId == bsonElement.UserId); _initial.Add(new ActivityDTO() { Date = bsonElement.Date, User = userr != null ? new User(userr): new User() { Name = $"Deleted User with Id:{bsonElement.UserId}" }, Operation = myStatus, ObjectId = bsonElement.ObjectId, Type = SmartCoreType.GetSmartCoreTypeById(bsonElement.ObjectTypeId), Information = bsonElement.AdditionalParameters?.Count > 0 ? string.Join(",", bsonElement.AdditionalParameters.Select(i => i.Value.ToString())) : "" }); } AnimatedThreadWorker.ReportProgress(50, "load Parents"); foreach (var obj in _initial.GroupBy(i => i.Type?.ItemId)) { if (obj.Key == SmartCoreType.WorkPackage.ItemId) { var ids = obj.Select(i => i.ObjectId); var wps = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <WorkPackageDTO, WorkPackage>(new Filter("ItemId", ids), getDeleted: true); foreach (var dto in obj) { var wp = wps.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (wp == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(wp.ParentId); dto.Title = wp.Title; } } else if (obj.Key == SmartCoreType.WorkPackageRecord.ItemId) { var ids = obj.Select(i => i.ObjectId); var wpr = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <WorkPackageRecordDTO, WorkPackageRecord>(new Filter("ItemId", ids), getDeleted: true); var wpIds = wpr.Select(i => i.WorkPakageId); var wps = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <WorkPackageDTO, WorkPackage>(new Filter("ItemId", wpIds), getDeleted: true); foreach (var dto in obj) { var wp = wps.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (wp == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(wp.ParentId); dto.Title = wp.Title; } } else if (obj.Key == SmartCoreType.MaintenanceDirective.ItemId) { var ids = obj.Select(i => i.ObjectId); var mpds = GlobalObjects.CasEnvironment.Loader.GetObjectList <MaintenanceDirective>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), getDeleted: true); foreach (var dto in obj) { var mpd = mpds.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (mpd == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(mpd.ParentBaseComponent.ParentAircraftId); dto.Title = mpd.Title; } } else if (obj.Key == SmartCoreType.Directive.ItemId) { var ids = obj.Select(i => i.ObjectId); var directives = GlobalObjects.CasEnvironment.Loader.GetObjectList <Directive>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), getDeleted: true); foreach (var dto in obj) { var directive = directives.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (directive == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(directive.ParentBaseComponent.ParentAircraftId); dto.Title = directive.Title; } } else if (obj.Key == SmartCoreType.DirectiveRecord.ItemId) { var ids = obj.Select(i => i.ObjectId); var directiveRecords = GlobalObjects.CasEnvironment.Loader.GetObjectList <DirectiveRecord>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), getDeleted: true); var directiveIds = directiveRecords.Select(i => i.ParentId); var directives = GlobalObjects.CasEnvironment.Loader.GetObjectList <Directive>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, directiveIds.ToArray()), getDeleted: true); foreach (var dto in obj) { var directive = directives.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (directive == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(directive.ParentBaseComponent.ParentAircraftId); dto.Title = directive.Title; } } else if (obj.Key == SmartCoreType.BaseComponent.ItemId) { var ids = obj.Select(i => i.ObjectId); var baseComponents = GlobalObjects.CasEnvironment.Loader.GetObjectList <BaseComponent>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), getDeleted: true); foreach (var dto in obj) { var baseComponent = baseComponents.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (baseComponent == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(baseComponent.ParentAircraftId); dto.Title = baseComponent.SerialNumber; } } else if (obj.Key == SmartCoreType.Component.ItemId) { var ids = obj.Select(i => i.ObjectId); var components = GlobalObjects.CasEnvironment.Loader.GetObjectList <SmartCore.Entities.General.Accessory.Component>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), getDeleted: true); foreach (var dto in obj) { var component = components.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (component == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(component.ParentAircraftId); dto.Title = component.SerialNumber; } } else if (obj.Key == SmartCoreType.ComponentDirective.ItemId) { var ids = obj.Select(i => i.ObjectId); var componentDirectives = GlobalObjects.CasEnvironment.Loader.GetObjectList <ComponentDirective>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), getDeleted: true); var componentIds = componentDirectives.Select(i => i.ComponentId); var components = GlobalObjects.CasEnvironment.Loader.GetObjectList <SmartCore.Entities.General.Accessory.Component>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, componentIds.ToArray()), getDeleted: true); foreach (var dto in obj) { var component = components.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (component == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(component.ParentAircraftId); dto.Title = component.SerialNumber; } } else if (obj.Key == SmartCoreType.AircraftFlight.ItemId) { var ids = obj.Select(i => i.ObjectId); var flights = GlobalObjects.CasEnvironment.Loader.GetObjectList <AircraftFlight>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), getDeleted: true); foreach (var dto in obj) { var flight = flights.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (flight == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(flight.AircraftId); dto.Title = flight.ToString(); } } else if (obj.Key == SmartCoreType.Discrepancy.ItemId) { var ids = obj.Select(i => i.ObjectId); var discrepancies = GlobalObjects.CasEnvironment.Loader.GetObjectList <Discrepancy>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), getDeleted: true); var flIds = discrepancies.Select(i => i.FlightId); var flights = GlobalObjects.CasEnvironment.Loader.GetObjectList <AircraftFlight>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, flIds.ToArray()), getDeleted: true); foreach (var dto in obj) { var flight = flights.FirstOrDefault(i => i.ItemId == dto.ObjectId); if (flight == null) { continue; } dto.Aircraft = GlobalObjects.AircraftsCore.GetAircraftById(flight.AircraftId); dto.Title = flight.ToString(); } } } } catch (Exception ex) { Program.Provider.Logger.Log("Error while load documents", ex); } AnimatedThreadWorker.ReportProgress(70, "filter documents"); FilterItems(_initial, _result); AnimatedThreadWorker.ReportProgress(100, "Complete"); }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { #region Загрузка элементов AnimatedThreadWorker.ReportProgress(0, "load directives"); try { GlobalObjects.CaaEnvironment.NewLoader.ReloadDictionary(typeof(Occupation), typeof(LocationsType)); if (_currentItem.ItemId > 0) { _currentItem = GlobalObjects.CaaEnvironment.NewLoader.GetObjectById <CAASpecialistDTO, Specialist>(_currentItem.ItemId, true); } var links = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAAItemFileLinkDTO, ItemFileLink>(new List <Filter>() { new Filter("ParentId", _currentItem.ItemId), new Filter("ParentTypeId", _currentItem.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; } } _currentItem.Files.Clear(); _currentItem.Files.AddRange(links); var ds = GlobalObjects.CaaEnvironment.Execute($@"select r.ItemId from [dbo].[CourseRecords] r inner join [dbo].[CoursePackage] p on p.ItemId = r.WorkPackageId where p.Status >= 1 and r.IsDeleted = 0 and p.IsDeleted = 0 and r.SpecialistId = {_currentItem.ItemId}"); var data = ds.Tables[0].AsEnumerable().Select(dataRow => new { ItemId = dataRow.Field <int>("ItemId") }); var courses = GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CAADocumentDTO, SmartCore.Entities.General.Document>(new Filter("ParentID", data.Select(i => i.ItemId))); _currentItem.EmployeeDocuments.AddRange(courses); if (_currentItem.EmployeeDocuments.Any()) { var docIds = _currentItem.EmployeeDocuments.Select(i => i.ItemId); links = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAAItemFileLinkDTO, ItemFileLink>(new List <Filter>() { new Filter("ParentId", docIds), new Filter("ParentTypeId", SmartCoreType.Document.ItemId) }, false); foreach (var document in _currentItem.EmployeeDocuments) { document.Parent = _currentItem; document.Files = new CommonCollection <ItemFileLink>(links.Where(i => i.ParentId == document.ItemId)); } } _currentItem.MedicalRecord = GlobalObjects.CaaEnvironment.NewLoader.GetObject <CAASpecialistMedicalRecordDTO, SpecialistMedicalRecord>(new Filter("SpecialistId", _currentItem.ItemId)); var types = new[] { SmartCoreType.SpecialistTraining.ItemId, SmartCoreType.SpecialistMedicalRecord.ItemId, SmartCoreType.SpecialistCAA.ItemId, SmartCoreType.SpecialistLicense.ItemId }; var documents = GlobalObjects.CaaEnvironment.NewLoader.GetObjectListAll <CAADocumentDTO, SmartCore.Entities.General.Document>(new Filter("ParentTypeId", types), true); if (documents.Count > 0) { if (_currentItem.MedicalRecord != null) { var crs = GlobalObjects.CaaEnvironment.GetDictionary <DocumentSubType>().GetByFullName("Medical Records") as DocumentSubType; var personalTraining = documents.FirstOrDefault(d => d.ParentId == _currentItem.MedicalRecord.ItemId && d.ParentTypeId == SmartCoreType.SpecialistMedicalRecord.ItemId && d.DocumentSubType == crs); if (personalTraining != null) { _currentItem.MedicalRecord.Document = personalTraining; _currentItem.MedicalRecord.Document.Parent = _currentItem.MedicalRecord; } } foreach (var license in _currentItem.Licenses) { var crs = GlobalObjects.CaaEnvironment.GetDictionary <DocumentSubType>().GetByFullName("Personnel License") as DocumentSubType; var p = documents.FirstOrDefault(d => d.ParentId == license.ItemId && d.ParentTypeId == SmartCoreType.SpecialistLicense.ItemId && d.DocumentSubType == crs); if (p != null) { license.Document = p; license.Document.Parent = license; } foreach (var caa in license.CaaLicense) { var personalTraining = documents.FirstOrDefault(d => d.ParentId == caa.ItemId && d.ParentTypeId == SmartCoreType.SpecialistCAA.ItemId && d.DocumentSubType == crs); if (personalTraining != null) { caa.Document = personalTraining; caa.Document.Parent = caa; } } } foreach (var training in _currentItem.SpecialistTrainings) { var crs = GlobalObjects.CaaEnvironment.GetDictionary <DocumentSubType>().GetByFullName("Personnel Training") as DocumentSubType; var personalTraining = documents.FirstOrDefault(d => d.ParentId == training.ItemId && d.ParentTypeId == SmartCoreType.SpecialistTraining.ItemId && d.DocumentSubType == crs); if (personalTraining != null) { training.Document = personalTraining; training.Document.Parent = training; } } } _suppliers.Clear(); _suppliers.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CAASupplierDTO, SmartCore.Purchase.Supplier>()); aircraftModels.Clear(); aircraftModels.AddRange(GlobalObjects.CaaEnvironment.NewLoader.GetObjectList <CAAAccessoryDescriptionDTO, AircraftModel>(new Filter("ModelingObjectTypeId", 7))); foreach (var training in _currentItem.SpecialistTrainings) { if (training.AircraftTypeID > 0) { training.AircraftType = aircraftModels.FirstOrDefault(a => a.ItemId == training.AircraftTypeID); } } foreach (var license in _currentItem.Licenses) { if (license.AircraftTypeID > 0) { license.AircraftType = aircraftModels.FirstOrDefault(a => a.ItemId == license.AircraftTypeID); } } } catch (Exception ex) { Program.Provider.Logger.Log("Error while loading directives", ex); } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Калькуляция состояния директив AnimatedThreadWorker.ReportProgress(40, "calculation of directives"); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Фильтрация директив AnimatedThreadWorker.ReportProgress(70, "filter directives"); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Сравнение с рабочими пакетами AnimatedThreadWorker.ReportProgress(90, "comparison with the Work Packages"); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Training _initialDocumentArray.Clear(); var educations = new List <SmartCore.CAA.CAAEducation.CAAEducation>(); _records.Clear(); var occupation = GlobalObjects.CaaEnvironment?.GetDictionary <Occupation>().ToArray(); educations.AddRange(GlobalObjects.CaaEnvironment.NewLoader .GetObjectListAll <EducationDTO, SmartCore.CAA.CAAEducation.CAAEducation>(new Filter("OperatorId", _opearatorId), loadChild: true)); _records.AddRange(GlobalObjects.CaaEnvironment.NewLoader .GetObjectListAll <EducationRecordsDTO, CAAEducationRecord>(new [] { new Filter("OperatorId", _opearatorId), new Filter("SpecialistId", _currentItem.ItemId), })); FillCollection(educations, _currentItem.Occupation, _currentItem, _records, false); foreach (Occupation dict in occupation) { if (_currentItem.Combination != null && _currentItem.Combination.Contains(dict.FullName)) { FillCollection(educations, dict, _currentItem, _records); } } var temp = new CommonCollection <CAAEducationManagment>(); if (_toDate.HasValue) { temp.AddRange(_initialDocumentArray.ToArray()); _initialDocumentArray.Clear(); foreach (var t in temp) { if (t.Record.Settings.NextCompliances != null && t.Record.Settings.NextCompliances.Any()) { foreach (var next in t.Record.Settings.NextCompliances) { var newItem = t.DeepClone(); newItem.Record.Settings.NextCompliance = next; _initialDocumentArray.Add(newItem); } } else { var newItem = t.DeepClone(); newItem.Record.Settings.NextCompliance = new NextCompliance(); _initialDocumentArray.Add(t); } } } #endregion AnimatedThreadWorker.ReportProgress(100, "Complete"); }
private void ButtonCreateWorkPakageClick(object sender, EventArgs e) { if (_directivesViewer.SelectedItems.Count <= 0) { return; } if (MessageBox.Show("Create and save a Work Package?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { List <NextPerformance> wpItems = _directivesViewer.SelectedItems.ToList(); List <NextPerformance> bindedDirectivesPerformances = new List <NextPerformance>(); foreach (NextPerformance wpItem in wpItems) { if (wpItem is MaintenanceNextPerformance) { MaintenanceNextPerformance mnp = wpItem as MaintenanceNextPerformance; if (mnp.PerformanceGroup.Checks.Count > 0) { foreach (MaintenanceCheck mc in mnp.PerformanceGroup.Checks) { foreach (MaintenanceDirective mpd in _currentForecast.MaintenanceDirectives .Where(mpd => mpd.MaintenanceCheck != null && mpd.MaintenanceCheck.ItemId == mc.ItemId)) { NextPerformance performance = mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null && p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ?? mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null && p.PerformanceDate < wpItem.PerformanceDate) ?? mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null && p.PerformanceDate > wpItem.PerformanceDate); if (performance == null) { continue; } if (wpItems.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0) { bindedDirectivesPerformances.Add(performance); } } } } else if (wpItem.Parent is MaintenanceCheck) { MaintenanceCheck mc = wpItem.Parent as MaintenanceCheck; foreach (MaintenanceDirective mpd in _currentForecast.MaintenanceDirectives .Where(mpd => mpd.MaintenanceCheck != null && mpd.MaintenanceCheck.ItemId == mc.ItemId)) { NextPerformance performance = mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null && p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ?? mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null && p.PerformanceDate < wpItem.PerformanceDate) ?? mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null && p.PerformanceDate > wpItem.PerformanceDate); if (performance == null) { continue; } if (wpItems.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0) { bindedDirectivesPerformances.Add(performance); } } } } else if (wpItem.Parent is MaintenanceCheck) { MaintenanceCheck mc = wpItem.Parent as MaintenanceCheck; foreach (MaintenanceDirective mpd in _currentForecast.MaintenanceDirectives .Where(mpd => mpd.MaintenanceCheck != null && mpd.MaintenanceCheck.ItemId == mc.ItemId)) { NextPerformance performance = mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null && p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ?? mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null && p.PerformanceDate < wpItem.PerformanceDate) ?? mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null && p.PerformanceDate > wpItem.PerformanceDate); if (performance == null) { continue; } if (wpItems.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0) { bindedDirectivesPerformances.Add(performance); } } } } wpItems.AddRange(bindedDirectivesPerformances); try { string message; WorkPackage wp = GlobalObjects.WorkPackageCore.AddWorkPakage(wpItems, _currentAircraft, out message); if (wp == null) { MessageBox.Show(message, (string)new GlobalTermsProvider()["SystemName"], MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Добавление нового рабочего пакета в коллекцию открытых рабочих пакетов _openPubWorkPackages.Add(wp); //Создание пункта в меню открытых рабочих пакетов var item = new RadMenuItem(wp.Title); item.Click += AddToWorkPackageItemClick; item.Tag = wp; _toolStripMenuItemsWorkPackages.Items.Add(item); foreach (NextPerformance nextPerformance in wpItems) { nextPerformance.BlockedByPackage = wp; _directivesViewer.UpdateItemColor(); } ReferenceEventArgs refArgs = new ReferenceEventArgs(); refArgs.TypeOfReflection = ReflectionTypes.DisplayInNew; refArgs.DisplayerText = CurrentAircraft != null ? CurrentAircraft.RegistrationNumber + "." + wp.Title : wp.Title; refArgs.RequestedEntity = new WorkPackageScreen(wp); InvokeDisplayerRequested(refArgs); } catch (Exception ex) { Program.Provider.Logger.Log("error while create Work Package", ex); } } }
private void MoveToCommand() { if (_directivesViewer.SelectedItems.Count == 0) { return; } if (GlobalObjects.AircraftsCore.GetAircraftsCount() == 0 && GlobalObjects.CasEnvironment.Stores.Count == 0) { MessageBox.Show("You dont remove this component because you dont have a aircrafts", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var components = new CommonCollection <Component>(); foreach (var o in _directivesViewer.SelectedItems) { IDirective dir; if (o is NextPerformance) { dir = ((NextPerformance)o).Parent; } else { dir = o as IDirective; } if (dir == null) { continue; } if (dir is ComponentDirective && !components.Contains(((ComponentDirective)dir).ParentComponent)) { components.Add(((ComponentDirective)dir).ParentComponent); } else if (dir is Component && !components.Contains((Component)dir)) { components.Add((Component)dir); } } if (components.Count <= 0) { return; } var dlg = new MoveComponentForm(components.ToArray(), CurrentStore); dlg.Text = "Move " + (components.Count > 1 ? "components" : "component " + components[0].Description) + " to aircraft"; dlg.ShowDialog(); if (dlg.DialogResult == DialogResult.OK) { AnimatedThreadWorker.DoWork -= AnimatedThreadWorkerDoWork; //AnimatedThreadWorker.DoWork -= AnimatedThreadWorkerDoFilteringWork; AnimatedThreadWorker.DoWork += AnimatedThreadWorkerDoWork; AnimatedThreadWorker.RunWorkerAsync(); } }