protected static FR_L3ABDA_GAPfSC_1435 Execute(DbConnection Connection, DbTransaction Transaction, P_L3ABDA_GAPfSC_1435 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L3ABDA_GAPfSC_1435(); returnValue.Result = new L3ABDA_GAPfSC_1435(); returnValue.Result.Result = new ABDASearchResult(); returnValue.Result.Result.Products = new List <ABDAProduct>(); string catalogITL = EnumUtils.GetEnumDescription(EPublicCatalogs.ABDA); var sbsCatalog = ORM_CMN_PRO_SubscribedCatalog.Query.Search(Connection, Transaction, new ORM_CMN_PRO_SubscribedCatalog.Query() { CatalogCodeITL = catalogITL, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).FirstOrDefault(); if (sbsCatalog == null) { return(returnValue); } string query = new QueryBuilder <Product>() .From(Parameter.pageIndex * Parameter.pageSize) .Size(Parameter.pageSize) .Query(q => q .Bool(b => b .Must(m => m .QueryString(qs => qs.Fields(new string[] { SearchCondition.GetFiledName(ProductField.NAME), SearchCondition.GetFiledName(ProductField.CODE) }) .Query(SearchCondition.GetQueryForField(Parameter.Conditions, ProductField.NAME))) .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.CODE)).Query(SearchCondition.GetQueryForField(Parameter.Conditions, ProductField.CODE))) .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.UNIT)).Query(SearchCondition.GetQueryForField(Parameter.Conditions, ProductField.UNIT))) .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.DOSAGE_FORM)).Query(SearchCondition.GetQueryForField(Parameter.Conditions, ProductField.DOSAGE_FORM))) .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.SUBSTANCE)).Query(SearchCondition.GetQueryForField(Parameter.Conditions, ProductField.SUBSTANCE))) .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.DISTRIBUTION_STATUS)).Query(SearchCondition.GetQueryForField(Parameter.Conditions, ProductField.DISTRIBUTION_STATUS))) .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.PRODUCER)).Query(SearchCondition.GetQueryForField(Parameter.Conditions, ProductField.PRODUCER))) .Prefix(p => p.Field(SearchCondition.GetFiledName(ProductField.NAME_TOKEN)).Prefix(SearchCondition.GetPrefixForField(Parameter.Conditions, ProductField.NAME_TOKEN))) ) ) ) .Sort(s => s .Field(SearchCondition.GetFiledName(Parameter.Order.field), (Parameter.Order.order == SortingOrder.ASC) ? PlainElastic.Net.SortDirection.asc : PlainElastic.Net.SortDirection.desc)) .BuildBeautified(); var ProductService = CatalogServiceFactory.GetProductService(); List <Product> retrievedProducts = new List <Product>(); int hitsTotal; bool IsPartOFDefaultStock = Parameter.Conditions.Any(x => x.field == ProductField.IS_PART_OF_DEFAULT_STOCK && x.query == "true"); if (IsPartOFDefaultStock) { List <string> ITLs = new List <string>(); ITLs = cls_Get_ITLS_for_Products_HaveFlag_IsProductPartOfDefaultStock.Invoke(Connection, Transaction, securityTicket).Result.Select(x => x.ProductITL).ToList(); ProductDetailsRequest requestWithITLS = new ProductDetailsRequest { CatalogCode = catalogITL, ProductIDs = ITLs }; var resWithITLS = ProductService.GetProductDetails(requestWithITLS); retrievedProducts = resWithITLS.ProductDetails. Where(x => !Parameter.Conditions.Any(y => y.field == ProductField.PRODUCER && !string.IsNullOrEmpty(y.query)) || x.Producer.ToLower().Contains(Parameter.Conditions.SingleOrDefault(y => y.field == ProductField.PRODUCER).query.ToLower())) .Where(x => !(Parameter.Conditions.Any(y => y.field == ProductField.DOSAGE_FORM && !string.IsNullOrEmpty(y.query))) || (x.Healthcare.DosageForm != null && x.Healthcare.DosageForm.ToLower().Contains(Parameter.Conditions.SingleOrDefault(y => y.field == ProductField.DOSAGE_FORM).query.ToLower()))) .Where(x => !Parameter.Conditions.Any(y => y.field == ProductField.NAME && !string.IsNullOrEmpty(y.query)) || x.Name.ToLower().Contains(Parameter.Conditions.SingleOrDefault(y => y.field == ProductField.NAME).query.ToLower())) .Where(x => !Parameter.Conditions.Any(y => y.field == ProductField.CODE && !string.IsNullOrEmpty(y.query)) || x.Code.ToLower().Contains(Parameter.Conditions.SingleOrDefault(y => y.field == ProductField.CODE).query.ToLower())) .Where(x => !Parameter.Conditions.Any(y => y.field == ProductField.UNIT && !string.IsNullOrEmpty(y.query)) || x.Packaging.Unit.ToLower().Contains(Parameter.Conditions.SingleOrDefault(y => y.field == ProductField.UNIT).query.ToLower())) .ToList(); hitsTotal = retrievedProducts.Count(); } else { ProductQueryRequest request = new ProductQueryRequest() { CatalogCode = catalogITL }; var res = ProductService.QueryProducts(request, query); hitsTotal = res.hits.total; retrievedProducts = res.Documents.ToList(); } var catalogInfoRequest = new CatalogInfoRequest() { CatalogCode = catalogITL }; var catalogService = CatalogServiceFactory.GetCatalogService(); var catalogInfo = catalogService.GetCatalogInfo(catalogInfoRequest); // Find currency symbol var currencySymbol = string.Empty; if (catalogInfo != null && catalogInfo.CatalogInfo != null) { var currency = CL1_CMN.ORM_CMN_Currency.Query.Search(Connection, Transaction, new CL1_CMN.ORM_CMN_Currency.Query { ISO4127 = catalogInfo.CatalogInfo.Currency, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).SingleOrDefault(); if (currency != null) { currencySymbol = currency.Symbol; } } #region GetStandartPrices L3PR_GSPfPITLL_1258 standardPrices = new L3PR_GSPfPITLL_1258(); if (retrievedProducts.Count() != 0) { var spParam = new P_L3PR_GSPfPITLL_1258() { ProductITLList = retrievedProducts.Select(i => i.ProductITL).ToArray() }; standardPrices = cls_Get_StandardPrices_for_ProductITLList.Invoke(Connection, Transaction, spParam, securityTicket).Result; } #endregion // Set ABDA products from Catalog Products var abdaProducts = new List <ABDAProduct>(); foreach (var product in retrievedProducts) { var abdaProduct = new ABDAProduct(); abdaProduct.Product = product; abdaProduct.ABDAPrice = product.GetDefaultPrice(); abdaProduct.Prices = standardPrices.Prices.Where(i => i.ProductITL == product.ProductITL).SingleOrDefault(); abdaProduct.CurrencySymbol = currencySymbol; abdaProduct.Producer = product.Producer; abdaProducts.Add(abdaProduct); } // Set ABDA results returnValue.Result.Result = new ABDASearchResult() { hitCount = hitsTotal, Products = abdaProducts }; return(returnValue); #endregion UserCode }
protected static FR_L3AR_GAMTMfSC_1131 Execute(DbConnection Connection, DbTransaction Transaction, P_L3AR_GAMTMfSC_1131 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L3AR_GAMTMfSC_1131(); returnValue.Result = new L3AR_GAMTMfSC_1131(); #region GetAbdaArticles var abdaParam = new P_L3ABDA_GAAMTMfSC_1714() { Conditions = Parameter.Conditions, Order = Parameter.Order, FromArticle = Parameter.FromArticle, NumberOfArticles = Parameter.NumberOfArticles, }; var abdaResult = cls_Get_ABDA_ArticlesMainTableModel_for_SearchContitions.Invoke(Connection, Transaction, abdaParam, securityTicket).Result.Articles; #endregion #region GetLocalArticles //if false, we should return all articles Nullable <Boolean> isPartOfDefaultStock = null; if (Parameter.Conditions.IsDefaultStock != null && (Boolean)Parameter.Conditions.IsDefaultStock) { isPartOfDefaultStock = true; } var localParam = new P_L3AR_GLAfSC_1320(); localParam.LanguageID = Parameter.LanguageID; localParam.ProductNameStartWith = Parameter.Conditions.ProductNameStartWith; localParam.ActiveComponentStartWith = Parameter.Conditions.ActiveComponentStartWith; localParam.PZNOrName = LocalDBSearchCondition.GetConditionForSearchText(Parameter.Conditions.PZNOrName); localParam.DosageForm = LocalDBSearchCondition.GetConditionForSearchText(Parameter.Conditions.DosageForm); localParam.Unit = LocalDBSearchCondition.GetConditionForSearchText(Parameter.Conditions.Unit); localParam.ProducerName = LocalDBSearchCondition.GetConditionForSearchText(Parameter.Conditions.ProducerName); localParam.ActiveComponent = LocalDBSearchCondition.GetConditionForSearchText(Parameter.Conditions.ActiveComponent); localParam.IsAvailableForOrdering = Parameter.Conditions.IsAvailableForOrdering; localParam.IsDefaultStock = isPartOfDefaultStock; var localArticles = cls_Get_LocalArticles_for_SearchConditions.Invoke(Connection, Transaction, localParam, securityTicket).Result; switch (Parameter.Order.field) { case ProductField.CODE: localArticles = localArticles.Where(i => i.Product_Number.CompareTo(Parameter.SortingCriteriaLastItem) > 0).ToArray(); if (abdaResult.Count() == Parameter.NumberOfArticles) { localArticles = localArticles.Where(i => i.Product_Number.CompareTo(abdaResult.Last().ProductNumber) < 0).ToArray(); } break; case ProductField.NAME_TOKEN: localArticles = localArticles.Where(i => i.ProductName.CompareTo(Parameter.SortingCriteriaLastItem) > 0).ToArray(); if (abdaResult.Count() == Parameter.NumberOfArticles) { localArticles = localArticles.Where(i => i.ProductName.CompareTo(abdaResult.Last().ProductName) < 0).ToArray(); } break; case ProductField.PRODUCER: localArticles = localArticles.Where(i => i.ProducerName.CompareTo(Parameter.SortingCriteriaLastItem) > 0).ToArray(); if (abdaResult.Count() == Parameter.NumberOfArticles) { localArticles = localArticles.Where(i => i.ProducerName.CompareTo(abdaResult.Last().ProducerName) < 0).ToArray(); } break; case ProductField.DOSAGE_FORM: localArticles = localArticles.Where(i => i.DossageFormName.CompareTo(Parameter.SortingCriteriaLastItem) > 0).ToArray(); if (abdaResult.Count() == Parameter.NumberOfArticles) { localArticles = localArticles.Where(i => i.DossageFormName.CompareTo(abdaResult.Last().DosageFormName) < 0).ToArray(); } break; case ProductField.UNIT: localArticles = localArticles.Where(i => i.UnitIsoCode.CompareTo(Parameter.SortingCriteriaLastItem) > 0).ToArray(); if (abdaResult.Count() == Parameter.NumberOfArticles) { localArticles = localArticles.Where(i => i.UnitIsoCode.CompareTo(abdaResult.Last().Unit) < 0).ToArray(); } break; } #endregion #region Get StandartPrices for Local Articles L3PR_GSPfPITLL_1258 standardPrices = new L3PR_GSPfPITLL_1258(); if (localArticles.Count() != 0) { var spParam = new P_L3PR_GSPfPITLL_1258() { ProductITLList = localArticles.Select(i => i.ProductITL).ToArray() }; standardPrices = cls_Get_StandardPrices_for_ProductITLList.Invoke(Connection, Transaction, spParam, securityTicket).Result; } #endregion #region Prepare result for local articles List <ArticleMainTableModel> localResult = new List <ArticleMainTableModel>(); foreach (var article in localArticles) { var standardPrice = standardPrices.Prices.Single(i => i.ProductITL == article.ProductITL); var product = new ArticleMainTableModel(); product.ProductID = article.CMN_PRO_ProductID; product.ProductITL = article.ProductITL; product.ProductName = article.ProductName; product.ProductNumber = article.Product_Number; product.DosageFormName = article.DossageFormName; product.Unit = article.UnitIsoCode; product.UnitAmount = article.UnitAmount_DisplayLabel; product.ABDAPrice = standardPrice == null ? 0 : standardPrice.AbdaPrice; product.SalesPrice = standardPrice == null ? 0 : standardPrice.SalesPrice; product.ProducerName = article.ProducerName; product.ActiveComponents = new List <ActiveComponents>(); localResult.Add(product); } #endregion var result = new List <ArticleMainTableModel>(); result.AddRange(abdaResult); result.AddRange(localResult); #region Append Free Quantity var quantityParam = new P_L3AR_GAQfP_1028() { ProductIDList = result.Select(i => i.ProductID).Where(j => j != Guid.Empty).ToArray() }; var quantities = new List <L3AR_GAQfP_1028>(); if (quantityParam.ProductIDList.Count() > 0) { quantities = cls_Get_ArticlesQuantities_for_ProductIDList.Invoke(Connection, Transaction, quantityParam, securityTicket).Result.ToList(); } foreach (var item in result) { var quantity = quantities.SingleOrDefault(i => i.Product_RefID == item.ProductID); if (quantity != null) { item.FreeStockQuantity = quantity.FreeQuantity; } } #endregion #region Sort Result if (Parameter.Order.order == SortingOrder.ASC) { switch (Parameter.Order.field) { case ProductField.CODE: result = result.OrderBy(i => i.ProductNumber).ToList(); break; case ProductField.NAME_TOKEN: result = result.OrderBy(i => i.ProductName).ToList(); break; case ProductField.PRODUCER: result = result.OrderBy(i => i.ProducerName).ToList(); break; case ProductField.DOSAGE_FORM: result = result.OrderBy(i => i.DosageFormName).ToList(); break; case ProductField.UNIT: result = result.OrderBy(i => i.Unit).ToList(); break; } } else { switch (Parameter.Order.field) { case ProductField.CODE: result = result.OrderByDescending(i => i.ProductNumber).ToList(); break; case ProductField.NAME_TOKEN: result = result.OrderByDescending(i => i.ProductName).ToList(); break; case ProductField.PRODUCER: result = result.OrderByDescending(i => i.ProducerName).ToList(); break; case ProductField.DOSAGE_FORM: result = result.OrderByDescending(i => i.DosageFormName).ToList(); break; case ProductField.UNIT: result = result.OrderByDescending(i => i.Unit).ToList(); break; } } #endregion returnValue.Result.Articles = result.ToArray(); return(returnValue); #endregion UserCode }
protected static FR_L3ABDA_GAAMTMfSC_1714 Execute(DbConnection Connection, DbTransaction Transaction, P_L3ABDA_GAAMTMfSC_1714 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L3ABDA_GAAMTMfSC_1714(); returnValue.Result = new L3ABDA_GAAMTMfSC_1714(); #region GetAbdaArticles var abdaParam = new P_L3ABDA_GAAfSC_1147() { Conditions = Parameter.Conditions, Order = Parameter.Order, FromArticle = Parameter.FromArticle, NumberOfArticles = Parameter.NumberOfArticles, }; var abdaArticles = cls_Get_ABDA_Articles_for_SearchConditions.Invoke(Connection, Transaction, abdaParam, securityTicket).Result.Articles; #endregion #region GetStandartPrices L3PR_GSPfPITLL_1258 standardPrices = new L3PR_GSPfPITLL_1258(); if (abdaArticles.Count() != 0) { var spParam = new P_L3PR_GSPfPITLL_1258() { ProductITLList = abdaArticles.Select(i => i.ProductITL).ToArray() }; standardPrices = cls_Get_StandardPrices_for_ProductITLList.Invoke(Connection, Transaction, spParam, securityTicket).Result; } #endregion #region Get All Articles From OmniDB var omniDBArticles = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product.Query() { Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); #endregion #region Prepare result List <ArticleMainTableModel> abdaResult = new List <ArticleMainTableModel>(); foreach (var article in abdaArticles) { var standardPrice = standardPrices.Prices.SingleOrDefault(i => i.ProductITL == article.ProductITL); var omniDBArticle = omniDBArticles.SingleOrDefault(i => i.ProductITL == article.ProductITL); var product = new ArticleMainTableModel(); product.ProductID = (omniDBArticle != null) ? omniDBArticle.CMN_PRO_ProductID : Guid.Empty; product.ProductITL = article.ProductITL; product.ProductName = article.Name; product.ProductNumber = article.Code; product.DosageFormName = article.Healthcare.DosageForm; product.Unit = article.Packaging.Unit; product.UnitAmount = article.Packaging.Amount; product.ABDAPrice = article.GetDefaultPrice().Value; product.SalesPrice = standardPrice == null ? 0 : standardPrice.SalesPrice; product.ProducerName = article.Producer; product.ActiveComponents = new List <ActiveComponents>(); foreach (var ac in article.Healthcare.Components) { foreach (var sub in ac.Substances) { product.ActiveComponents.Add( new ActiveComponents { SubstanceName = sub.Name, IsActive = sub.Active }); } } abdaResult.Add(product); } #endregion returnValue.Result.Articles = abdaResult.ToArray(); return(returnValue); #endregion UserCode }