public static void SetFileByFileLinkType(this ICommonCollection <ItemFileLink> files, int typeId, AttachedFile file, FileLinkType fileLinkType) { var link = files.FirstOrDefault(i => i.LinkType == (short)fileLinkType); if (link != null) { link.File = file; } else if (file != null) { files.Add(new ItemFileLink { ParentTypeId = typeId, LinkType = (short)fileLinkType, File = file }); } }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { if (_parent == null) { return; } _quotatioArray.Clear(); _resultArray.Clear(); _addedQuatationOrderRecords.Clear(); _data.Clear(); AnimatedThreadWorker.ReportProgress(0, "load Quotations"); try { _quotatioArray.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectList <RequestForQuotationDTO, RequestForQuotation>(new Filter("Status", WorkPackageStatus.Opened))); var quotaIds = _quotatioArray.Select(i => i.ItemId); if (quotaIds.Count() > 0) { var _quotationCosts = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <QuotationCostDTO, QuotationCost>( new Filter("QuotationId", quotaIds)); _addedQuatationOrderRecords = GlobalObjects.CasEnvironment.NewLoader .GetObjectList <RequestForQuotationRecordDTO, RequestForQuotationRecord>( new Filter("ParentPackageId", quotaIds), true); var ids = _addedQuatationOrderRecords.Select(i => i.PackageItemId); if (ids.Count() > 0) { var products = GlobalObjects.CasEnvironment.Loader.GetObjectList <Product>( new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), true); var supplierId = _addedQuatationOrderRecords.SelectMany(i => i.SupplierPrice) .Select(i => i.SupplierId); var suppliers = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <SupplierDTO, Supplier>(new Filter( "ItemId", supplierId)); foreach (var record in _addedQuatationOrderRecords.GroupBy(i => i.ParentPackageId)) { var parentInitialId = (int)GlobalObjects.CasEnvironment.Execute( $@"select i.ItemId from RequestsForQuotation q left join InitialOrders i on i.ItemID = q.ParentID where q.ItemId = {record.Key}" ).Tables[0] .Rows[0][0]; var initialOrderRecords = GlobalObjects.CasEnvironment.NewLoader .GetObjectList <InitialOrderRecordDTO, InitialOrderRecord>( new Filter("ParentPackageId", parentInitialId)); var initial = GlobalObjects.CasEnvironment.NewLoader.GetObject <InitialOrderDTO, InitialOrder>(new Filter("ItemId", parentInitialId)); foreach (var addedInitialOrderRecord in record) { addedInitialOrderRecord.ParentInitialRecord = initialOrderRecords.FirstOrDefault(i => i.ProductId == addedInitialOrderRecord.PackageItemId); addedInitialOrderRecord.ParentPackage = _quotatioArray.FirstOrDefault(i => i.ItemId == addedInitialOrderRecord.ParentPackageId); if (addedInitialOrderRecord.ParentInitialRecord != null) { addedInitialOrderRecord.ParentInitialRecord.ParentPackage = initial; } var product = products.FirstOrDefault(i => i.ItemId == addedInitialOrderRecord.PackageItemId); foreach (var relation in product.SupplierRelations) { var findCost = _quotationCosts.FirstOrDefault(i => i.ProductId == product.ItemId && i.SupplierId == relation.Supplier.ItemId); if (findCost != null) { findCost.SupplierName = relation.Supplier.Name; product.QuatationCosts.Add(findCost); } } addedInitialOrderRecord.Product = product; foreach (var price in addedInitialOrderRecord.SupplierPrice) { price.Parent = addedInitialOrderRecord; price.Supplier = suppliers.FirstOrDefault(i => i.ItemId == price.SupplierId); _data.Add(new SupplierPriceCustom { Record = addedInitialOrderRecord, Price = price, }); } } } } } } catch (Exception ex) { Program.Provider.Logger.Log("Error while load Quotations", ex); } AnimatedThreadWorker.ReportProgress(20, "calculation Quotations"); AnimatedThreadWorker.ReportProgress(70, "filter Quotations"); AnimatedThreadWorker.ReportProgress(100, "Complete"); }
public static AttachedFile GetFileByFileLinkType(this ICommonCollection <ItemFileLink> files, FileLinkType fileLinkType) { return(files.FirstOrDefault(i => i.LinkType == (short)fileLinkType)?.File); }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { if (_parent == null) { return; } _purchaseArray.Clear(); _resultArray.Clear(); _addedQuatationOrderRecords.Clear(); AnimatedThreadWorker.ReportProgress(0, "load Quotations"); try { _purchaseArray.AddRange( GlobalObjects.CasEnvironment.NewLoader.GetObjectList <PurchaseOrderDTO, PurchaseOrder>( new Filter("Status", WorkPackageStatus.Published))); var orderIds = _purchaseArray.Select(i => i.ItemId); if (orderIds.Count() > 0) { var records = GlobalObjects.CasEnvironment.Loader.GetObjectList <PurchaseRequestRecord>( new ICommonFilter[] { new CommonFilter <int>(PurchaseRequestRecord.ParentPackageIdProperty, FilterType.In, orderIds.ToArray()) }); var ids = records.Select(s => s.SupplierId).Distinct().ToArray(); var productIds = records.Select(s => s.PackageItemId).Distinct().ToArray(); var suppliers = GlobalObjects.CasEnvironment.Loader.GetObjectList <Supplier>(new ICommonFilter[] { new CommonFilter <int>(BaseEntityObject.ItemIdProperty, SmartCore.Filters.FilterType.In, ids), }); var products = GlobalObjects.CasEnvironment.Loader.GetObjectList <Product>(new ICommonFilter[] { new CommonFilter <int>(BaseEntityObject.ItemIdProperty, SmartCore.Filters.FilterType.In, productIds), }); var _supplierShipper = GlobalObjects.CasEnvironment.Loader.GetObjectList <Supplier>( new ICommonFilter[] { new CommonFilter <int>(Supplier.SupplierClassProperty, SupplierClass.Shipper.ItemId) }); var stationIds = _purchaseArray.Select(i => i.StationId); var station = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <AirportCodeDTO, AirportsCodes>( new Filter("ItemId", stationIds)); foreach (var purchase in _purchaseArray) { purchase.Station = station.FirstOrDefault(i => i.ItemId == purchase.StationId); purchase.ShipCompany = _supplierShipper.FirstOrDefault(i => i.ItemId == purchase.ShipCompanyId) ?? Supplier.Unknown; } foreach (var order in records.GroupBy(i => i.ParentPackageId)) { var parentInitialId = (int)GlobalObjects.CasEnvironment.Execute( $@"select i.ItemId from PurchaseOrders p left join RequestsForQuotation q on q.ItemID = p.ParentID left join InitialOrders i on i.ItemID = q.ParentID where p.ItemId = {order.Key}" ).Tables[0].Rows[0][0]; var initialRecords = GlobalObjects.CasEnvironment.NewLoader .GetObjectList <InitialOrderRecordDTO, InitialOrderRecord>(new Filter("ParentPackageId", parentInitialId)); var initial = GlobalObjects.CasEnvironment.NewLoader.GetObject <InitialOrderDTO, InitialOrder>( new Filter("ItemId", parentInitialId)); foreach (var record in order) { record.ParentPackage = _purchaseArray.FirstOrDefault(i => i.ItemId == order.Key); record.ParentInitialRecord = initialRecords.FirstOrDefault(i => i.ProductId == record.PackageItemId); if (record.ParentInitialRecord != null) { record.ParentInitialRecord.ParentPackage = initial; } record.Product = products.FirstOrDefault(i => i.ItemId == record.PackageItemId); record.Supplier = suppliers.FirstOrDefault(i => i.ItemId == record.SupplierId); } } _resultArray.AddRange(records); } } catch (Exception ex) { Program.Provider.Logger.Log("Error while load Quotations", ex); } AnimatedThreadWorker.ReportProgress(20, "calculation Quotations"); AnimatedThreadWorker.ReportProgress(70, "filter Quotations"); AnimatedThreadWorker.ReportProgress(100, "Complete"); }