Example #1
0
        private IQueryOver <FavoriteBase, FavoriteBase> CreateGetFavoriteItemsQuery(long?labelId, FavoriteTypeEnum?filterByType, string filterByTitle, int userId)
        {
            FavoriteLabel favoriteLabelAlias = null;

            var query = GetSession().QueryOver <FavoriteBase>()
                        .JoinAlias(x => x.FavoriteLabel, () => favoriteLabelAlias)
                        .Where(() => favoriteLabelAlias.User.Id == userId);

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

            if (filterByType != null)
            {
                query.And(x => x.FavoriteType == GetFavoriteTypeDiscriminatorValue(filterByType.Value));
            }

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

            return(query);
        }
Example #2
0
        public PrivateUserContract CreateLocalUser(PrivateUserContract user)
        {
            var now = DateTime.UtcNow;
            var defaultFavoriteLabel = new FavoriteLabel
            {
                Name        = DefaultFavoriteLabelName,
                Color       = DefaultFavoriteLabelColor,
                IsDefault   = true,
                LastUseTime = now
            };
            var dbUser = new User
            {
                UserName                     = user.UserName,
                Email                        = user.Email,
                FirstName                    = user.FirstName,
                LastName                     = user.LastName,
                CreateTime                   = now,
                PasswordHash                 = user.PasswordHash,
                AuthenticationProvider       = AuthenticationProvider.ItJakub,
                CommunicationToken           = m_communicationTokenGenerator.GetNewCommunicationToken(),
                CommunicationTokenCreateTime = now,
                Groups                       = new List <Group> {
                    m_defaultMembershipProvider.GetDefaultRegisteredUserGroup(), m_defaultMembershipProvider.GetDefaultUnRegisteredUserGroup()
                },
                FavoriteLabels = new List <FavoriteLabel> {
                    defaultFavoriteLabel
                }
            };

            defaultFavoriteLabel.User = dbUser;

            var userId = m_userRepository.Create(dbUser);

            return(GetPrivateUserDetail(userId));
        }
Example #3
0
        public virtual FavoriteLabel GetDefaultFavoriteLabel(int userId)
        {
            FavoriteLabel favoriteLabelAlias = null;
            User          userAlias          = null;

            return(GetSession().QueryOver(() => favoriteLabelAlias)
                   .JoinAlias(() => favoriteLabelAlias.User, () => userAlias)
                   .Where(() => favoriteLabelAlias.IsDefault && userAlias.Id == userId)
                   .SingleOrDefault());
        }
Example #4
0
        public virtual IList <FavoriteHeadword> GetAllFavoriteHeadwords(long userId)
        {
            FavoriteLabel favoriteLabelAlias = null;

            return(GetSession().QueryOver <FavoriteHeadword>()
                   .JoinAlias(x => x.FavoriteLabel, () => favoriteLabelAlias)
                   .Where(() => favoriteLabelAlias.User.Id == userId)
                   .Fetch(SelectMode.Fetch, x => x.FavoriteLabel)
                   .OrderBy(x => x.Title).Asc
                   .List());
        }
Example #5
0
        public virtual IList <FavoriteCategory> GetFavoriteCategoriesWithLabel(int userId)
        {
            FavoriteLabel favoriteLabelAlias = null;

            return(GetSession().QueryOver <FavoriteCategory>()
                   .JoinAlias(x => x.FavoriteLabel, () => favoriteLabelAlias)
                   .Where(() => favoriteLabelAlias.User.Id == userId)
                   .Fetch(SelectMode.Fetch, x => x.FavoriteLabel)
                   .OrderBy(x => x.Title).Asc
                   .List());
        }
Example #6
0
        public virtual IList <FavoriteCategory> GetFavoriteLabeledCategories(int userId)
        {
            FavoriteCategory favoriteItemAlias  = null;
            FavoriteLabel    favoriteLabelAlias = null;

            return(GetSession().QueryOver(() => favoriteItemAlias)
                   .JoinAlias(() => favoriteItemAlias.FavoriteLabel, () => favoriteLabelAlias)
                   .Fetch(SelectMode.Fetch, x => x.FavoriteLabel)
                   .And(() => favoriteLabelAlias.User.Id == userId)
                   .OrderBy(() => favoriteLabelAlias.Name).Asc
                   .OrderBy(() => favoriteItemAlias.Title).Asc
                   .List());
        }
