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