Exemplo n.º 1
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());
        }
Exemplo n.º 2
0
        protected override long ExecuteWorkImplementation()
        {
            var now     = DateTime.UtcNow;
            var user    = m_favoritesRepository.Load <User>(m_userId);
            var project = m_favoritesRepository.Load <Project>(m_data.ProjectId);

            var label = GetFavoriteLabelAndCheckAuthorization(m_data.FavoriteLabelId, user.Id);

            label.LastUseTime = now;

            var favoriteItem = new FavoriteProject
            {
                Project       = project,
                CreateTime    = now,
                FavoriteLabel = label,
                Title         = m_data.Title
            };

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

            return(resultId);
        }