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()); } }
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); } }