예제 #1
0
        public ActionResult Search(long provinceId, long areaId, int current, int rowCount, string searchPhrase, FormCollection fc)
        {
            var user = ResSettings.SettingsInSession.User;

            //----------------------------------------------------------
            var t = APDBDef.ResUser;
            var c = APDBDef.ResCompany;
            APSqlOrderPhrase order = null;

            APSqlWherePhrase where = t.Removed == false;

            // 取排序
            var co = GridOrder.GetSortDef(fc);

            if (co != null)
            {
                switch (co.Id)
                {
                case "UserName": order = new APSqlOrderPhrase(t.UserName, co.Order); break;

                case "RealName": order = new APSqlOrderPhrase(t.RealName, co.Order); break;

                case "CompanyName": order = new APSqlOrderPhrase(c.CompanyName, co.Order); break;

                case "RoleName": order = new APSqlOrderPhrase(APDBDef.ResRole.RoleId, co.Order); break;

                case "Gender": order = new APSqlOrderPhrase(t.GenderPKID, co.Order); break;

                case "Email": order = new APSqlOrderPhrase(t.Email, co.Order); break;

                case "RegisterTime": order = new APSqlOrderPhrase(t.RegisterTime, co.Order); break;

                case "LoginCount": order = new APSqlOrderPhrase(t.LoginCount, co.Order); break;

                case "Actived": order = new APSqlOrderPhrase(t.Actived, co.Order); break;
                }
            }

            // 默认排序
            // if (order == null) order = new APSqlOrderPhrase(t.RegisterTime, APSqlOrderAccording.Desc);

            // 按用户名或真实姓名过滤
            if (searchPhrase != null)
            {
                searchPhrase = searchPhrase.Trim();
                if (searchPhrase != "")
                {
                    where &= (t.UserName.Match(searchPhrase) | t.RealName.Match(searchPhrase));
                }
            }

            if (provinceId > 0)
            {
                where &= t.ProvinceId == provinceId;
            }
            if (areaId > 0)
            {
                where &= t.AreaId == areaId;
            }


            // 用户数据范围
            if (user.ProvinceId > 0)
            {
                where &= t.ProvinceId == user.ProvinceId;
            }
            if (user.AreaId > 0)
            {
                where &= t.AreaId == user.AreaId;
            }
            if (user.CompanyId > 0)
            {
                where &= t.CompanyId == user.CompanyId;
            }


            int total;
            var list = APBplDef.ResUserBpl.TolerantSearch(out total, current, rowCount, where, order);

            //----------------------------------------------------------

            if (Request.IsAjaxRequest())
            {
                return(Json(
                           new
                {
                    rows = from res in list
                           select new
                    {
                        id = res.UserId,
                        res.UserName,
                        res.RealName,
                        res.CompanyName,
                        res.UserType,
                        res.Gender,
                        res.Email,
                        RegisterTime = res.RegisterTime.ToString("yyyy-MM-dd"),
                        res.LoginCount,
                        Actived = res.Actived ? "有效" : "无效"
                    },
                    current = current,
                    rowCount = rowCount,
                    total = total
                }));
            }
            else
            {
                return(View(list));
            }
        }
예제 #2
0
            /// Return a list for admin UI list.
            /// </summary>
            /// <param name="total"></param>
            /// <param name="current"></param>
            /// <param name="rowCount"></param>
            /// <param name="where"></param>
            /// <param name="order"></param>
            /// <returns></returns>
            public static List <CroResource> TolerantSearch(out int total, int current, int rowCount, APSqlWherePhrase where, APSqlOrderPhrase order)
            {
                var t = APDBDef.CroResource;
                var u = APDBDef.ResUser;

                var query = APQuery
                            .select(t.CrosourceId, t.Title, t.CreatedTime, t.StatePKID, t.ThemeId,
                                    t.ProvinceId, t.AreaId, t.WinLevelPKID, t.Score, t.DeliveryStatus,
                                    t.Author)
                            .from(t, u.JoinInner(t.Creator == u.UserId))
                            .where (where);

                //.order_by(t.CrosourceId.Desc)

                if (order != null)
                {
                    query.order_by_add(order);
                }
                else
                {
                    query.order_by_add(t.CrosourceId.Desc);
                }

                query.primary(t.CrosourceId)
                .skip((current - 1) * rowCount)
                .take(rowCount);

                using (APDBDef db = new APDBDef())
                {
                    total = db.ExecuteSizeOfSelect(query);
                    return(db.Query(query, t.TolerantMap).ToList());
                }
            }
