示例#1
0
        internal dynamic Search(Navigation_DTO_Search dto)
        {
            //The ExecuteReaderProcedure method requires that the parameters be contained in a List<ADO_inputParams>
            List <ADO_inputParams> paramList = new List <ADO_inputParams>()
            {
                new ADO_inputParams()
                {
                    name = "@LngIsoCode", value = dto.LngIsoCode
                }
            };

            ADO_inputParams param = new ADO_inputParams()
            {
                name = "@Search", value = dto.SearchTerms
            };

            param.typeName = "KeyValueVarcharAttribute";
            paramList.Add(param);
            //We need a count of search terms (ignoring duplicates caused by singularisation)


            //Call the stored procedure
            ADO_readerOutput output = ado.ExecuteReaderProcedure("System_Navigation_Search", paramList);

            return(output.data);
        }
示例#2
0
        /// <summary>
        /// Checks for a given Privilege Code if there are at least one account with that privilege
        /// </summary>
        /// <param name="ado"></param>
        /// <param name="prvCode"></param>
        /// <returns></returns>
        internal bool EnoughPrivilegesInAccounts(ADO ado, string prvCode)
        {
            ADO_inputParams param = new ADO_inputParams();

            param.name  = "@PrvCode";
            param.value = prvCode;

            List <ADO_inputParams> paramList = new List <ADO_inputParams>();

            paramList.Add(param);

            // A return parameter is required for the operation
            ADO_returnParam retParam = new ADO_returnParam();

            retParam.name  = "return";
            retParam.value = 0;
            ado.ExecuteNonQueryProcedure("Security_Account_PrivilegeCount", paramList, ref retParam);;

            if (retParam.value > 1)
            {
                //There is more than one of the privilege in the account table
                return(true);
            }
            else
            {
                //There is one or fewer of the privileges in the account table
                return(false);
            }
        }
示例#3
0
        internal dynamic ReadSearchResults(DataTable dtMatrixResults, string lngIsoCode)
        {
            List <ADO_inputParams> paramList = new List <ADO_inputParams>()
            {
                new ADO_inputParams()
                {
                    name = "@LngIsoCode", value = lngIsoCode
                },
                new ADO_inputParams()
                {
                    name = "@DefaultLngIsoCode", value = Configuration_BSO.GetCustomConfig(ConfigType.global, "language.iso.code")
                }
            };

            ADO_inputParams param = new ADO_inputParams()
            {
                name = "@Result", value = dtMatrixResults
            };

            param.typeName = "KeyValueVarcharAttribute";
            paramList.Add(param);

            //Call the stored procedure
            ADO_readerOutput output = ado.ExecuteReaderProcedure("System_Navigation_Search_Read", paramList);

            return(output.data);
        }
示例#4
0
        /// <summary>
        /// Reads Group and Account information for a supplied list of Group Codes
        /// </summary>
        /// <param name="ado"></param>
        /// <param name="groups"></param>
        /// <returns></returns>
        internal ADO_readerOutput ReadMultiple(ADO ado, List <string> groups)
        {
            ADO_readerOutput output = new ADO_readerOutput();

            List <ADO_inputParams> paramList = new List <ADO_inputParams>();

            DataTable dt = new DataTable();

            //dt.Columns.Add("K_VALUE");
            //dt.Columns.Add("Key");
            dt.Columns.Add("Value");

            //We can now add each search term as a row in the table
            foreach (string group in groups)
            {
                var row = dt.NewRow();
                //row["K_VALUE"] = word;
                //row["Key"] = null;
                row["Value"] = group;
                dt.Rows.Add(row);
            }

            ADO_inputParams param = new ADO_inputParams()
            {
                name = "@GroupList", value = dt
            };

            param.typeName = "ValueVarchar";
            paramList.Add(param);

            //Call the stored procedure
            output = ado.ExecuteReaderProcedure("Security_GroupAccount_ReadMultiple", paramList);

            //Read the result of the call to the database
            if (output.hasData)
            {
                Log.Instance.Debug("Data found");
            }
            else
            {
                //No data found
                Log.Instance.Debug("No data found");
            }

            //return the list of entities that have been found
            return(output);
        }
