Example #1
0
        public void SubscribeCurrentUserToChannel(AddChannelDto channelId)
        {
            var currentUserId = this.sessionProvider.GetCurrentUserId();
            var isUserSubscribedToChannelUrl = this.rssSubscriptionsRepository.IsUserSubscribedToChannelUrl(currentUserId, channelId.RssChannelLink);

            if (!isUserSubscribedToChannelUrl)
            {
                var idByChannelUrl = this.rssChannelsRepository
                                     .GetIdByChannelUrl(new List <string> {
                    channelId.RssChannelLink
                })
                                     .Single();

                var rssChannelSubscription = new RssChannelSubscription
                {
                    RssChannelId = idByChannelUrl,
                    UserId       = currentUserId,
                    Title        = channelId.RssChannelName
                };

                this.rssSubscriptionsRepository.SaveToDatabase(new List <RssChannelSubscription> {
                    rssChannelSubscription
                });
            }
        }
        public void CreateNewSubscriptionForUserAndChannel(long userId, long channelId)
        {
            var channelTitle = this.database.RssChannels
                               .Where(channel => channel.Id == channelId)
                               .Select(channel => channel.Title)
                               .Single();

            var rssChannelSubscription = new RssChannelSubscription(channelId, userId, channelTitle);

            this.database.RssChannelsSubscriptions.Add(rssChannelSubscription);
            this.database.SaveChanges();
        }
Example #3
0
        public RssChannelSubscription LoadChannelInformation(long subscriptionId)
        {
            var userSubscription =
                this.database
                .UsersSubscriptions
                .Include(x => x.Observed)
                .Single(x => x.Id == subscriptionId);

            var rssChannelSubscription = new RssChannelSubscription
            {
                Title   = userSubscription.Observed.DisplayName,
                Created = userSubscription.Created
            };

            return(rssChannelSubscription);
        }
Example #4
0
        public void CreateSubscriptions()
        {
            var users    = this.usersRepository.GetAllUsers();
            var channels = this.rssChannelsRepository.LoadAllChannels();
            var r        = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < 1000; i++)
            {
                var u = users[r.Next(users.Count)];
                var c = channels[r.Next(channels.Count)];

                var rssChannelSubscription = new RssChannelSubscription(c.Id, u.Id, c.Title);
                this.rssSubscriptionRepository.SaveToDatabase(new List <RssChannelSubscription> {
                    rssChannelSubscription
                });
            }
        }
Example #5
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();
            }
        }