/*================================================================================================================================== * 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)); }
/*================================================================================================================================== * 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)); }