示例#5
0
        /// <summary>
        /// Gets Data parameters based on column and parameter
        /// </summary>
        /// <param name="aList"></param>
        /// <param name="columnName"></param>
        /// <param name="paramName"></param>
        /// <param name="paramType"></param>
        /// <returns></returns>
        internal ADO_inputParams GetDataTableParam(IList <string> aList, string columnName, string paramName, string paramType)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add(columnName);

            foreach (string item in aList)
            {
                var row = dt.NewRow();
                row[columnName] = item;
                dt.Rows.Add(row);
            }

            ADO_inputParams param = new ADO_inputParams()
            {
                name = paramName, value = dt, typeName = paramType
            };

            return(param);
        }
示例#6
0
        /// <summary>
        /// Search method
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        internal ADO_readerOutput Search(Classification_DTO_Search dto)
        {
            var inputParams = new List <ADO_inputParams>();



            DataTable dt = new DataTable();

            dt.Columns.Add("Value");
            List <string> searchList = new List <string>(dto.Search.Split(' '));

            foreach (var s in searchList)
            {
                var row = dt.NewRow();
                row["Value"] = s;
                dt.Rows.Add(row);
            }
            ;


            ADO_inputParams param = new ADO_inputParams()
            {
                name = "@Search", value = dt
            };

            param.typeName = "ValueVarchar";
            inputParams.Add(param);


            if (dto.LngIsoCode != null)
            {
                inputParams.Add(new ADO_inputParams()
                {
                    name = "@LngIsoCode", value = dto.LngIsoCode
                });
            }

            var reader = ado.ExecuteReaderProcedure("Data_Classification_Search", inputParams);

            return(reader);
        }
示例#7
0
        /// <summary>
        /// Gets ADO parameters based on column names
        /// </summary>
        /// <param name="aList"></param>
        /// <param name="keyValueColumnNames"></param>
        /// <param name="paramName"></param>
        /// <param name="paramType"></param>
        /// <returns></returns>
        private ADO_inputParams GetDataTableParam(IList <KeyValuePair <string, string> > aList, KeyValuePair <string, string> keyValueColumnNames, string paramName, string paramType)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add(keyValueColumnNames.Key);
            dt.Columns.Add(keyValueColumnNames.Value);

            foreach (var item in aList)
            {
                var row = dt.NewRow();
                row[keyValueColumnNames.Key]   = item.Key;
                row[keyValueColumnNames.Value] = item.Value;
                dt.Rows.Add(row);
            }

            ADO_inputParams param = new ADO_inputParams()
            {
                name = paramName, value = dt, typeName = paramType
            };

            return(param);
        }
