Exemplo n.º 1
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _initialProductArray.Clear();
            _resultProductArray.Clear();
            _initialOrders.Clear();
            _requestForQuotations.Clear();

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

            try
            {
                _initialOrders.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectList <InitialOrderDTO, InitialOrder>(new Filter("Status", 1)));
                _requestForQuotations.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectList <RequestForQuotationDTO, RequestForQuotation>(new Filter("Status", 1)));
                _initialProductArray.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectList <AccessoryDescriptionDTO, Product>(new Filter("ModelingObjectTypeId", -1), loadChild: true));
                _initialProductArray.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectList <AccessoryDescriptionDTO, ComponentModel>(new Filter("ModelingObjectTypeId", 5), loadChild: true));

                var ids = _initialProductArray.SelectMany(i => i.SupplierRelations).Select(i => i.SupplierID).Distinct();
                if (ids.Count() > 0)
                {
                    var suppliers = GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <SupplierDTO, Supplier>(new Filter("ItemId", ids));
                    if (suppliers.Count > 0)
                    {
                        foreach (var product in _initialProductArray)
                        {
                            foreach (var relation in product.SupplierRelations)
                            {
                                var currentSup = suppliers.FirstOrDefault(i => i.ItemId == relation.SupplierID);
                                if (currentSup != null)
                                {
                                    relation.Supplier = currentSup;
                                    if (!product.Suppliers.Contains(currentSup))
                                    {
                                        product.Suppliers.Add(currentSup);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Program.Provider.Logger.Log("Error while load documents", ex);
            }

            AnimatedThreadWorker.ReportProgress(70, "filter products");
            FilterItems(_initialProductArray, _resultProductArray);

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