Esempio n. 1
0
        public static SearchAndIndexQueryResult FetchBasliksUsingSearch(bool fresh, string content, string suser, DateTime begin, DateTime end, int pageNumber, string pagerHash, bool leaveDatesAsIs)
        {
            SearchAndIndexQueryResult resultSet;
            SqlServerIo sql;
            TimeSpan    invTimeout;
            int         rowBegin, rowEnd;
            string      query;
            KeysetId    keysetId;
            string      baslik, descr, deceptedDate;
            int         entryCount;
            bool        resultCached;

            rowBegin = (pageNumber * BasliksPerPage) + 1;
            rowEnd   = rowBegin + BasliksPerPage - 1;

            //Workarounds, workarounds, workarounds !
            if (begin != DateTime.MinValue && end != DateTime.MinValue)
            {
                if (leaveDatesAsIs)
                {
                    deceptedDate = begin.AddTicks((end - begin).Ticks / 2).ToString();
                }
                else
                {
                    //push it out of from the search date range to reverse daterange check logic
                    deceptedDate = end.AddDays(2).ToString();
                }
            }
            else
            {
                deceptedDate = string.Empty;
            }

            query = BuildFetchSQLQuery(ref pagerHash, content, suser, begin, end, rowBegin, rowEnd);


            if (fresh)
            {
                keysetId   = KeysetId.Todays(true);
                invTimeout = TodaysTimeout;
            }
            else
            {
                keysetId   = KeysetId.Search(pagerHash, true);
                invTimeout = SearchResultTimeout;
            }

            resultCached = CacheManager.TryGetCachedQueryResult <SearchAndIndexQueryResult>(query, out resultSet);

            if (!resultCached)
            {
                sql = SqlServerIo.Create();

                if (!sql.Execute(false, query))
                {
                    SqlServerIo.Release(sql);
                    return(new SearchAndIndexQueryResult());
                }

                resultSet = new SearchAndIndexQueryResult
                {
                    PagerHash = pagerHash
                };

                while (sql.Read())
                {
                    baslik     = sql.GetValueOfColumn <string>("Baslik");
                    entryCount = sql.GetValueOfColumn <int>("EntryCount");

                    if (resultSet.TotalRecordCount == 0)
                    {
                        resultSet.TotalRecordCount = sql.GetValueOfColumn <int>("TotalRecordCount");
                    }

                    if (entryCount > 0)
                    {
                        descr = content;
                    }
                    else
                    {
                        descr = Strev(content);
                    }

                    if (string.IsNullOrEmpty(suser))
                    {
                        suser = string.Empty;
                    }

                    resultSet.Entries.Add(
                        new Entry(
                            baslik,
                            suser,
                            deceptedDate,
                            descr, entryCount)
                        );

                    resultSet.PhysicalRecordCount++;
                }

                resultSet.LogicalRecordCount = resultSet.Entries.Count;

                SqlServerIo.Release(sql);

                CacheManager.CacheObject(keysetId, true, query, resultSet, invTimeout);
            }

            return(resultSet);
        }
Esempio n. 2
0
        private static SearchAndIndexQueryResult FetchBasliksIndexed(int pageNumber, char beginChar, string pagerHash)
        {
            SearchAndIndexQueryResult resultSet;
            SqlServerIo sql;
            TimeSpan    invTimeout;
            int         rowBegin, rowEnd;
            string      query, baslik;
            int         entryCount;

            rowBegin = (pageNumber * BasliksPerPage) + 1;
            rowEnd   = rowBegin + BasliksPerPage - 1;

            beginChar = char.ToLower(beginChar);

            if (beginChar == '.')
            {
                invTimeout = AllBasliksTimeout;
            }
            else
            {
                invTimeout = IndexedBasliksTimeout;
            }

            query = BuildFetchAllSQLQuery(ref pagerHash, rowBegin, rowEnd, beginChar);

            if (!CacheManager.TryGetCachedQueryResult <SearchAndIndexQueryResult>(query, out resultSet))
            {
                sql = SqlServerIo.Create();

                if (!sql.Execute(false, query))
                {
                    SqlServerIo.Release(sql);
                    return(new SearchAndIndexQueryResult());
                }

                resultSet = new SearchAndIndexQueryResult
                {
                    PagerHash = pagerHash
                };

                while (sql.Read())
                {
                    baslik     = sql.GetValueOfColumn <string>("Baslik");
                    entryCount = sql.GetValueOfColumn <int>("EntryCount");

                    if (resultSet.TotalRecordCount == 0)
                    {
                        resultSet.TotalRecordCount = sql.GetValueOfColumn <int>("TotalRecordCount");
                    }

                    resultSet.Entries.Add(new Entry(baslik, string.Empty, string.Empty, string.Empty, entryCount));

                    resultSet.PhysicalRecordCount++;
                }

                resultSet.LogicalRecordCount = resultSet.Entries.Count;

                SqlServerIo.Release(sql);

                CacheManager.CacheObject(KeysetId.Index(beginChar, true), true, query, resultSet, invTimeout);
            }

            return(resultSet);
        }