예제 #1
0
        public IList <AccountLang> FindAutoComplete(string prefixText, AccountAutoCompleteParameter param)
        {
            QueryParameterBuilder queryParameterBuilder = new QueryParameterBuilder();
            StringBuilder         sqlBuilder            = new StringBuilder();

            sqlBuilder.Append(" select distinct ac.AccountID as AccountID, ac.AccountCode as AccountCode, acl.AccountName as AccountName ");
            sqlBuilder.Append(" from DbAccount ac ");
            sqlBuilder.Append(" inner join DbAccountLang acl on acl.AccountID = ac.AccountID and acl.LanguageID = :LanguageID ");
            sqlBuilder.Append(" inner join dbo.DbAccountCompany accC ");
            sqlBuilder.Append(" on accC.AccountID = ac.AccountID  ");
            sqlBuilder.Append(" inner join DbExpenseGroup exG ");
            sqlBuilder.Append(" on exG.ExpenseGroupID = ac.ExpenseGroupID ");

            StringBuilder whereClauseBuilder = new StringBuilder();

            whereClauseBuilder.Append(" and ac.Active = 1 ");
            if (!string.IsNullOrEmpty(prefixText))
            {
                whereClauseBuilder.Append(" and ((ac.AccountCode Like :Account) or (acl.AccountName Like :Account)) ");
                queryParameterBuilder.AddParameterData("Account", typeof(string), String.Format("0000{0}%", prefixText));
            }
            if ((param.ExpenseGroupID) != null && param.ExpenseGroupID > 0)
            {
                whereClauseBuilder.Append(" and ac.ExpenseGroupID = :ExpenseGroupID ");
                queryParameterBuilder.AddParameterData("ExpenseGroupID", typeof(string), param.ExpenseGroupID);
            }
            if ((param.CompanyID) != null && param.CompanyID > 0)
            {
                whereClauseBuilder.Append(" and accC.CompanyID = :CompanyID ");
                queryParameterBuilder.AddParameterData("CompanyID", typeof(long), param.CompanyID);
            }
            if (!string.IsNullOrEmpty(param.WithoutExpenseCode))
            {
                whereClauseBuilder.Append(" and ac.AccountCode not in (" + param.WithoutExpenseCode + ") ");
            }

            if (!string.IsNullOrEmpty(whereClauseBuilder.ToString()))
            {
                sqlBuilder.Append(String.Format(" where 1=1 {0} ", whereClauseBuilder.ToString()));
            }

            queryParameterBuilder.AddParameterData("LanguageID", typeof(Int16), param.LanguageID);

            ISQLQuery query = GetCurrentSession().CreateSQLQuery(sqlBuilder.ToString());

            queryParameterBuilder.FillParameters(query);

            query.AddScalar("AccountID", NHibernateUtil.Int64)
            .AddScalar("AccountCode", NHibernateUtil.String)
            .AddScalar("AccountName", NHibernateUtil.String);

            query.SetResultTransformer(Transformers.AliasToBean(typeof(AccountLang)));
            IList <AccountLang> list = query.List <AccountLang>();

            return(list);
        }
예제 #2
0
        public void SerializeParameter()
        {
            AccountAutoCompleteParameter parameter = new AccountAutoCompleteParameter();

            parameter.LanguageID         = UserAccount.CurrentLanguageID;
            parameter.CompanyID          = this.CompanyID;
            parameter.WithoutExpenseCode = this.WithoutExpenseCode;

            JavaScriptSerializer serializer = new JavaScriptSerializer();

            ctlAccountTextAutoComplete.ContextKey    = serializer.Serialize(parameter);
            ctlAccountTextAutoComplete.UseContextKey = true;
        }
예제 #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            ctlAccountAutoCompleteUpdatePanel.Update();
            ctlAccountTextAutoComplete.BehaviorID = String.Format("AccountAutoCompleteEx{0}", ctlAccountCode.ClientID);
            SetAutoCompleteEvent();

            AccountAutoCompleteParameter parameter = new AccountAutoCompleteParameter();

            parameter.LanguageID         = UserAccount.CurrentLanguageID;
            parameter.CompanyID          = this.CompanyID;
            parameter.WithoutExpenseCode = this.WithoutExpenseCode;

            JavaScriptSerializer serializer = new JavaScriptSerializer();

            ctlAccountTextAutoComplete.ContextKey    = serializer.Serialize(parameter);
            ctlAccountTextAutoComplete.UseContextKey = true;
        }
        public string[] GetAccountList(string prefixText, int count, string contextKey)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            // AutoCompleteParameter is a ValueObject DTO that used in AutoComplete only
            AccountAutoCompleteParameter parameter = serializer.Deserialize <AccountAutoCompleteParameter>(contextKey);

            // Retreive Query Object from Spring
            IDbAccountQuery DbAccountQuery = (IDbAccountQuery)ContextRegistry.GetContext().GetObject("DbAccountQuery");

            // Return type of FindAutoComplete method must be a ValueObject only
            IList <AccountLang> list = DbAccountQuery.FindAutoComplete(prefixText, parameter);

            List <string> items = new List <string>(list.Count);

            foreach (AccountLang ac in list)
            {
                // Serialize ValueObject to JSON String and set it to AutoCompleteItem's Value
                string item = AutoCompleteExtender.CreateAutoCompleteItem(String.Format("[{0}]{1}", ac.AccountCode, ac.AccountName), serializer.Serialize(ac));
                items.Add(item);
            }

            return(items.ToArray());
        }