Пример #1
0
        /*==================================================================================================================================
        * Private Methods
        *=================================================================================================================================*/
        private questStatus initialize()
        {
            // Initialize
            questStatus status = null;

            try
            {
                _dbLookupsMgr = new DbLookupsMgr(this.UserSession);
            }
            catch (System.Exception ex)
            {
                status = new questStatus(Severity.Fatal, String.Format("EXCEPTION: {0}.{1}: {2}",
                                                                       this.GetType().ToString(), MethodInfo.GetCurrentMethod().Name, ex.Message));
                throw new System.Exception(status.Message, ex);
            }
            return(new questStatus(Severity.Success));
        }
Пример #2
0
        /*==================================================================================================================================
        * Properties
        *=================================================================================================================================*/
        #endregion


        #region Public Methods

        /*==================================================================================================================================
        * Public Methods
        *=================================================================================================================================*/
        public questStatus GetLookupOptions(LookupRequest lookupRequest, List <LookupArgument> lookupArgumentList, out List <OptionValuePair> lookupOptionList)
        {
            // Initialize
            questStatus status = null;

            lookupOptionList = null;



            // Get the lookup.
            Lookup       lookup       = null;
            DbLookupsMgr dbLookupsMgr = new DbLookupsMgr(this.UserSession);

            status = dbLookupsMgr.Read(lookupRequest.LookupId, out lookup);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }


            // Get the database.
            DatabaseId databaseId = new DatabaseId(lookup.DatabaseId);

            Quest.Functional.MasterPricing.Database database = null;
            DbDatabasesMgr dbDatabasesMgr = new DbDatabasesMgr(this.UserSession);

            status = dbDatabasesMgr.Read(databaseId, out database);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Apply lookup arguments.
            if (lookupArgumentList == null)
            {
                lookupArgumentList = new List <LookupArgument>();
            }
            string sql = lookup.SQL;

            foreach (LookupArgument lookupArgument in lookupArgumentList)
            {
                sql = sql.Replace(lookupArgument.Name, lookupArgument.Value);
            }

            try
            {
                using (SqlConnection conn = new SqlConnection(database.ConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(null, conn))
                    {
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandText = sql;
                        using (SqlDataReader rdr = cmd.ExecuteReader())
                        {
                            lookupOptionList = new List <OptionValuePair>();
                            while (rdr.Read())
                            {
                                dynamic resultRow = null;
                                status = GetRow(rdr, out resultRow);
                                if (!questStatusDef.IsSuccess(status))
                                {
                                    return(status);
                                }
                                OptionValuePair optionValuePair = new OptionValuePair();

                                try
                                {
                                    string _lookupKeyField = lookup.KeyField.Replace("[", "").Replace("]", "");
                                    optionValuePair.Id = ((IDictionary <string, object>)resultRow)[_lookupKeyField].ToString();
                                }
                                catch (System.Exception)
                                {
                                    return(new questStatus(Severity.Error, String.Format("ERROR: Lookup key field {0} not found in key SQL {1}",
                                                                                         lookup.KeyField, lookup.SQL)));
                                }
                                string[]      textFieldList = lookup.TextFields.Split(',');
                                StringBuilder sbOptionText  = new StringBuilder();
                                for (int idx = 0; idx < textFieldList.Length; idx += 1)
                                {
                                    string textField = textFieldList[idx];
                                    try
                                    {
                                        string _textField = textField.Replace("[", "").Replace("]", "");
                                        sbOptionText.Append(((IDictionary <string, object>)resultRow)[_textField]);
                                        if (idx + 1 < textFieldList.Length)
                                        {
                                            sbOptionText.Append(" - ");
                                        }
                                    }
                                    catch (System.Exception)
                                    {
                                        return(new questStatus(Severity.Error, String.Format("ERROR: Lookup text field {0} not found in key SQL {1}",
                                                                                             textField, lookup.SQL)));
                                    }
                                    optionValuePair.Label = sbOptionText.ToString();
                                }
                                lookupOptionList.Add(optionValuePair);
                            }
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                status = new questStatus(Severity.Fatal, String.Format("EXCEPTION: {0}.{1}: {2}",
                                                                       this.GetType().ToString(), MethodInfo.GetCurrentMethod().Name, ex.Message));
                return(status);
            }


            // Apply filter if specified
            if (lookupRequest.FilterItemId != null && lookupRequest.FilterItemId.Id >= BaseId.VALID_ID)
            {
                List <OptionValuePair> filteredLookupOptionList = null;
                status = ApplyFilterToLookResults(lookupRequest, lookupOptionList, out filteredLookupOptionList);
                if (!questStatusDef.IsSuccess(status))
                {
                    return(status);
                }
                lookupOptionList = filteredLookupOptionList;
            }
            return(new questStatus(Severity.Success));
        }