private EnumerableRowCollection <DataRow> Get(
            Context context,
            SiteSettings ss,
            SqlColumnCollection column   = null,
            SqlJoinCollection join       = null,
            SqlWhereCollection where     = null,
            SqlOrderByCollection orderBy = null,
            SqlParamCollection param     = null,
            Sqls.TableTypes tableType    = Sqls.TableTypes.Normal,
            bool distinct = false,
            int top       = 0,
            int offset    = 0,
            int pageSize  = 0)
        {
            var statements = new List <SqlStatement>
            {
                Rds.SelectIssues(
                    dataTableName: "Main",
                    column: column ?? Rds.IssuesDefaultColumns(),
                    join: join ?? Rds.IssuesJoinDefault(),
                    where : where,
                    orderBy: orderBy,
                    param: param,
                    tableType: tableType,
                    distinct: distinct,
                    top: top,
                    offset: offset,
                    pageSize: pageSize),
                Rds.SelectCount(
                    tableName: "Issues",
                    tableType: tableType,
                    join: join ?? Rds.IssuesJoinDefault(),
                    where : where)
            };
            var dataSet = Rds.ExecuteDataSet(
                context: context,
                transactional: false,
                statements: statements.ToArray());

            TotalCount = Rds.Count(dataSet);
            return(dataSet.Tables["Main"].AsEnumerable());
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string SearchJson(Context context)
        {
            var offset     = context.QueryStrings.Int("offset");
            var searchText = context.QueryStrings.Data("text");
            var dataSet    = Get(
                context: context,
                searchText: searchText,
                dataTableName: "SearchResults",
                offset: offset,
                pageSize: Parameters.Search.PageSize);
            var dataRows = dataSet?.Tables["SearchResults"].AsEnumerable();
            var res      = new ResponseCollection();

            return(offset == 0
                ? res
                   .ReplaceAll(
                       "#MainContainer",
                       MainContainer(
                           context: context,
                           text: searchText,
                           offset: 0,
                           results: dataRows,
                           count: Rds.Count(dataSet)))
                   .Focus("#Search")
                   .ToJson()
                : res
                   .Append(
                       "#SearchResults",
                       new HtmlBuilder().Results(
                           context: context,
                           text: searchText,
                           offset: offset,
                           dataRows: dataRows))
                   .Val(
                       "#SearchOffset",
                       (dataRows != null &&
                        dataRows.Any() &&
                        dataRows.Count() == Parameters.Search.PageSize
                            ? offset + Parameters.Search.PageSize
                            : -1).ToString())
                   .ToJson());
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string Search(Context context)
        {
            if (Parameters.Search.DisableCrossSearch)
            {
                return(HtmlTemplates.Error(
                           context: context,
                           errorData: new ErrorData(type: Error.Types.InvalidRequest)));
            }
            var dataSet = Get(
                context: context,
                searchText: context.QueryStrings.Data("text"),
                dataTableName: "SearchResults",
                offset: context.QueryStrings.Int("offset"),
                pageSize: Parameters.Search.PageSize);

            return(MainContainer(
                       context: context,
                       text: context.QueryStrings.Data("text"),
                       offset: 0,
                       results: dataSet?.Tables["SearchResults"].AsEnumerable(),
                       count: Rds.Count(dataSet)).ToString());
        }
        private IEnumerable <DataRow> Get(
            IContext context,
            SqlColumnCollection column   = null,
            SqlJoinCollection join       = null,
            SqlWhereCollection where     = null,
            SqlOrderByCollection orderBy = null,
            SqlParamCollection param     = null,
            Sqls.TableTypes tableType    = Sqls.TableTypes.Normal,
            bool distinct    = false,
            int top          = 0,
            int offset       = 0,
            int pageSize     = 0,
            bool history     = false,
            bool countRecord = false)
        {
            var statements = new List <SqlStatement>
            {
                Rds.SelectOutgoingMails(
                    dataTableName: "Main",
                    column: column ?? Rds.OutgoingMailsDefaultColumns(),
                    join: join ?? Rds.OutgoingMailsJoinDefault(),
                    where : where,
                    orderBy: orderBy,
                    param: param,
                    tableType: tableType,
                    distinct: distinct,
                    top: top,
                    offset: offset,
                    pageSize: pageSize,
                    countRecord: countRecord)
            };
            var dataSet = Rds.ExecuteDataSet(
                context: context,
                transactional: false,
                statements: statements.ToArray());

            TotalCount = Rds.Count(dataSet);
            return(dataSet.Tables["Main"].AsEnumerable());
        }
示例#5
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string SearchJson()
        {
            var offset  = QueryStrings.Int("offset");
            var text    = QueryStrings.Data("text");
            var dataSet = Get(
                searchIndexes: text.SearchIndexes(),
                offset: offset,
                pageSize: Parameters.General.SearchPageSize);
            var results = dataSet?.Tables["Main"].AsEnumerable();
            var res     = new ResponseCollection();

            if (offset == 0)
            {
                res
                .ReplaceAll(
                    "#MainContainer",
                    MainContainer(
                        text: text,
                        offset: 0,
                        results: results,
                        count: Rds.Count(dataSet)))
                .Focus("#Search");
            }
            else
            {
                res
                .Append(
                    "#SearchResults",
                    new HtmlBuilder().Results(text: text, offset: offset, results: results))
                .Val(
                    "#SearchOffset",
                    (results != null &&
                     results.Any() &&
                     results.Count() == Parameters.General.SearchPageSize
                            ? offset + Parameters.General.SearchPageSize
                            : -1).ToString());
            }
            return(res.ToJson());
        }
示例#6
0
        private void Get(
            Context context,
            SiteSettings ss,
            View view,
            Sqls.TableTypes tableType  = Sqls.TableTypes.Normal,
            SqlColumnCollection column = null,
            SqlJoinCollection join     = null,
            SqlWhereCollection where   = null,
            int top      = 0,
            int offset   = 0,
            int pageSize = 0,
            bool count   = true)
        {
            column = column ?? ColumnUtilities.SqlColumnCollection(
                context: context,
                ss: ss,
                view: view,
                columns: ss.GetGridColumns(
                    context: context,
                    view: view,
                    includedColumns: true));
            where = view.Where(
                context: context,
                ss: ss,
                where : where);
            var orderBy = view.OrderBy(
                context: context,
                ss: ss);

            join = join ?? ss.Join(
                context: context,
                join: new IJoin[]
            {
                column,
                where,
                orderBy
            });
            var param = view.Param(
                context: context,
                ss: ss);
            var statements = new List <SqlStatement>();

            statements.Add(Rds.Select(
                               tableName: ss.ReferenceType,
                               tableType: tableType,
                               dataTableName: "Main",
                               column: column,
                               join: join,
                               where : where,
                               orderBy: orderBy,
                               param: param,
                               top: top,
                               offset: offset,
                               pageSize: pageSize));
            if (count)
            {
                statements.Add(Rds.SelectCount(
                                   tableName: ss.ReferenceType,
                                   tableType: tableType,
                                   join: join,
                                   where : where));
            }
            DataSet dataSet;

            try
            {
                dataSet = Repository.ExecuteDataSet(
                    context: context,
                    transactional: false,
                    statements: statements.ToArray());
            }
            catch (System.Exception e)
            {
                Views.SetSession(
                    context: context,
                    ss: ss,
                    view: new View(),
                    setSession: true,
                    key: "View",
                    useUsersView: ss.SaveViewType == SiteSettings.SaveViewTypes.User);
                throw e;
            }
            DataRows   = dataSet.Tables["Main"].AsEnumerable();
            TotalCount = Rds.Count(dataSet);
            ss.SetChoiceHash(
                context: context,
                dataRows: DataRows);
        }
示例#7
0
        private EnumerableRowCollection <DataRow> Items(
            Context context,
            SiteSettings ss,
            string searchText,
            IEnumerable <string> selectedValues,
            Column column,
            Column parentColumn,
            List <long> parentIds,
            int offset,
            bool setAllChoices)
        {
            var tableName = $"{ss.ReferenceType}_Items";
            var view      = GetView(
                context: context,
                ss: ss);

            view.Search = searchText;
            var sqlColumn = SetSqlColum(
                context: context,
                ss: ss,
                keyColumnName: Rds.IdColumn(tableName: ss.ReferenceType),
                textColumnName: "Title");

            var where = view.Where(
                context: context,
                ss: ss,
                where : Rds.ItemsWhere()
                .ReferenceId_In(
                    tableName: tableName,
                    value: selectedValues?.Select(o => o.ToLong()),
                    _using: selectedValues?.Any() == true)
                .ReferenceId_In(
                    tableName: tableName,
                    sub: new SqlStatement(ss.LinkHashRelatingColumnsSubQuery(
                                              context: context,
                                              referenceType: ss.ReferenceType,
                                              parentColumn: parentColumn,
                                              parentIds: parentIds)),
                    _using: (ss.ReferenceType == "Results" ||
                             ss.ReferenceType == "Issues") &&
                    (parentIds?.Any() ?? false) &&
                    parentColumn != null));
            var orderBy = view.OrderBy(
                context: context,
                ss: ss,
                orderBy: view.ColumnSorterHash?.Any() != true
                    ? new Rds.ItemsOrderByCollection().Title(tableName: tableName)
                    : null);
            var join = ss.Join(
                context: context,
                join: new IJoin[]
            {
                sqlColumn,
                where,
                orderBy
            });
            var dataSet = Rds.ExecuteDataSet(
                context: context,
                statements: new SqlStatement[]
            {
                Rds.Select(
                    tableName: ss.ReferenceType,
                    dataTableName: "Main",
                    column: sqlColumn,
                    join: join,
                    where : where,
                    orderBy: orderBy,
                    offset: offset,
                    pageSize: !setAllChoices
                            ? Parameters.General.DropDownSearchPageSize
                            : 0),
                Rds.SelectCount(
                    tableName: ss.ReferenceType,
                    join: join,
                    where : where)
            });

            column.TotalCount = Rds.Count(dataSet);
            return(dataSet.Tables["Main"].AsEnumerable());
        }
示例#8
0
        private void Get(
            Context context,
            SiteSettings ss,
            View view,
            Sqls.TableTypes tableType  = Sqls.TableTypes.Normal,
            SqlColumnCollection column = null,
            SqlJoinCollection join     = null,
            SqlWhereCollection where   = null,
            int top      = 0,
            int offset   = 0,
            int pageSize = 0)
        {
            column = column ?? ColumnUtilities.SqlColumnCollection(
                context: context,
                ss: ss,
                columns: ss.GetGridColumns(
                    context: context,
                    view: view));
            where = view.Where(
                context: context,
                ss: ss,
                where : where);
            var orderBy = view.OrderBy(
                context: context,
                ss: ss);

            join = join ?? ss.Join(
                context: context,
                join: new IJoin[]
            {
                column,
                where,
                orderBy
            });
            var statements = new List <SqlStatement>
            {
                Rds.Select(
                    tableName: ss.ReferenceType,
                    tableType: tableType,
                    dataTableName: "Main",
                    column: column,
                    join: join,
                    where : where,
                    orderBy: orderBy,
                    top: top,
                    offset: offset,
                    pageSize: pageSize),
                Rds.SelectCount(
                    tableName: ss.ReferenceType,
                    tableType: tableType,
                    join: join,
                    where : where)
            };
            var dataSet = Rds.ExecuteDataSet(
                context: context,
                transactional: false,
                statements: statements.ToArray());

            DataRows   = dataSet.Tables["Main"].AsEnumerable();
            TotalCount = Rds.Count(dataSet);
            ss.SetChoiceHash(dataRows: DataRows);
        }