Example #7
0
        public virtual IList <FavoritePage> GetAllPageBookmarksByBookId(long projectId, long userId)
        {
            FavoritePage  favoritePageAlias  = null;
            FavoriteLabel favoriteLabelAlias = null;
            Resource      resourcePageAlias  = null;

            return(GetSession().QueryOver(() => favoritePageAlias)
                   .JoinAlias(() => favoritePageAlias.ResourcePage, () => resourcePageAlias)
                   .JoinAlias(() => favoritePageAlias.FavoriteLabel, () => favoriteLabelAlias)
                   .Where(() => resourcePageAlias.Project.Id == projectId && favoriteLabelAlias.User.Id == userId)
                   .Fetch(SelectMode.Fetch, x => x.FavoriteLabel)
                   .List());
        }
Example #8
0
        public FavoriteLabel GetNewDefaultFavoriteLabel(User user)
        {
            var now    = DateTime.UtcNow;
            var result = new FavoriteLabel
            {
                Name          = DefaultName,
                Color         = DefaultColor,
                IsDefault     = true,
                LastUseTime   = now,
                User          = user,
                FavoriteItems = null,
            };

            return(result);
        }
Example #9
0
        public long CreateFavoriteLabel(string name, string color, bool isDefault)
        {
            var now           = DateTime.UtcNow;
            var user          = TryGetUser();
            var favoriteLabel = new FavoriteLabel
            {
                Name        = name,
                Color       = color,
                IsDefault   = isDefault,
                LastUseTime = now,
                User        = m_favoritesRepository.Load <User>(user.Id)
            };

            var id = m_favoritesRepository.Create(favoriteLabel);

            return((long)id);
        }
Example #10
0
        public virtual IList <FavoriteCategory> GetFavoriteLabeledCategories(IList <int> categoryIds, int userId)
        {
            FavoriteCategory favoriteItemAlias  = null;
            FavoriteLabel    favoriteLabelAlias = null;

            using (var session = GetSession())
            {
                return(session.QueryOver(() => favoriteItemAlias)
                       .JoinAlias(() => favoriteItemAlias.FavoriteLabel, () => favoriteLabelAlias)
                       .Fetch(x => x.FavoriteLabel).Eager
                       .WhereRestrictionOn(() => favoriteItemAlias.Category.Id).IsInG(categoryIds)
                       .And(() => favoriteLabelAlias.User.Id == userId)
                       .OrderBy(() => favoriteLabelAlias.Name).Asc
                       .OrderBy(() => favoriteItemAlias.Title).Asc
                       .List());
            }
        }
Example #11
0
        public virtual IList <FavoriteQuery> GetFavoriteQueries(long?labelId, BookTypeEnum bookTypeEnum, QueryTypeEnum queryTypeEnum, string filterByTitle, int start, int count, int userId)
        {
            FavoriteLabel favoriteLabelAlias = null;

            using (var session = GetSession())
            {
                var query = CreateFavoriteQueriesQuery(session, labelId, bookTypeEnum, queryTypeEnum, filterByTitle, userId);

                return(query.JoinAlias(x => x.FavoriteLabel, () => favoriteLabelAlias)
                       .Fetch(x => x.FavoriteLabel).Eager
                       .Fetch(x => x.BookType).Eager
                       .OrderBy(x => x.Title).Asc
                       .OrderBy(() => favoriteLabelAlias.Name).Asc
                       .Skip(start)
                       .Take(count)
                       .List());
            }
        }
