Пример #1
0
        ///<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);
                    }
                }
            }
        }
Пример #2
0
        private void ButtonDeleteClick(object sender, EventArgs e)
        {
            CommonCollection <Hangar> stores = new CommonCollection <Hangar>();

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

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

                foreach (BaseEntityObject o in cdf.DeletedObjects)
                {
                    Hangar s = o as Hangar;
                    if (s != null)
                    {
                        _itemsollection.Remove(s);
                    }
                }
                FillUiElementsFromCollection();
            }
        }
Пример #3
0
		/// <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});
			}
		}
Пример #4
0
        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;
            }
        }
Пример #5
0
        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());
        }
Пример #6
0
        private void ButtonDeleteClick(object sender, EventArgs e)
        {
            if (listViewBindedTasks.SelectedItems.Count == 0)
            {
                return;
            }

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

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

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

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

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

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

            listViewTasksForSelect.InsertItems(itemsToInsert);
        }
Пример #7
0
        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");
        }
Пример #8
0
 private void ButtonDelete_Click(object sender, EventArgs e)
 {
     if (_tocheckListView.SelectedItems.Count > 0)
     {
         foreach (var item in _tocheckListView.SelectedItems.ToArray())
         {
             _updateChecks.Remove(item);
             _addedChecks.Add(item);
         }
     }
 }
Пример #9
0
        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;
            }
        }
Пример #10
0
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            pelSpec.Clear();
            specialists.Clear();

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

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

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

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

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

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


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

                rec.CheckList = item;
                rec.Auditor   = pelSpec.FirstOrDefault(i => i.ItemId == rec.AuditorId)?.Specialist ?? Specialist.Unknown;
                rec.Auditee   = pelSpec.FirstOrDefault(i => i.ItemId == rec.AuditeeId)?.Specialist ?? Specialist.Unknown;
                _addedChecks.Remove(item);
                _updateChecks.Add(rec);
            }
        }
Пример #11
0
        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());
            }
        }
Пример #12
0
        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");
        }
Пример #13
0
        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());
            }
        }
Пример #14
0
        private void ButtonAdd_Click(object sender, EventArgs e)
        {
            if (_fromcheckListView.SelectedItems.Count > 0)
            {
                foreach (var item in _fromcheckListView.SelectedItems.ToArray())
                {
                    _updateChecks.Add(item);
                    _addedChecks.Remove(item);

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

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

                    GlobalObjects.CaaEnvironment.NewKeeper.Delete(item);

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

                _fromcheckRevisionListView.SetItemsArray(_addedChecks.ToArray());
                _tocheckRevisionListView.SetItemsArray(_updateChecks.ToArray());
            }
        }
Пример #16
0
        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;
            }
        }
Пример #17
0
        private void ButtonDelete_Click(object sender, EventArgs e)
        {
            if (_tocheckListView.SelectedItems.Count > 0)
            {
                foreach (var item in _tocheckListView.SelectedItems.ToArray())
                {
                    _updateChecks.Remove(item);
                    if (item.RevisionStatus == RevisionCheckType.New)
                    {
                        GlobalObjects.CaaEnvironment.NewKeeper.Delete(item, true);
                    }
                    else
                    {
                        _addedChecks.Add(item);
                    }
                }

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

                _fromcheckListView.SetItemsArray(_addedChecks.ToArray());
                _tocheckListView.SetItemsArray(_updateChecks.ToArray());
            }
        }
Пример #18
0
        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);
            }
        }
Пример #19
0
        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");
        }
Пример #20
0
        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");
        }
Пример #21
0
        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");
        }
Пример #22
0
        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");
        }
Пример #23
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");
        }
Пример #24
0
        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");
        }
Пример #25
0
        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");
        }
Пример #26
0
        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);
                }
            }
        }
Пример #27
0
        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();
            }
        }