Esempio n. 1
0
        public IList <long> CreateFavoriteQuery(BookTypeEnumContract bookType, QueryTypeEnumContract queryType, string query, string title, IList <long> labelIds)
        {
            var now  = DateTime.UtcNow;
            var user = TryGetUser();

            var labels           = GetFavoriteLabelsAndCheckAuthorization(labelIds, user.Id);
            var labelsDictionary = labels.ToDictionary(x => x.Id);
            var itemsToSave      = new List <FavoriteQuery>();

            var bookTypeEnum   = Mapper.Map <BookTypeEnum>(bookType);
            var queryTypeEnum  = Mapper.Map <QueryTypeEnum>(queryType);
            var bookTypeEntity = m_bookVersionRepository.GetBookType(bookTypeEnum);

            foreach (var labelId in labelIds)
            {
                var label = labelsDictionary[labelId];
                label.LastUseTime = now;

                var favoriteItem = new FavoriteQuery
                {
                    BookType      = bookTypeEntity,
                    Query         = query,
                    QueryType     = queryTypeEnum,
                    CreateTime    = now,
                    User          = user,
                    FavoriteLabel = label,
                    Title         = title,
                };
                itemsToSave.Add(favoriteItem);
            }

            var result = m_favoritesRepository.CreateAll(itemsToSave);

            return(result.Cast <long>().ToList());
        }
        public static string BuildFavorite(FavoriteQuery query)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("SET Transaction Isolation Level Read UNCOMMITTED ");

            SelectQueryBuilder builder = new SelectQueryBuilder();

            builder.SelectFromTable("UFavorite");
            builder.SelectColumns("FavoriteID");
            if (!string.IsNullOrEmpty(query.FavoriteTitleFilter))
            {
                builder.AddWhere("FavoriteTitle", Comparison.Like, query.FavoriteTitleFilter);
            }

            if (!string.IsNullOrEmpty(query.FavoriteMemoFilter))
            {
                builder.AddWhere("FavoriteMemo", Comparison.Like, "%" + query.FavoriteMemoFilter + "%");
            }

            if (query.UserID != 0)
            {
                builder.AddWhere("UserID", Comparison.Equals, query.UserID);
            }

            builder.AddWhere("FavoriteType", Comparison.NotEquals, 0);

            if (query.FavoriteType != null)
            {
                builder.AddWhere("FavoriteType", Comparison.Equals, (int)query.FavoriteType);
            }

            return(builder.BuildQuery());
        }
Esempio n. 3
0
        protected override long ExecuteWorkImplementation()
        {
            var now  = DateTime.UtcNow;
            var user = m_favoritesRepository.Load <User>(m_userId);

            var bookTypeEnum  = m_mapper.Map <BookTypeEnum>(m_data.BookType);
            var queryTypeEnum = m_mapper.Map <QueryTypeEnum>(m_data.QueryType);

            var bookTypeEntity = m_catalogValueRepository.GetBookType(bookTypeEnum);
            var label          = GetFavoriteLabelAndCheckAuthorization(m_data.FavoriteLabelId, user.Id);

            label.LastUseTime = now;

            var favoriteItem = new FavoriteQuery
            {
                BookType      = bookTypeEntity,
                Query         = m_data.Query,
                QueryType     = queryTypeEnum,
                CreateTime    = now,
                FavoriteLabel = label,
                Title         = m_data.Title,
            };

            var resultId = (long)m_favoritesRepository.Create(favoriteItem);

            return(resultId);
        }
    void BindFavs()
    {
        FavoriteQuery fq = new FavoriteQuery();

        fq.PageSize            = int.MaxValue;
        fq.UserID              = Profile.AccountInfo.UserID;
        fq.FavoriteTitleFilter = txtName.Text.Trim();
        if (ddlType.SelectedIndex != 0)
        {
            fq.FavoriteType = (FavoriteType)int.Parse(ddlType.SelectedValue);
        }
        List <Favorite> favs = Favorites.GetFavorites(fq).Records;

        egvFavs.DataSource = favs;
        egvFavs.DataBind();
    }
Esempio n. 5
0
        private IQueryOver <FavoriteQuery, FavoriteQuery> CreateFavoriteQueriesQuery(ISession session, long?labelId, BookTypeEnum bookTypeEnum, QueryTypeEnum queryTypeEnum, string filterByTitle, int userId)
        {
            FavoriteQuery favoriteQueryAlias = null;
            BookType      bookTypeAlias      = null;

            var query = session.QueryOver(() => favoriteQueryAlias)
                        .JoinAlias(() => favoriteQueryAlias.BookType, () => bookTypeAlias)
                        .Where(() => bookTypeAlias.Type == bookTypeEnum && favoriteQueryAlias.QueryType == queryTypeEnum && favoriteQueryAlias.User.Id == userId);

            if (labelId != null)
            {
                query.And(() => favoriteQueryAlias.FavoriteLabel.Id == labelId.Value);
            }
            if (!string.IsNullOrEmpty(filterByTitle))
            {
                query.AndRestrictionOn(() => favoriteQueryAlias.Title).IsLike(filterByTitle, MatchMode.Anywhere);
            }

            return(query);
        }
Esempio n. 6
0
        public virtual ListWithTotalCountResult <FavoriteQuery> GetFavoriteQueries(long?labelId, BookTypeEnum bookTypeEnum, QueryTypeEnum queryTypeEnum, string filterByTitle, int start, int count, int userId)
        {
            FavoriteQuery favoriteQueryAlias = null;
            FavoriteLabel favoriteLabelAlias = null;
            BookType      bookTypeAlias      = null;

            var query = GetSession().QueryOver(() => favoriteQueryAlias)
                        .JoinAlias(() => favoriteQueryAlias.FavoriteLabel, () => favoriteLabelAlias)
                        .JoinAlias(() => favoriteQueryAlias.BookType, () => bookTypeAlias)
                        .Where(() => bookTypeAlias.Type == bookTypeEnum && favoriteQueryAlias.QueryType == queryTypeEnum && favoriteLabelAlias.User.Id == userId)
                        .Fetch(SelectMode.Fetch, x => x.FavoriteLabel)
                        .Fetch(SelectMode.Fetch, x => x.BookType)
                        .OrderBy(x => x.Title).Asc
                        .OrderBy(() => favoriteLabelAlias.Name).Asc;

            if (labelId != null)
            {
                query.And(() => favoriteQueryAlias.FavoriteLabel.Id == labelId.Value);
            }

            if (!string.IsNullOrEmpty(filterByTitle))
            {
                filterByTitle = EscapeQuery(filterByTitle);
                query.AndRestrictionOn(() => favoriteQueryAlias.Title).IsLike(filterByTitle, MatchMode.Anywhere);
            }

            var list = query.Skip(start)
                       .Take(count)
                       .Future();

            var totalCount = query.ToRowCountQuery()
                             .FutureValue <int>();

            return(new ListWithTotalCountResult <FavoriteQuery>
            {
                List = list.ToList(),
                Count = totalCount.Value,
            });
        }
Esempio n. 7
0
 public abstract List <Favorite> GetFavorites(FavoriteQuery query, out int totalRecord);