Example #12
0
        public virtual IList <FavoriteProject> GetFavoriteLabeledBooks(IList <long> projectIds, BookTypeEnum?bookType,
                                                                       ProjectTypeEnum?projectType, int userId)
        {
            FavoriteProject favoriteItemAlias   = null;
            FavoriteLabel   favoriteLabelAlias  = null;
            Project         projectAlias        = null;
            Snapshot        latestSnapshotAlias = null;
            BookType        bookTypeAlias       = null;

            var restriction = Restrictions.Disjunction();

            if (projectIds.Count > 0)
            {
                restriction.Add(Restrictions.InG(Projections.Property(() => projectAlias.Id), projectIds));
            }
            if (bookType != null)
            {
                restriction.Add(() => bookTypeAlias.Type == bookType.Value);
            }

            var query = GetSession().QueryOver(() => favoriteItemAlias)
                        .JoinAlias(() => favoriteItemAlias.FavoriteLabel, () => favoriteLabelAlias)
                        .JoinAlias(() => favoriteItemAlias.Project, () => projectAlias)
                        .JoinAlias(() => projectAlias.LatestPublishedSnapshot, () => latestSnapshotAlias)
                        .JoinAlias(() => latestSnapshotAlias.BookTypes, () => bookTypeAlias)
                        .Fetch(SelectMode.Fetch, x => x.FavoriteLabel)
                        .Where(restriction)
                        .And(() => favoriteLabelAlias.User.Id == userId && projectAlias.IsRemoved == false);

            if (projectType != null)
            {
                query.And(() => projectAlias.ProjectType == projectType.Value);
            }

            return(query.OrderBy(() => favoriteLabelAlias.Name).Asc
                   .OrderBy(() => favoriteItemAlias.Title).Asc
                   .TransformUsing(Transformers.DistinctRootEntity)
                   .List());
        }
Example #13
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,
            });
        }
Example #14
0
        public virtual IList <FavoriteProject> GetFavoriteBooksWithLabel(BookTypeEnum bookType, ProjectTypeEnum?projectType, int userId)
        {
            FavoriteLabel favoriteLabelAlias  = null;
            Project       projectAlias        = null;
            Snapshot      latestSnapshotAlias = null;
            BookType      bookTypeAlias       = null;

            var query = GetSession().QueryOver <FavoriteProject>()
                        .JoinAlias(x => x.FavoriteLabel, () => favoriteLabelAlias)
                        .JoinAlias(x => x.Project, () => projectAlias)
                        .JoinAlias(() => projectAlias.LatestPublishedSnapshot, () => latestSnapshotAlias)
                        .JoinAlias(() => latestSnapshotAlias.BookTypes, () => bookTypeAlias)
                        .Where(() => favoriteLabelAlias.User.Id == userId && bookTypeAlias.Type == bookType && projectAlias.IsRemoved == false);

            if (projectType != null)
            {
                query.And(() => projectAlias.ProjectType == projectType.Value);
            }

            return(query.Fetch(SelectMode.Fetch, x => x.FavoriteLabel)
                   .OrderBy(x => x.Title).Asc
                   .List());
        }
        protected override long ExecuteWorkImplementation()
        {
            var now  = DateTime.UtcNow;
            var user = m_favoritesRepository.Load <User>(m_userId);

            FavoriteLabel favoriteLabel;

            if (m_favoriteLabelId == null)
            {
                favoriteLabel = new FavoriteLabel
                {
                    IsDefault = m_createDefault,
                    User      = user,
                    // Other properties are set outside IF block
                };
            }
            else
            {
                favoriteLabel = m_favoritesRepository.FindById <FavoriteLabel>(m_favoriteLabelId.Value);

                OwnershipHelper.CheckItemOwnership(favoriteLabel.User.Id, m_userId);

                if (favoriteLabel.IsDefault)
                {
                    throw new MainServiceException(MainServiceErrorCode.CannotModifyDefaultFavoriteLabel, "User can't modify default favorite label");
                }
            }

            favoriteLabel.Name        = m_data.Name;
            favoriteLabel.Color       = m_data.Color;
            favoriteLabel.LastUseTime = now;

            m_favoritesRepository.Save(favoriteLabel);

            return(favoriteLabel.Id);
        }
Example #16
0
 private FavoriteLabelWithBooksAndCategories CreateFavoriteLabelWithBooksAndCategories(FavoriteLabel favoriteLabelEntity)
 {
     return(new FavoriteLabelWithBooksAndCategories
     {
         BookIdList = new List <long>(),
         CategoryIdList = new List <int>(),
         Id = favoriteLabelEntity.Id,
         Name = favoriteLabelEntity.Name,
         Color = favoriteLabelEntity.Color
     });
 }