コード例 #1
0
 public UserProfile GetProfile(int?userId)
 {
     using (var db = new DbTorronto())
     {
         return(db.User
                .Where(u => u.ID == userId)
                .Select(u => new UserProfile
         {
             ID = u.ID,
             DisplayName = u.DisplayName,
             Email = u.Email,
             FilterAudio = u.FilterAudio,
             FilterTraslation = u.FilterTraslation,
             FilterVideo = u.FilterVideo,
             FilterSizes = u.FilterSizes,
             Identities = db.UserIdentity
                          .Where(i => i.UserID == u.ID)
                          .Select(i => new UserProfile.Identity
             {
                 Email = i.Email,
                 AuthProviderName = i.AuthProviderName,
                 AuthProviderID = i.AuthProviderID,
                 DisplayName = i.DisplayName
             }),
             RssHash = Sql2.MD5(Sql.ConvertTo <string> .From(u.Identifier))
         })
                .FirstOrDefault());
     }
 }
コード例 #2
0
        public IEnumerable <RssItem> GetPersonalFeed(string userHash)
        {
            using (var db = new DbTorronto())
            {
                var user = db.User
                           .FirstOrDefault(u => Sql.Like(Sql2.MD5(Sql.ConvertTo <string> .From(u.Identifier)), userHash));

                if (user == null)
                {
                    return(Enumerable.Empty <RssItem>());
                }

                var filter = db.TorrentUser
                             .Where(tu => tu.UserID == user.ID && tu.AddedRss != null && Sql2.IsNullOrFalse(tu.Torrent.Movie.IsCopyrighted));

                var orderedByAdded = filter
                                     .OrderByDescending(x => x.AddedRss)
                                     .Select(x => new RssItem
                {
                    Title       = TorrentTitle(x.Torrent.Movie.Title, x.Torrent.Title),
                    Link        = TorrentUrl(x.Torrent.InfoHash),
                    Description = x.Torrent.Movie.Description,
                    PubDate     = x.AddedRss.GetValueOrDefault()
                })
                                     .Take(20)
                                     .ToList();

                var orderedByUpdated = filter
                                       .OrderByDescending(x => x.Torrent.Updated)
                                       .Select(x => new RssItem
                {
                    Title       = TorrentTitle(x.Torrent.Movie.Title, x.Torrent.Title),
                    Link        = TorrentUrl(x.Torrent.InfoHash),
                    Description = x.Torrent.Movie.Description,
                    PubDate     = x.Torrent.Updated
                })
                                       .Take(20)
                                       .ToList();

                var items = orderedByAdded
                            .Union(orderedByUpdated)
                            .GroupBy(x => x.Link)
                            .Select(g => g.OrderByDescending(x => x.PubDate).First())
                            .OrderByDescending(x => x.PubDate)
                            .Take(20)
                            .ToList();

                return(items);
            }
        }