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");
        }
Beispiel #2
0
        private void AnimatedThreadWorkerDoLoad(object sender, DoWorkEventArgs e)
        {
            if (_maintenanceCheck == null || _currentAircraft == null)
            {
                e.Cancel = true;
                return;
            }

            if (_records == null)
            {
                _records = new CommonCollection <MaintenanceCheckBindTaskRecord>();
            }
            _records.Clear();

            if (_recordsTasks == null)
            {
                _recordsTasks = new CommonCollection <BaseEntityObject>();
            }
            _recordsTasks.Clear();

            if (_mpdForSelect == null)
            {
                _mpdForSelect = new CommonCollection <MaintenanceDirective>();
            }
            _mpdForSelect.Clear();

            _animatedThreadWorker.ReportProgress(0, "load binded tasks");

            var preResult = new List <MaintenanceCheckBindTaskRecord>();

            try
            {
                preResult.AddRange(GlobalObjects.WorkPackageCore.GetMaintenanceBingTasksRecords(_workPackage.ItemId));
                _records.AddRange(preResult.Where(r => r.CheckId == _maintenanceCheck.ItemId));
                _recordsTasks.AddRange(_records.Where(r => r.Task != null && r.Task is BaseEntityObject).Select(r => r.Task as BaseEntityObject));
                if (_maintenanceCheck.Grouping)
                {
                    MaintenanceNextPerformance mnp = _maintenanceCheck.GetNextPergormanceGroupWhereCheckIsSenior();
                    if (mnp != null && mnp.PerformanceGroup != null && mnp.PerformanceGroup.Checks.Count > 0)
                    {
                        _recordsTasks.AddRange(mnp.PerformanceGroup.Checks.SelectMany(mc => mc.BindMpds).ToArray());
                    }
                    else
                    {
                        _recordsTasks.AddRange(_maintenanceCheck.BindMpds.ToArray());
                    }
                }
                else
                {
                    _recordsTasks.AddRange(_maintenanceCheck.BindMpds.ToArray());
                }
            }
            catch (Exception ex)
            {
                Program.Provider.Logger.Log("Error while load Maintenance check bing tasks records", ex);
            }

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

            _animatedThreadWorker.ReportProgress(50, "calculation of Maintenance Directives");

            try
            {
                _mpdForSelect.AddRange(_workPackage.MaintenanceDirectives);
                _mpdForSelect.AddRange(_workPackage.ComponentDirectives.Where(dd => dd.MaintenanceDirective != null)
                                       .Select(dd => dd.MaintenanceDirective).Distinct());
                foreach (MaintenanceCheckBindTaskRecord record in preResult.Where(record => record.TaskType == SmartCoreType.MaintenanceDirective &&
                                                                                  _mpdForSelect.FirstOrDefault(m => m.ItemId == record.TaskId) != null))
                {
                    _mpdForSelect.RemoveById(record.TaskId);
                }
                foreach (MaintenanceDirective mpd in _allWpChecks.SelectMany(mc => mc.BindMpds))
                {
                    _mpdForSelect.RemoveById(mpd.ItemId);
                }
            }
            catch (Exception ex)
            {
                Program.Provider.Logger.Log("Error while load directives for select", ex);
            }

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

            _animatedThreadWorker.ReportProgress(75, "calculate directives for select");

            //try
            //{
            //    _mpdForSelect.AddRange(GlobalObjects.CasEnvironment.Loader.GetMaintenanceDirectives(_maintenanceCheck.ParentAircraft));
            //}
            //catch (Exception ex)
            //{
            //    Program.Provider.Logger.Log("Error while calculate directives for select", ex);
            //}

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

            _animatedThreadWorker.ReportProgress(100, "binding complete");
        }