示例#8
0
        /// <summary>
        /// Search method
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        internal dynamic Search(Navigation_DTO_Search dto)
        {
            //Get a keyword extractor. The keyword extractor should, if possible, correspond to the supplied LngIsoCode
            //If an extractor is not found for the supplied LngIsoCode then a basic default extractor is supplied.
            Keyword_BSO_Extract kbe = new Keyword_BSO_Extract(dto.LngIsoCode);
            //  IKeywordExtractor extractor = kbe.GetExtractor();

            //Get a list of keywords based on the supplied search term
            List <string> searchList          = new List <string>();
            List <string> searchListInvariant = new List <string>();
            int           searchTermCount     = 0;

            if (dto.Search != null)
            {
                //Get a singularised version of each word
                searchList = kbe.ExtractSplitSingular(dto.Search);
                //We need a count of search terms (ignoring duplicates caused by singularisation)
                searchTermCount = searchList.Count;
                //Some words will not be searched for in their singular form (flagged on the table), so we need those as well
                searchListInvariant = kbe.ExtractSplit(dto.Search);
                //Eliminate duplicates from the list
                searchList = searchList.Union(searchListInvariant).ToList();
            }



            //The list of keywords must be supplied to the search stored procedure
            //In order to do this,  we pass a datatable as a parameter
            //First we create the table
            DataTable dt = new DataTable();

            dt.Columns.Add("Key");
            dt.Columns.Add("Value");
            dt.Columns.Add("Attribute");



            //Gather any synonyms and include them in the search, in the synonyms column
            foreach (string word in searchList)
            {
                var hitlist = kbe.extractor.SynonymList.Where(x => x.match == word.ToLower());
                if ((kbe.extractor.SynonymList.Where(x => x.match == word.ToLower())).Count() > 0)
                {
                    foreach (var syn in hitlist)
                    {
                        var row = dt.NewRow();
                        row["Key"]       = syn.lemma;
                        row["Value"]     = syn.match;
                        row["Attribute"] = Configuration_BSO.GetCustomConfig("search.synonym-multiplier");
                        dt.Rows.Add(row);
                    }
                }
                else
                {
                    var row = dt.NewRow();
                    row["Key"]       = word;
                    row["Value"]     = word;
                    row["Attribute"] = Configuration_BSO.GetCustomConfig("search.synonym-multiplier");
                    dt.Rows.Add(row);
                }
                //The main search term must be included along with the synonyms, i.e. a word is a synonym of itself
                //But with a higher search priority, which goes into the Attribute column
                var keyrow = dt.NewRow();
                if (dt.Select("Key = '" + word + "'").Count() == 0)
                {
                    keyrow["Key"]       = word;
                    keyrow["Value"]     = word;
                    keyrow["Attribute"] = Configuration_BSO.GetCustomConfig("search.search-word-multiplier");
                    dt.Rows.Add(keyrow);
                }
            }


            //Sort the search terms to ensure invariant word order in the search
            dt.DefaultView.Sort = "Key,Value asc";
            dt = dt.DefaultView.ToTable();


            //The ExecuteReaderProcedure method requires that the parameters be contained in a List<ADO_inputParams>
            List <ADO_inputParams> paramList = new List <ADO_inputParams>()
            {
                new ADO_inputParams()
                {
                    name = "@LngIsoCode", value = dto.LngIsoCode
                }
            };

            ADO_inputParams param = new ADO_inputParams()
            {
                name = "@Search", value = dt
            };

            param.typeName = "KeyValueVarcharAttribute";
            paramList.Add(param);
            //We need a count of search terms (ignoring duplicates caused by singularisation)
            paramList.Add(new ADO_inputParams()
            {
                name = "@SearchTermCount", value = searchTermCount
            });

            if (dto.MtrCode != null)
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@MtrCode", value = dto.MtrCode
                });
            }
            if (dto.MtrOfficialFlag != null)
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@MtrOfficialFlag", value = dto.MtrOfficialFlag
                });
            }
            if (dto.SbjCode != default(int))
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@SbjCode", value = dto.SbjCode
                });
            }
            if (dto.PrcCode != null)
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@PrcCode", value = dto.PrcCode
                });
            }
            if (dto.CprCode != null)
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@CprCode", value = dto.CprCode
                });
            }
            if (dto.RlsExceptionalFlag != null)
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@RlsExceptionalFlag", value = dto.RlsExceptionalFlag
                });
            }
            if (dto.RlsReservationFlag != null)
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@RlsReservationFlag", value = dto.RlsReservationFlag
                });
            }
            if (dto.RlsArchiveFlag != null)
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@RlsArchiveFlag", value = dto.RlsArchiveFlag
                });
            }
            if (dto.RlsAnalyticalFlag != null)
            {
                paramList.Add(new ADO_inputParams()
                {
                    name = "@RlsAnalyticalFlag", value = dto.RlsAnalyticalFlag
                });
            }



            //We store from the ADO because the search terms may have been changed by keyword rules
            MemCachedD_Value cache = MemCacheD.Get_ADO("PxStat.System.Navigation", "System_Navigation_Search", paramList); //

            if (cache.hasData)
            {
                return(cache.data.ToObject <List <dynamic> >());
            }



            //Call the stored procedure
            ADO_readerOutput output = ado.ExecuteReaderProcedure("System_Navigation_Search", paramList);

            MemCacheD.Store_ADO <dynamic>("PxStat.System.Navigation", "System_Navigation_Search", paramList, output.data, new DateTime(), Resources.Constants.C_CAS_NAVIGATION_SEARCH);
            //return the list of entities that have been found
            return(output.data);
        }