예제 #3
0
            /// <summary>
            /// Return a list for admin UI list.
            /// </summary>
            /// <param name="total"></param>
            /// <param name="current"></param>
            /// <param name="rowCount"></param>
            /// <param name="where"></param>
            /// <param name="order"></param>
            /// <returns></returns>
            public static List <ResUser> TolerantSearch(out int total, int current, int rowCount, APSqlWherePhrase where, APSqlOrderPhrase order)
            {
                var t = APDBDef.ResUser;
                var c = APDBDef.ResCompany;
                //var r = APDBDef.ResRole;
                //var ur = APDBDef.ResUserRole;

                var query = APQuery
                            .select(t.UserId, t.UserName, t.RealName, t.GenderPKID, t.Email, t.RegisterTime, t.LoginCount, t.Actived, t.UserTypePKID,
                                    t.CompanyId, t.ProvinceId, t.AreaId,
                                    c.CompanyName //,r.RoleName
                                    )
                            .from(t,
                                  c.JoinLeft(t.CompanyId == c.CompanyId)
                                  )
                            .where (where)
                            .primary(t.UserId)
                            .skip((current - 1) * rowCount)
                            .take(rowCount);

                if (order != null)
                {
                    query.order_by(order);
                }

                using (APDBDef db = new APDBDef())
                {
                    total = db.ExecuteSizeOfSelect(query);
                    return(db.Query(query, reader =>
                    {
                        return new ResUser()
                        {
                            UserId = t.UserId.GetValue(reader),
                            UserTypePKID = t.UserTypePKID.GetValue(reader),
                            UserName = t.UserName.GetValue(reader),
                            RealName = t.RealName.GetValue(reader),
                            GenderPKID = t.GenderPKID.GetValue(reader),
                            Email = t.Email.GetValue(reader),
                            RegisterTime = t.RegisterTime.GetValue(reader),
                            LoginCount = t.LoginCount.GetValue(reader),
                            Actived = t.Actived.GetValue(reader),
                            CompanyName = c.CompanyName.GetValue(reader),
                            ProvinceId = t.ProvinceId.GetValue(reader),
                            AreaId = t.AreaId.GetValue(reader)
                        };
                    }).ToList());
                }
            }
예제 #4
0
        /// <summary>
        /// Build a APQuery.
        /// </summary>
        /// <param name="additionCondition">Addition condition.</param>
        /// <param name="additionOrders">Addition orders</param>
        /// <param name="fuzzySearchString">Fuzzy search string.</param>
        /// <returns>The APQuery.</returns>
        public virtual APSqlSelectCommand BuildQuery(APSqlWherePhrase additionCondition            = null,
                                                     IEnumerable <APSqlOrderPhrase> additionOrders = null,
                                                     string fuzzySearchString = null)
        {
            List <APSqlSelectPhrase> select = _source.GetPrimeSelectPhrases();
            List <APSqlFromPhrase>   from   = _source.GetPrimeFormPhrases();

            List <APSqlWherePhrase> where = _source.GetPrimeWherePhrases();

            // Base build.

            foreach (APRptReferDef refer in _def.Refers)
            {
                APRptColumn column = _source.AllColumns[refer.ColumnId];

                column.AddToQuerySelectPhrases(select);
                column.AddToQueryFromPhrases(from);
                column.AddToQueryWherePhrases(where);
            }

            var query = APQuery
                        .select(select)
                        .from(from)
                        .primary(_source.GetPrimaryExpr());



            // Order build.

            List <APSqlOrderPhrase> orderby = new List <APSqlOrderPhrase>();

            if (_def.Orders.Count > 0)
            {
                foreach (APRptOrderDef order in _def.Orders)
                {
                    orderby.Add(_source.AllColumns[order.ColumnId].GetQueryOrderByPhrase(order.According));
                }
            }
            if (additionOrders != null)
            {
                foreach (APSqlOrderPhrase order in additionOrders)
                {
                    orderby.Add(order);
                }
            }
            query.order_by(orderby);



            // Filter build.
            if (_def.Condition.Filters.Count > 0)
            {
                where.Add(new APRptConditionBuilder(_def.Condition, _source.AllColumns).BuildCondition());
            }


            // Additions condition.
            if (additionCondition != null)
            {
                where.Add(additionCondition);
            }

            // Fuzzy search condition.
            APSqlWherePhrase fuzzyWhere;

            if (!String.IsNullOrEmpty(fuzzySearchString) && (fuzzyWhere = _source.GetFuzzySearchPhrase(fuzzySearchString)) != null)
            {
                where.Add(fuzzyWhere);
            }


            query.where (where);


            return(query);
        }
