Пример #1
0
        protected static FR_L3ABDA_GAAfSC_1147 Execute(DbConnection Connection, DbTransaction Transaction, P_L3ABDA_GAAfSC_1147 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L3ABDA_GAAfSC_1147();
            returnValue.Result = new L3ABDA_GAAfSC_1147();

            #region Check ABDA Catalog Subscription

            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);
            }

            #endregion

            string query = new QueryBuilder <Product>()
                           .From(Parameter.FromArticle)
                           .Size(Parameter.NumberOfArticles)
                           .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.GetConditionForSearchText(Parameter.Conditions.PZNOrName)))
                                              .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.UNIT)).Query(SearchCondition.GetConditionForSearchText(Parameter.Conditions.Unit)))
                                              .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.DOSAGE_FORM)).Query(SearchCondition.GetConditionForSearchText(Parameter.Conditions.DosageForm)))
                                              .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.SUBSTANCE)).Query(SearchCondition.GetConditionForSearchText(Parameter.Conditions.ActiveComponent)))
                                              .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.PRODUCER)).Query(SearchCondition.GetConditionForSearchText(Parameter.Conditions.ProducerName)))
                                              .Prefix(p => p.Field(SearchCondition.GetFiledName(ProductField.NAME_TOKEN)).Prefix(Parameter.Conditions.ProductNameStartWith))
                                              )
                                        )
                                  )
                           .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();

            if ((bool)Parameter.Conditions.IsDefaultStock)
            {
                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);
                returnValue.Result.Articles = resWithITLS.ProductDetails.Where(x => Parameter.Conditions.ProducerName == string.Empty || x.Producer.ToLower().Contains(Parameter.Conditions.ProducerName.ToLower()))
                                              .Where(x => (Parameter.Conditions.DosageForm == string.Empty) || (x.Healthcare.DosageForm != null && x.Healthcare.DosageForm.ToLower().Contains(Parameter.Conditions.DosageForm.ToLower())))
                                              .Where(x => Parameter.Conditions.PZNOrName == string.Empty || x.Name.ToLower().Contains(Parameter.Conditions.PZNOrName.ToLower()) || x.Code.ToLower().Contains(Parameter.Conditions.PZNOrName.ToLower()))
                                              .Where(x => Parameter.Conditions.Unit == string.Empty || x.Packaging.Unit.ToLower().Contains(Parameter.Conditions.Unit.ToLower()))
                                              .ToArray();
            }
            else
            {
                ProductQueryRequest request = new ProductQueryRequest()
                {
                    CatalogCode = catalogITL
                };
                var res = ProductService.QueryProducts(request, query);
                returnValue.Result.Articles = res.Documents.ToArray();
            }

            return(returnValue);

            #endregion UserCode
        }
Пример #2
0
        protected static FR_L3ABDA_GAAfAS_1256_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L3ABDA_GAAfAS_1256 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L3ABDA_GAAfAS_1256_Array();

            #region Check ABDA Catalog Subscription

            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);
            }

            #endregion

            var searchCondition = Parameter.SearchCondition;
            if (!searchCondition.Contains("*"))
            {
                searchCondition = String.Format("*{0}*", searchCondition);
            }

            string query = new QueryBuilder <Product>()
                           .From(0)
                           .Size(10000)
                           .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.GetConditionForSearchText(Parameter.SearchCondition)))
                                              )
                                        )
                                  )
                           .Sort(s => s
                                 .Field(SearchCondition.GetFiledName(ProductField.NAME), PlainElastic.Net.SortDirection.asc))
                           .BuildBeautified();

            var ProductService = CatalogServiceFactory.GetProductService();


            ProductQueryRequest request = new ProductQueryRequest()
            {
                CatalogCode = catalogITL
            };


            SearchResult <Product> res = ProductService.QueryProducts(request, query);


            var retrievedProducts = res.Documents.ToList();
            var abdaProducts      = new List <L3ABDA_GAAfAS_1256>();
            foreach (var product in retrievedProducts)
            {
                abdaProducts.Add(new L3ABDA_GAAfAS_1256()
                {
                    ProductITL    = product.ProductITL,
                    ProductNumber = product.Code,
                    ProductName   = product.Name
                });
            }

            returnValue.Result = abdaProducts.ToArray();

            return(returnValue);

            #endregion UserCode
        }
Пример #3
0
        private static List <L5PR_GPwCPbSCfT_1237> GetProductsWithSearchCriteria(DbConnection Connection, DbTransaction Transaction, P_L5PR_GCPfCAfT_1705 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket, List <L5PR_GPwCPbSCfT_1237> retValProducts, IProductService _service, ProductQueryRequest request)
        {
            #region Search by ProductName and ProductNumber
            var query = new QueryBuilder <Product>()
                        .From(Parameter.IncludedProductsCountFromLastCatalog)
                        .Size(Parameter.Size)
                        .Query(q => q
                               .Bool(b => b
                                     .Must(m => m
                                           .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.NAME)).Query(SearchCondition.GetConditionForSearchText(Parameter.SearchCriteria)))
                                           )
                                     )
                               )
                        .BuildBeautified();

            var result = _service.QueryProducts <Product>(request, query);

            retValProducts = PopulateProductList(retValProducts, result, Parameter);

            if (retValProducts.Count < Parameter.Size)
            {
                query = new QueryBuilder <Product>()
                        .From(0)
                        .Size(Parameter.Size - retValProducts.Count)
                        .Query(q => q
                               .Bool(b => b
                                     .Must(m => m
                                           .QueryString(qs => qs.Fields(SearchCondition.GetFiledName(ProductField.CODE)).Query(SearchCondition.GetConditionForSearchText(Parameter.SearchCriteria)))
                                           )
                                     )
                               )
                        .BuildBeautified();

                result = _service.QueryProducts <Product>(request, query);

                retValProducts = PopulateProductList(retValProducts, result, Parameter);
            }
            #endregion

            if (Parameter.CatalogsToInclude != null && Parameter.CatalogsToInclude.Count() > 0)
            {
                var leftedCatalogs = Parameter.CatalogsToInclude.SkipWhile(x => x.CatalogITL != Parameter.LastIncludedCatalog.CatalogITL).ToList();
                if (retValProducts.Count < Parameter.Size && leftedCatalogs.Count > 1)
                {
                    var nextCatalog = leftedCatalogs[1];
                    P_L5PR_GCPfCAfT_1705 newParam = new P_L5PR_GCPfCAfT_1705();
                    newParam.From = 0;
                    newParam.Size = Parameter.Size - retValProducts.Count;
                    newParam.IncludedProductsCountFromLastCatalog = 0;
                    newParam.LastIncludedCatalog = nextCatalog;
                    newParam.CatalogsToInclude   = Parameter.CatalogsToInclude;
                    newParam.SearchCriteria      = Parameter.SearchCriteria;
                    newParam.LanguageID          = Parameter.LanguageID;

                    retValProducts.AddRange(cls_Get_Catalogs_Products_from_CatalogAPI_for_Tenant.Invoke(Connection, Transaction, newParam, securityTicket).Result.Products);
                }
            }

            return(retValProducts);
        }