Beispiel #1
0
        private RssStatistics ToRssStatistics(RssEntryToRead model)
        {
            var projection = new RssStatistics
            {
                Id      = model.RssEntry.Id,
                Name    = model.RssEntry.Title,
                Preview = model.RssEntry.PreviewText,
            };

            return(projection);
        }
Beispiel #2
0
        public void CopyRssThatWerePublishedAfterLastReadTimeToUser(long currentUserId, List <RssChannelSubscription> subscriptions)
        {
            var rssChannelsIds = subscriptions.Select(x => x.RssChannelId).ToList();

            var rssEntries = this.database.RssEntries
                             .Where(e => rssChannelsIds.Contains(e.RssChannelId))
                             .Include(e => e.RssEntryToRead)
                             .Where(e => e.RssEntryToRead == null)
                             .ToList();


            var toread = new List <RssEntryToRead>(rssEntries.Count);

            rssEntries.ForEach(entry =>
            {
                var rssEntryToRead = new RssEntryToRead(
                    entry,
                    subscriptions.Single(x => x.RssChannelId == entry.RssChannelId).Id);
                toread.Add(rssEntryToRead);
            });

            this.database.RssEntriesToRead.AddRange(toread);
            this.database.SaveChanges();
        }
Beispiel #3
0
        static void Main()
        {
            var xxxxxx = 1000;

            ItanDatabaseContext database = new ItanDatabaseContext();

            database.Configuration.ValidateOnSaveEnabled = false;

            List <User> users = new List <User>();

            Console.WriteLine($"creating {xxxxxx} users ");
            for (int i = 0; i < xxxxxx; i++)
            {
                Console.WriteLine($"{i:D4} of {xxxxxx}");
                var entity = new User {
                    DisplayName = Faker.NameFaker.MaleName(), Email = Faker.InternetFaker.Email()
                };
                users.Add(entity);
                database.Users.Add(entity);
            }

            database.SaveChanges();

            var rssChannels = database.RssChannels.Include(i => i.RssEntries).ToList();

            var rssChannelsSubscriptions = new List <RssChannelSubscription>();

            Console.WriteLine("creating subscriptions");
            for (int i = 0; i < xxxxxx; i++)
            {
                Console.WriteLine($"{i:D4} of {xxxxxx}");
                for (var index = 0; index < rssChannels.Count; index++)
                {
                    var rssChannel = rssChannels[index];
                    Console.WriteLine($"{i:D4}\t{index:D5} of {rssChannels.Count}");
                    var rssChannelSubscription = new RssChannelSubscription(rssChannel.Id, users[i].Id, rssChannel.Title);
                    rssChannelsSubscriptions.Add(rssChannelSubscription);
                }
            }

            database.RssChannelsSubscriptions.AddRange(rssChannelsSubscriptions);
            database.SaveChanges();


            var rssEntriesToRead         = new List <RssEntryToRead>();
            var eventRssUserInteractions = new List <EventRssUserInteraction>();

            for (int i = 0; i < xxxxxx; i++)
            {
                for (var index = 0; index < rssChannels.Count; index++)
                {
                    var rssChannel = rssChannels[index];
                    for (var rssEntryIndex = 0; rssEntryIndex < rssChannel.RssEntries.Count; rssEntryIndex++)
                    {
                        Console.WriteLine($"{i:d5} of {xxxxxx}\t channel:{index:d5} of {rssChannels.Count}\t{rssEntryIndex:d5} of {rssChannel.RssEntries.Count}");
                        var rssChannelRssEntry = rssChannel.RssEntries[rssEntryIndex];
                        var rssEntryToRead     = new RssEntryToRead
                        {
                            IsRead     = Faker.BooleanFaker.Boolean(),
                            IsViewed   = Faker.BooleanFaker.Boolean(),
                            RssEntryId = rssChannelRssEntry.Id,
                            RssChannelSubscriptionId =
                                rssChannelsSubscriptions.Single(
                                    x => x.UserId == users[i].Id && x.RssChannelId == rssChannel.Id).Id,
                        };
                        rssEntriesToRead.Add(rssEntryToRead);
                        var eventRssUserInteraction = new EventRssUserInteraction
                        {
                            InteractionType = Faker.EnumFaker.SelectFrom <InteractionType>(),
                            RssEntryId      = rssChannelRssEntry.Id,
                            UserId          = users[i].Id
                        };
                        eventRssUserInteractions.Add(eventRssUserInteraction);
                    }
                }

                database.RssEntriesToRead.AddRange(rssEntriesToRead);
                database.SaveChanges();

                database.EventsRssUserInteraction.AddRange(eventRssUserInteractions);
                database.SaveChanges();

                rssEntriesToRead.Clear();
                eventRssUserInteractions.Clear();
            }
        }