예제 #5
0
            /// <summary>
            /// Return a list for admin UI list.
            /// </summary>
            /// <param name="total"></param>
            /// <param name="current"></param>
            /// <param name="rowCount"></param>
            /// <param name="where"></param>
            /// <param name="order"></param>
            /// <returns></returns>
            public static List <CroResource> TolerantSearch(out int total, int current, int rowCount, APSqlWherePhrase where, APSqlOrderPhrase order)
            {
                var t = APDBDef.CroResource;
                var u = APDBDef.ResUser;

                var query = APQuery
                            .select(t.CrosourceId, t.Title, u.RealName.As("Author")        //TODO:t.MediumTypePKID
                                    , t.CreatedTime, t.StatePKID)
                            .from(t, u.JoinInner(t.Creator == u.UserId))
                            .where (where)
                            .primary(t.CrosourceId)
                            .skip((current - 1) * rowCount)
                            .take(rowCount);

                if (order != null)
                {
                    query.order_by(order);
                }

                using (APDBDef db = new APDBDef())
                {
                    total = db.ExecuteSizeOfSelect(query);
                    return(db.Query(query, t.TolerantMap).ToList());
                }
            }
예제 #6
0
        public ActionResult Search(long activeId, long themeId,
                                   long provinceId, long areaId, long deliveryStatus,
                                   // long stateId,
                                   long maxScore, long minScore, long isPass,
                                   int current, int rowCount, string searchPhrase, FormCollection fc)
        {
            var user = ResSettings.SettingsInSession.User;

            //----------------------------------------------------------
            var t = APDBDef.CroResource;
            var u = APDBDef.ResUser;
            APSqlOrderPhrase order = null;

            APSqlWherePhrase where = t.StatePKID != 10359 & t.ActiveId == ThisApp.CurrentActiveId; //TODO 只取2018

            // 取排序
            var co = GridOrder.GetSortDef(fc);

            if (co != null)
            {
                switch (co.Id)
                {
                case "Title": order = new APSqlOrderPhrase(t.Title, co.Order); break;

                case "Author": order = new APSqlOrderPhrase(u.RealName, co.Order); break;

                case "CreatedTime": order = new APSqlOrderPhrase(t.CreatedTime, co.Order); break;

                // case "State": order = new APSqlOrderPhrase(t.StatePKID, co.Order); break;
                case "Score": order = new APSqlOrderPhrase(t.Score, co.Order); break;

                case "WinLevel": order = new APSqlOrderPhrase(t.WinLevelPKID, co.Order); break;
                }
            }

            // 按作品标题,内容,作者等过滤
            if (searchPhrase != null)
            {
                searchPhrase = searchPhrase.Trim();
                if (searchPhrase != "")
                {
                    where &= t.Title.Match(searchPhrase) | t.Author.Match(searchPhrase) | t.Description.Match(searchPhrase) | t.AuthorCompany.Match(searchPhrase);
                }
            }

            // 按照主题过滤
            if (themeId > 0)
            {
                where &= t.ThemeId == themeId;
            }

            // 用户数据范围或搜索
            if (user.ProvinceId > 0 || provinceId > 0)
            {
                where &= t.ProvinceId == (provinceId > 0 ? provinceId : user.ProvinceId);
            }
            if (user.AreaId > 0 || areaId > 0)
            {
                where &= t.AreaId == (areaId > 0 ? areaId : user.AreaId);
            }

            if (maxScore > 0)
            {
                where &= t.Score <= maxScore;
            }
            if (minScore > 0)
            {
                where &= t.Score >= minScore;
            }

            // 按项目数据过滤
            if (activeId > 0)
            {
                where &= t.ActiveId == activeId;
            }

            // 按照报送状态过滤
            if (deliveryStatus > -1)
            {
                where &= t.DeliveryStatus == deliveryStatus;
            }
            //if (stateId > 0)
            //	where &= t.StatePKID == stateId;

            if (isPass > 0)
            {
                APDBDef.EvalResultTableDef er = APDBDef.EvalResult;
                var subQuery = APQuery.select(er.ResourceId).from(er).where (er.EvalType == EvalGroupHelper.FirstTrial);
                where &= t.CrosourceId.In(subQuery);
            }

            int total;
            var list = APBplDef.CroResourceBpl.TolerantSearch(out total, current, rowCount, where, order);


            if (Request.IsAjaxRequest())
            {
                return(Json(
                           new
                {
                    rows = from cro in list
                           select new
                    {
                        id = cro.CrosourceId,
                        cro.Title,
                        cro.Author,
                        CreatedTime = cro.CreatedTime.ToString("yyyy-MM-dd"),
                        cro.Province,
                        cro.Area,
                        //cro.State,
                        cro.StatePKID,
                        cro.Score,
                        cro.WinLevel,
                        cro.WinLevelPKID,
                        cro.DeliveryStatusName,
                        cro.DeliveryStatus,
                        cro.Theme
                    },
                    current = current,
                    rowCount = rowCount,
                    total = total
                }));
            }
            else
            {
                return(View(list));
            }
        }