private InitiatorCriteria CreateCriteria()
        {
            List <DocumentInitiatorLang> documentInitiatorList = new List <DocumentInitiatorLang>();

            InitiatorCriteria FilterCriteria = new InitiatorCriteria();

            FilterCriteria.UserIDFilter = documentInitiatorList;
            return(FilterCriteria);
        }
        public IList <UserFavoriteInitiator> FindUserFavoriteInitiatorByUserID(InitiatorCriteria criteria, long UserID)
        {
            //ActoType = 2 : Initialtor
            QueryParameterBuilder parameterBuilder = new QueryParameterBuilder();
            StringBuilder         sqlBuilder       = new StringBuilder();

            sqlBuilder.Append("SELECT Row_Number() OVER(ORDER BY SuUserFavoriteActor.UserID DESC) as InitiatorSeq,  SuUserFavoriteActor.UserFavoriteActorID");
            sqlBuilder.Append(", SuUserFavoriteActor.UserID");
            sqlBuilder.Append(", SuUserFavoriteActor.ActorType");
            sqlBuilder.Append(", SuUserFavoriteActor.ActorUserID");
            sqlBuilder.Append(", SuUser.Email");
            sqlBuilder.Append(", SuUser.EmployeeName");
            sqlBuilder.Append(", SuUser.SMS");
            sqlBuilder.Append(" FROM  SuUserFavoriteActor LEFT OUTER JOIN");
            sqlBuilder.Append("    SuUser ON SuUserFavoriteActor.ActorUserID = SuUser.UserID ");
            sqlBuilder.Append(" WHERE SuUserFavoriteActor.UserID = :UserID");
            sqlBuilder.AppendFormat(" AND SuUserFavoriteActor.ActorType = {0}", "2");

            if (criteria.UserIDFilter != null && criteria.UserIDFilter.Count > 0)
            {
                string filter = "";
                foreach (DocumentInitiatorLang item in criteria.UserIDFilter)
                {
                    filter += "'" + item.UserID.ToString() + "',";
                }
                sqlBuilder.AppendFormat(" AND SuUserFavoriteActor.ActorUserID NOT IN ({0})", filter.TrimEnd(','));
            }
            sqlBuilder.Append(" ORDER BY SuUserFavoriteActor.ActorUserID ASC");

            parameterBuilder.AddParameterData("UserID", typeof(long), UserID);


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

            parameterBuilder.FillParameters(query);
            query.AddScalar("UserFavoriteActorID", NHibernateUtil.Int64)
            .AddScalar("UserID", NHibernateUtil.Int64)
            .AddScalar("ActorUserID", NHibernateUtil.Int64)
            .AddScalar("ActorType", NHibernateUtil.String)
            .AddScalar("EmployeeName", NHibernateUtil.String)
            .AddScalar("Email", NHibernateUtil.String)
            .AddScalar("SMS", NHibernateUtil.Boolean)
            .AddScalar("InitiatorSeq", NHibernateUtil.Int16);

            return(query.SetResultTransformer(Transformers.AliasToBean(typeof(UserFavoriteInitiator))).List <UserFavoriteInitiator>());
        }