private void AddUserRole()
        {
            Console.WriteLine("Adding user role...");
            using (var db = new SocialNetworkDbContext())
            {
                var userAlbums          = db.UserAlbum.ToList();
                var albumsIdsWithOwners = new List <int>();
                for (int i = 0; i < userAlbums.Count; i++)
                {
                    var userAlbum = userAlbums[i];

                    if (!albumsIdsWithOwners.Contains(userAlbum.AlbumId))
                    {
                        userAlbum.UserRole = UserRole.Owner;
                        albumsIdsWithOwners.Add(userAlbum.AlbumId);
                        db.SaveChanges();
                    }

                    else
                    {
                        userAlbum.UserRole = UserRole.Viewer;
                        db.SaveChanges();
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void ImportAllFriendships(string filePath)
        {
            var parsedFriendships = new Friendships();

            using (var xmlStream = new StreamReader(filePath))
            {
                var xmlSer = new XmlSerializer(typeof(Friendships)).Deserialize(xmlStream);
                parsedFriendships = (Friendships)xmlSer;
            }

            var existingDbUsernames = db.Users.Select(u => u.Username).ToList();

            foreach (var parsedFriendship in parsedFriendships.Friendship)
            {
                ImportFirstUser(parsedFriendship.FirstUser, existingDbUsernames);
                ImportSecondUser(parsedFriendship.SecondUser, existingDbUsernames);
                db.SaveChanges();

                ImportFriendshipAndMessages(parsedFriendship);

                OptimizedDbSave();
            }

            db.SaveChanges();
        }
        private static void SeetTags(SocialNetworkDbContext db)
        {
            // Tags
            Console.WriteLine("Seeding tags...");

            int totalTags = db.Albums.Count() * 20;

            var tags = new List <Tag>();

            for (int i = 0; i < totalTags; i++)
            {
                Tag tag = new Tag
                {
                    Name = TagTransformer.Transform($"#tag{i}")
                };

                db.Tags.Add(tag);
                tags.Add(tag);
            }

            db.SaveChanges();

            // Tags & Albums
            Console.Write("Connecting tags & Albums...");

            var albumIds = db.Albums.Select(a => a.Id).ToList();

            foreach (Tag itemTag in tags)
            {
                Console.Write(".");

                int totalAlbumsForTag = random.Next(0, 15);

                for (int i = 0; i < totalAlbumsForTag; i++)
                {
                    int albumId = albumIds[random.Next(0, albumIds.Count)];

                    bool tagExistForAlbum = db
                                            .Albums
                                            .Any(a => a.Id == albumId &&
                                                 a.Tags.Any(t => t.TagId == itemTag.Id));

                    if (tagExistForAlbum)
                    {
                        i--;
                        continue;
                    }

                    itemTag.Albums.Add(new AlbumTag
                    {
                        AlbumId = albumId
                    });

                    db.SaveChanges();
                }
            }

            Console.WriteLine();
        }
Ejemplo n.º 4
0
        private static void SeedTags(SocialNetworkDbContext db)
        {
            const int totalTags = 500;

            var rnd = new Random();

            var albumIds = db
                           .Albums
                           .Select(a => a.Id)
                           .ToList();

            for (int i = 3; i < totalTags; i++)
            {
                var tag = new Tag
                {
                    Name = TagTransformer.Transform($"Tag {rnd.Next(100000, 999999)}")
                };

                db
                .Tags
                .Add(tag);

                db.SaveChanges();

                var tagInAlbum = rnd.Next(5, 20);

                for (int j = 0; j < tagInAlbum; j++)
                {
                    var albumToAddId = albumIds[rnd.Next(0, albumIds.Count)];

                    if (albumToAddId == i)
                    {
                        j--;
                        continue;
                    }

                    if (db.AlbumTags.Any(at => at.TagId == i && at.AlbumId == albumToAddId))
                    {
                        j--;
                        continue;
                    }

                    db
                    .Tags
                    .Where(t => t.Id == i)
                    .FirstOrDefault()
                    .Albums
                    .Add(new AlbumTag
                    {
                        AlbumId = albumToAddId
                    });

                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 5
0
        private static void SeedTags(SocialNetworkDbContext db)
        {
            int totalTags = db.Albums.Count() * 20;

            var tags = new List <Tag>();

            for (int i = 0; i < totalTags; i++)
            {
                var tag = new Tag
                {
                    Name = TagTransformer.Transform($"tag{i}")
                };

                tags.Add(tag);
                db
                .Tags
                .Add(tag);
            }

            db.SaveChanges();

            var albumIds = db
                           .Albums
                           .Select(a => a.Id)
                           .ToList();

            foreach (var tag in tags)
            {
                var totalAlbums = random.Next(0, 20);

                for (int i = 0; i < totalAlbums; i++)
                {
                    var albumId = albumIds[random.Next(0, albumIds.Count)];

                    var tagExistsForAlbum = db
                                            .Albums
                                            .Any(a => a.Id == albumId && a.Tags.Any(t => t.TagId == tag.Id));

                    if (tagExistsForAlbum)
                    {
                        i--;
                        continue;
                    }

                    tag
                    .Albums
                    .Add(new AlbumTag
                    {
                        AlbumId = albumId
                    });

                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 6
0
        private static void SeedDatabaseUsers(SocialNetworkDbContext context)
        {
            var allUsers = new List <User>();

            for (int i = 0; i < TotalUsersCount; i++)
            {
                var user = new User()
                {
                    Username         = $"User{i + 1}",
                    Password         = $"aA{i}@{i}{i}",
                    Email            = $"user{i}@abv.bg",
                    ProfilePicture   = $"www.pictures.com/{i}",
                    RegisteredOn     = DateTime.Now.AddDays(-20),
                    LastTimeLoggedIn = DateTime.Now,
                    Age       = 20 + i,
                    IsDeleted = false,
                };

                allUsers.Add(user);
                context.Users.Add(user);
            }

            context.SaveChanges();

            Random random = new Random();

            foreach (var user in allUsers)
            {
                var numberOfFriends = random.Next(1, 10);

                for (int j = 0; j < numberOfFriends; j++)
                {
                    var randomFriendId = random.Next(1, TotalUsersCount);
                    if (!user.Friends.Select(x => x.FriendId).Contains(randomFriendId))
                    {
                        var userFriend = new UserFriend()
                        {
                            UserId   = user.Id,
                            FriendId = randomFriendId,
                        };

                        user.Friends.Add(userFriend);
                    }
                    else
                    {
                        j--;
                    }
                }

                context.SaveChanges();
            }

            context.SaveChanges();
        }
Ejemplo n.º 7
0
        private static void SeedTags(SocialNetworkDbContext db)
        {
            int totalTags = db.Albums.Count() * 20;

            var validtags = new List <Tag>();

            for (int i = 0; i < totalTags; i++)
            {
                var tag = new Tag
                {
                    Name = TagTransformer.Transform($"tag{i}")
                };

                validtags.Add(tag);
            }

            db.Tags.AddRange(validtags);

            db.SaveChanges();
            Console.WriteLine("Tags created successfully!");

            var albumIds = db.Albums.Select(a => a.Id).ToList();

            foreach (var tag in validtags)
            {
                var totalAlbum = random.Next(0, 20);

                for (int i = 0; i < totalAlbum; i++)
                {
                    var albumId = albumIds[random.Next(0, albumIds.Count)];

                    var tagExistForAlbums = db.Albums
                                            .Any(a => a.Id == albumId && a.Tags.Any(t => t.TagId == tag.Id));

                    if (tagExistForAlbums)
                    {
                        i--;
                        continue;
                    }

                    var albumTag = new AlbumTag()
                    {
                        TagId   = tag.Id,
                        AlbumId = albumId
                    };

                    tag.Albums.Add(albumTag);
                    db.SaveChanges();
                }
                Console.WriteLine("AlbumTags created successfully!");
            }
        }
Ejemplo n.º 8
0
        private void ProcessPosts(IEnumerable <PostXmlModel> posts)
        {
            var context = new SocialNetworkDbContext();

            foreach (var p in posts)
            {
                Post post = new Post()
                {
                    PostenOn = p.PostedOn,
                    Content  = p.Content,
                };

                var usernames = p.Users.Split(',');
                var user      = new User();
                foreach (var username in usernames)
                {
                    user = context.Users.SingleOrDefault(u => u.UserName == username);
                    post.TaggedUsers.Add(user);
                }


                context.Posts.Add(post);
            }

            context.SaveChanges();
        }
Ejemplo n.º 9
0
        private void SeedTagsToAlbums()
        {
            Console.WriteLine("Seeding Tags to Albums...");

            using (var context = new SocialNetworkDbContext())
            {
                var albums = context.Albums.ToList();
                var tagIds = context.Tags.Select(t => t.Id).ToList();

                for (int i = 0; i < albums.Count; i++)
                {
                    var currentAlbum = albums[i];
                    var tagsCount    = random.Next(2, MaxTagInAlbum);

                    for (int j = 0; j < tagsCount; j++)
                    {
                        try
                        {
                            currentAlbum.Tags.Add(new AlbumTag
                            {
                                TagId = tagIds[random.Next(0, tagIds.Count)]
                            });

                            context.SaveChanges();
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }
        }
Ejemplo n.º 10
0
        private void SeedTags()
        {
            Console.WriteLine("Seeding Tags...");

            using (var context = new SocialNetworkDbContext())
            {
                for (int i = 0; i < TotalTags; i++)
                {
                    context.Tags.Add(new Tag
                    {
                        Name = TagTransformer.Transform($"Tag  {i}")
                    });
                }

                // Testing invalid tags
                //var invalidTags = new[] { "myCat", "#no wake up", "aaaaaaaaaaaaaaaaaaXCutThisEnd", "me and my bff doing selfie" };

                //foreach (var invalidTag in invalidTags)
                //{
                //    context.Tags.Add(new Tag { Name = TagTransformer.Transform(invalidTag) });
                //}

                context.SaveChanges();
            }
        }
Ejemplo n.º 11
0
        private UserProfile GetUser(SocialNetworkDbContext db, UserXmlModel model, HashSet <string> addedUsersSoFar)
        {
            if (addedUsersSoFar.Contains(model.Username))
            {
                return(db.UserProfiles.FirstOrDefault(u => u.Username == model.Username));
            }
            else
            {
                addedUsersSoFar.Add(model.Username);

                var user = new UserProfile
                {
                    Username     = model.Username,
                    FirstName    = model.FirstName,
                    LastName     = model.LastName,
                    RegisteredOn = model.RegisteredOn
                };

                foreach (var image in model.Images)
                {
                    user.Images.Add(new Image
                    {
                        ImageUrl      = image.ImageUrl,
                        FileExtension = image.FileExtension
                    });
                }

                db.UserProfiles.Add(user);
                db.SaveChanges();

                return(user);
            }
        }
Ejemplo n.º 12
0
        private static void SeedAlbums(SocialNetworkDbContext db)
        {
            const int totalAlbums = 100;

            var userIds = db
                          .Users
                          .Select(u => u.Id)
                          .ToList();

            var rnd = new Random();

            for (int i = 0; i < totalAlbums; i++)
            {
                db
                .Albums
                .Add(new Album
                {
                    Name            = "Album" + i,
                    IsPublic        = true,
                    BackgroundColor = "Color",
                    UserId          = userIds[rnd.Next(0, userIds.Count)]
                });
            }

            db.SaveChanges();
        }
Ejemplo n.º 13
0
        private void SeedAlbums()
        {
            Console.WriteLine("Seeding Albums...");

            using (var context = new SocialNetworkDbContext())
            {
                var userIds = context.Users.Select(u => u.Id).ToList();

                for (int i = 0; i < userIds.Count; i++)
                {
                    var currentUserId = userIds[i];
                    var userAlbums    = random.Next(0, TotalAlbumsPerUser);

                    for (int j = 0; j < userAlbums; j++)
                    {
                        var isPublic = false;
                        if (j % 3 == 0)
                        {
                            isPublic = true;
                        }

                        context.Albums.Add(new Album
                        {
                            Name            = $"Album {j}/{userIds[i]}",
                            BackgroundColor = "default",
                            UserId          = currentUserId,
                            IsPublic        = isPublic
                        });

                        context.SaveChanges();
                    }
                }
            }
        }
        // For Task 4 - Queries

        //private void PrintAlbumsWithAGivenTag(SocialNetworkDbContext db)
        //{
        //    var tagText = Console.ReadLine();

        //    var result = db
        //        .Albums
        //        .Select(a => new
        //        {
        //            a.Name,
        //            a.User.Username,
        //            a.Tags
        //        })
        //        .Where(a => a.Tags.All(t => t.Tag.Name == tagText))
        //        .OrderByDescending(a => a.Tags.Count)
        //        .ThenBy(a => a.Name)
        //        .ToList();

        //    foreach (var album in result)
        //    {
        //        Console.WriteLine($"Album: {album.Name}");
        //        Console.WriteLine($"--Owner: {album.Username}");
        //    }
        //}

        private void SeedAlbumsInUsers()
        {
            Console.WriteLine("Adding Albums to User...");
            using (var db = new SocialNetworkDbContext())
            {
                var users  = db.Users.ToList();
                var albums = db.Albums.ToList();

                for (int i = 0; i < users.Count; i++)
                {
                    var user = users[i];

                    var albumsInUserCount = random.Next(5, 15);
                    for (int j = 0; j < albumsInUserCount; j++)
                    {
                        var album = albums[random.Next(0, albums.Count)];
                        if (user.Albums.All(a => a.AlbumId != album.Id))
                        {
                            var albumInUser = new UserAlbum {
                                AlbumId = album.Id
                            };
                            user.Albums.Add(albumInUser);
                            db.SaveChanges();
                        }
                    }
                }
            }
        }
        private void SeedAlbumTags()
        {
            Console.WriteLine("Add tags to albums...");
            using (var db = new SocialNetworkDbContext())
            {
                var tags   = db.Tags.ToList();
                var albums = db.Albums.ToList();

                for (int i = 0; i < tags.Count; i++)
                {
                    var tag = tags[i];

                    var albumsCount = random.Next(3, 10);
                    for (int j = 0; j < albumsCount; j++)
                    {
                        var album = albums[random.Next(0, albums.Count)];
                        if (tag.Albums.All(a => a.AlbumId != album.Id))
                        {
                            var albumInTag = new AlbumTag {
                                AlbumId = album.Id
                            };

                            tag.Albums.Add(albumInTag);
                            db.SaveChanges();
                        }
                    }
                }
            }
        }
        //For Task 3 - Seed

        //private void SeedAlbums()
        //{
        //    Console.WriteLine("Seeding Albums...");
        //    using (var db = new SocialNetworkDbContext())
        //    {
        //        var pictures = db.Pictures.ToList();

        //        for (int i = 0; i < numberOfAlbums; i++)
        //        {
        //            var users = db.Users.ToList();
        //            var user = users[random.Next(0, users.Count)];

        //            var album = new Album
        //            {
        //                BackgroundColor = (BackgroundColor)random.Next(0, 7),
        //                IsPublic = RandomBooleanGenerator(50),
        //                Name = $"Album {RandomStringGenerator(lowerLetters, random.Next(3, 6), random)}",
        //                UserId = user.Id
        //            };

        //            var numberOfPictures = random.Next(3, 20);
        //            for (int j = 0; j < numberOfPictures; j++)
        //            {
        //                var pictureId = pictures[random.Next(0, pictures.Count)].Id;

        //                if (album.Pictures.All(p => p.PictureId != pictureId))
        //                {
        //                    var picturesInAlbum = new PictureAlbum
        //                    {
        //                        PictureId = pictureId
        //                    };

        //                    album.Pictures.Add(picturesInAlbum);
        //                }

        //                db.SaveChanges();
        //            }

        //            db.Albums.Add(album);
        //            db.SaveChanges();
        //        }
        //    }
        //}

        // For Task 4 - Queries

        //private void PrintAllAlbumsWithOwnerAndPicturesCount(SocialNetworkDbContext db)
        //{
        //    var result = db
        //        .Albums
        //        .Select(a => new
        //        {
        //            a.User.Username,
        //            a.Pictures.Count,
        //            a.Name
        //        })
        //        .OrderByDescending(a => a.Count)
        //        .ThenBy(a => a.Username)
        //        .ToList();

        //    foreach (var album in result)
        //    {
        //        Console.WriteLine($"Album Title: {album.Name}" +
        //                          $"{Environment.NewLine}Owner: {album.Username}" +
        //                          $"{Environment.NewLine}Total of {album.Count} pictures");
        //    }
        //}

        //For Task 3 - Queries

        //private void PrintPicturesThatAreIncludedInMoreThen2Albums(SocialNetworkDbContext db)
        //{
        //    var result = db
        //        .Pictures
        //        .Where(p => p.Albums.Count > 2)
        //        .Select(p => new
        //        {
        //            p.Title,
        //            AlbumNames = p.Albums.Select(a => a.Album.Name),
        //            OwnerNames = p.Albums.Select(a => a.Album.User.Username)
        //        })
        //        .OrderByDescending(p => p.AlbumNames.Count())
        //        .ThenBy(p => p.Title)
        //        .ToList();

        //    foreach (var picture in result)
        //    {
        //        Console.WriteLine($"Picture Title: {picture.Title}");
        //        Console.WriteLine($"--Picture Albums: {string.Join(", ", picture.AlbumNames)}");
        //        Console.WriteLine($"--Album Owners: {string.Join(", ", picture.OwnerNames)}");
        //    }
        //}

        //For Task 3 - Queries

        //private void PrintAlbumsOfUser(SocialNetworkDbContext db)
        //{
        //    Console.Write("Enter User ID: ");
        //    var pictures = db.Pictures.ToList();
        //    var userId = int.Parse(Console.ReadLine());
        //    var username = db.Users.ToList()[userId].Username;
        //    var result = db
        //        .Albums
        //        .Where(a => a.UserId == userId)
        //        .Select(a => new
        //        {
        //            a.Name,
        //            a.Pictures,
        //            a.IsPublic
        //        })
        //        .OrderBy(a => a.Name)
        //        .ToList();

        //    Console.WriteLine(username);
        //    foreach (var album in result)
        //    {
        //        Console.WriteLine($"-Album: {album.Name}");
        //        if (album.IsPublic)
        //        {
        //            Console.WriteLine("-Pictures:");

        //            foreach (var picture in album.Pictures)
        //            {
        //                Console.WriteLine($"--Title: {pictures[picture.PictureId].Title}");
        //                Console.WriteLine($"--Path: {pictures[picture.PictureId].Path}");
        //                Console.WriteLine();
        //            }
        //        }

        //        else
        //        {
        //            Console.WriteLine("Private content!");
        //        }
        //    }
        //}

        private void SeedTags()
        {
            Console.WriteLine("Seeding Tags...");

            using (var db = new SocialNetworkDbContext())
            {
                Console.Write("Add Tag: ");

                var text = Console.ReadLine();
                while (text != "end")
                {
                    var tagName = TagTransformer.Transformer(text);
                    var tag     = new Tag {
                        Name = tagName
                    };

                    db.Tags.Add(tag);
                    db.SaveChanges();

                    Console.WriteLine($"{tagName} was added to database.");
                    Console.WriteLine("Type \"end\" if you want to exit");
                    Console.Write("Add Tag: ");
                    text = Console.ReadLine();
                }
            }
        }
Ejemplo n.º 17
0
        private static void SeedUsers(SocialNetworkDbContext db)
        {
            const int totalUsers = 100;

            var rnd         = new Random();
            var currentDate = DateTime.Now;

            var users = new List <User>();

            for (int i = 0; i < totalUsers; i++)
            {
                var user = new User
                {
                    Username         = $"User {i + 1}",
                    Age              = rnd.Next(1, 121),
                    Email            = $"test{i}{i + 1}{i + 2}[email protected]",
                    RegisteredOn     = currentDate.AddDays(rnd.Next(-1000, -100)),
                    IsDeleted        = i % 7 == 0 ? true : false,
                    LastTimeLoggedIn = currentDate.AddDays(rnd.Next(-100, 0)),
                    Password         = "******"
                };

                users.Add(user);
            }

            db
            .Users
            .AddRange(users);

            db.SaveChanges();
        }
Ejemplo n.º 18
0
        private void SeedPicturesToAlbums()
        {
            Console.WriteLine("Seeding Pictures to Albums...");

            using (var context = new SocialNetworkDbContext())
            {
                var albums     = context.Albums.ToList();
                var pictureIds = context.Pictures.Select(p => p.Id).ToList();

                for (int i = 0; i < albums.Count; i++)
                {
                    var currentAlbum  = albums[i];
                    var picturesCount = random.Next(0, MaxPicturesInAlbum);

                    for (int j = 0; j < picturesCount; j++)
                    {
                        try
                        {
                            currentAlbum.Pictures.Add(new PictureAlbum
                            {
                                PictureId = pictureIds[random.Next(0, pictureIds.Count)]
                            });

                            context.SaveChanges();
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }
        }
Ejemplo n.º 19
0
        private void SeedUsers()
        {
            using var context = new SocialNetworkDbContext(this.ContextOptions);

            context.Database.EnsureDeleted();
            context.Database.EnsureCreated();

            var user = new User
            {
                FirstName = "Test user",
                LastName  = "one",
                Email     = "*****@*****.**"
            };

            var secondUser = new User
            {
                FirstName = "Test user",
                LastName  = "two",
                Email     = "*****@*****.**"
            };

            var thirdUser = new User
            {
                FirstName = "Test user",
                LastName  = "three",
                Email     = "*****@*****.**"
            };

            context.Users.AddRange(user, secondUser, thirdUser);
            context.SaveChanges();
        }
Ejemplo n.º 20
0
        private void SeedUsers()
        {
            Console.WriteLine("Seeding Users...");

            using (var context = new SocialNetworkDbContext())
            {
                for (int i = 0; i < TotalUsers; i++)
                {
                    var isDeleted = false;
                    if (i % 10 == 0)
                    {
                        isDeleted = true;
                    }

                    var user = new User
                    {
                        Username = $"User#{i}",
                        Password = $"PASS!word@{i}",
                        Email    = $"user{i * random.Next(0, TotalUsers)}@gmail.com",
                        Age      = random.Next(1, 121),
                        //ProfilePicture = new byte[] { 1, 0, 1, 1, 0 }, // Disable for Task 3
                        RegisteredOn = DateTime.Now.AddDays(-i * 10 + TotalUsers),
                        IsDeleted    = isDeleted
                    };

                    context.Users.Add(user);
                }

                context.SaveChanges();
            }
        }
Ejemplo n.º 21
0
        private static void SeedDatabaseAlbumAndPictures(SocialNetworkDbContext context)
        {
            var random = new Random();

            //albums
            var allUsers = context.Users.ToArray();

            for (int i = 0; i < allUsers.Count(); i++)
            {
                var currentUser = allUsers[i];

                var randomAlbumsCount = random.Next(0, TotalAlbumCount / 2);
                for (int j = 0; j < randomAlbumsCount; j++)
                {
                    var album = new Album()
                    {
                        Name            = $"MyAlbum{i}",
                        BackgroundColor = $"color{i}",
                        IsPublic        = true,
                        UserId          = currentUser.Id
                    };

                    var randomPictureCount = random.Next(1, TotalPicturesCount);
                    for (int k = 0; k < randomPictureCount; k++)
                    {
                        var picture = new Picture()
                        {
                            Title   = $"Picture{k}{i}",
                            Caption = $"Caption{k}{i}",
                            Path    = $"C://pictures/{k}{i}",
                            Album   = album
                        };

                        context.Pictures.Add(picture);
                        album.Pictures.Add(picture);
                        context.SaveChanges();
                    }

                    currentUser.Albums.Add(album);
                    context.SaveChanges();
                }
            }

            context.SaveChanges();
        }
        private void SeedFriendships()
        {
            using (var db = new SocialNetworkDbContext())
            {
                Console.Write("Adding friends.");

                var users = db.Users.ToList();

                int friendshipsCounter = 0;
                for (int i = 0; i < numberOfUsers; i++)
                {
                    int numberOfFriends = random.Next(15, numberOfUsers);
                    var user            = users[i];
                    for (int j = 0; j < numberOfFriends; j++)
                    {
                        var friend    = users[random.Next(0, numberOfFriends)];
                        var friendIds = users.Select(u => u.Id).ToList();
                        friendIds.Remove(user.Id);
                        if (user.FriendshipsMade.All(fm => fm.FriendId != friend.Id) &&
                            user.FriendshipsAccepted.All(fa => fa.FriendId != user.Id))
                        {
                            var friendshipsMade = new UserFriend
                            {
                                UserId   = user.Id,
                                FriendId = friend.Id
                            };

                            var friendshipsAccepted = new UserFriend
                            {
                                UserId   = friend.Id,
                                FriendId = user.Id
                            };

                            try
                            {
                                user.FriendshipsAccepted.Add(friendshipsAccepted);
                                user.FriendshipsMade.Add(friendshipsMade);

                                friendshipsCounter++;
                                db.SaveChanges();
                            }
                            catch (Exception)
                            {
                            }
                        }
                    }

                    if (i % 15 == 0)
                    {
                        Console.Write(".");
                    }
                }

                Console.WriteLine();
                Console.WriteLine($"Total of {friendshipsCounter} friendships has been made.");
            }
        }
Ejemplo n.º 23
0
        public static void Main()
        {
            var dbContext   = new SocialNetworkDbContext();
            var importer    = new XmlImporter(dbContext);
            var friendships = importer.ImportFriendshipFromXml("..\\..\\XmlFiles\\Friendships-Test.xml");

            friendships.ForEach(friendship => dbContext.Friendships.Add(friendship));
            dbContext.SaveChanges();
        }
Ejemplo n.º 24
0
        private void ProcessFrienships(IEnumerable <FriendshipXmlModel> friendships)
        {
            this.textWrite.Write("Importing friendships");

            var addedFriendships = 0;
            var db = new SocialNetworkDbContext();

            db.Configuration.AutoDetectChangesEnabled = false;
            db.Configuration.ValidateOnSaveEnabled    = false;

            var savedUsers = new HashSet <string>();

            foreach (var friendship in friendships)
            {
                var firstUser  = this.GetUser(db, friendship.FirstUser, savedUsers);
                var secondUser = this.GetUser(db, friendship.SecondUser, savedUsers);

                var newFriendship = new Friendship
                {
                    Approved     = friendship.Approved,
                    FriendsSince = friendship.FriendsSince,
                    FirstUser    = firstUser,
                    SecondUser   = secondUser,
                };

                foreach (var message in friendship.Messages)
                {
                    db.Messages.Add(new Message
                    {
                        Author     = message.Author == firstUser.Username ? firstUser : secondUser,
                        Content    = message.Content,
                        Friendship = newFriendship,
                        SeenOn     = message.SeenOn,
                        SentOn     = message.SentOn
                    });
                }

                addedFriendships++;

                if (addedFriendships % 10 == 0)
                {
                    this.textWrite.Write(".");
                }

                db.SaveChanges();

                if (addedFriendships % 100 == 0)
                {
                    db = new SocialNetworkDbContext();
                    db.Configuration.AutoDetectChangesEnabled = false;
                    db.Configuration.ValidateOnSaveEnabled    = false;
                }
            }

            db.Configuration.AutoDetectChangesEnabled = true;
            db.Configuration.ValidateOnSaveEnabled    = true;
        }
        private static void SeedForSharedAlbums(SocialNetworkDbContext db)
        {
            var userIds = db.Users
                          .Select(u => u.Id)
                          .ToList();

            var albums = db.Albums.ToList();


            foreach (Album album in albums)
            {
                int totalOwnersForAlbum = random.Next(0, 5);

                album.CoOwners.Add(new AlbumUser
                {
                    UserId = album.OwnerId
                });

                db.SaveChanges();

                for (int i = 0; i < totalOwnersForAlbum; i++)
                {
                    int userId = userIds[random.Next(0, userIds.Count)];

                    bool ownerExistForAlbum = db
                                              .Albums
                                              .Any(a => a.Id == album.Id &&
                                                   a.CoOwners.Any(t => t.UserId == userId));

                    if (ownerExistForAlbum)
                    {
                        i--;
                        continue;
                    }

                    album.CoOwners.Add(new AlbumUser
                    {
                        UserId = userId
                    });

                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 26
0
        private static void MakeFriendships(SocialNetworkDbContext db)
        {
            var rnd = new Random();

            var userIds = db
                          .Users
                          .Select(u => u.Id)
                          .ToList();


            for (int i = 0; i < userIds.Count; i++)
            {
                var userId  = userIds[i];
                var friends = rnd.Next(5, 10);

                for (int j = 0; j < friends; j++)
                {
                    var isValidFriendship = true;

                    var friendIdToAdd = userIds[rnd.Next(0, userIds.Count)];

                    if (friendIdToAdd == userId)
                    {
                        isValidFriendship = false;
                        j--;
                        continue;
                    }

                    if (db
                        .Friendships
                        .Any(f => (f.FromUserId == userId && f.ToUserId == friendIdToAdd) ||
                             (f.ToUserId == userId && f.FromUserId == friendIdToAdd)))
                    {
                        isValidFriendship = false;
                        j--;
                        continue;
                    }

                    if (isValidFriendship)
                    {
                        db
                        .Users
                        .Where(u => u.Id == userId)
                        .FirstOrDefault()
                        .ToFriends
                        .Add(new Friendship
                        {
                            FromUserId = friendIdToAdd
                        });
                    }

                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 27
0
        public void Post(InputPostDto inputPostDto)
        {
            SocialNetworkDbContext context = new SocialNetworkDbContext();
            Post           post            = mapper.FromInputPostDtoToPost(inputPostDto);
            Post           addedPost       = postManager.AddNewPost(post);
            List <Content> contents        = contentMapper.GetContentList(inputPostDto.Media);
            List <Content> addedContent    = contentManager.AddContent(contents);
            Post           newPost         = context.Posts.Where(p => p.Id == addedPost.Id).First();

            newPost.Content = addedContent;
            context.SaveChanges();
        }
Ejemplo n.º 28
0
        private static void AddPicturesInAlbums(SocialNetworkDbContext db)
        {
            var albumIds = db
                           .Albums
                           .Select(a => a.Id)
                           .ToList();

            var pictureIds = db
                             .Pictures
                             .Select(p => p.Id)
                             .ToList();

            var rnd = new Random();

            var albumPictures = new List <AlbumPicture>();

            for (int i = 0; i < albumIds.Count; i++)
            {
                var albumId      = albumIds[i];
                var pictureToAdd = rnd.Next(20, 100);

                for (int j = 0; j < pictureToAdd; j++)
                {
                    var pictureId = rnd.Next(0, pictureIds.Count);

                    if (albumId == pictureId)
                    {
                        j--;
                        continue;
                    }

                    if (db.AlbumPictures.Any(ap => ap.AlbumId == albumId && ap.PictureId == pictureId))
                    {
                        j--;
                        continue;
                    }

                    db
                    .Albums
                    .Where(a => a.Id == albumId)
                    .FirstOrDefault()
                    .Pictures
                    .Add(new AlbumPicture
                    {
                        PictureId = pictureId
                    });

                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 29
0
        private void ProcessPosts(IEnumerable <PostXmlModel> posts)
        {
            this.textWrite.Write("Importing posts");

            var addedPosts = 0;
            var db         = new SocialNetworkDbContext();

            db.Configuration.AutoDetectChangesEnabled = false;
            db.Configuration.ValidateOnSaveEnabled    = false;

            foreach (var post in posts)
            {
                var usernames = post.Users.Split(',');
                var users     = db.UserProfiles
                                .Where(u => usernames.Contains(u.Username))
                                .ToList();

                var newPost = new Post
                {
                    PostedOn = post.PostedOn,
                    Content  = post.Content
                };

                foreach (var user in users)
                {
                    newPost.TaggedUsers.Add(user);
                }

                db.Posts.Add(newPost);

                addedPosts++;

                if (addedPosts % 10 == 0)
                {
                    this.textWrite.Write(".");
                }

                if (addedPosts % 100 == 0)
                {
                    db.SaveChanges();
                    db = new SocialNetworkDbContext();
                    db.Configuration.AutoDetectChangesEnabled = false;
                    db.Configuration.ValidateOnSaveEnabled    = false;
                }
            }

            db.SaveChanges();
            db.Configuration.AutoDetectChangesEnabled = true;
            db.Configuration.ValidateOnSaveEnabled    = true;
        }
Ejemplo n.º 30
0
        private static void SeedDatabaseWithTags(SocialNetworkDbContext context)
        {
            var random = new Random();

            var allAlbums        = context.Albums.ToArray();
            var allTags          = new List <Tag>();
            var randomAlbumCount = random.Next(1, TotalAlbumCount / 2);

            for (int i = 0; i < randomAlbumCount; i++)
            {
                var currentAlbum = allAlbums[i];

                Console.Write("Enter tag name: ");
                string input   = Console.ReadLine();
                var    tagName = TagTransofrmer.Transform(input);

                var tag = new Tag()
                {
                    Name = tagName + $"{i}"
                };

                var albumTag = new AlbumTag()
                {
                    AlbumId = currentAlbum.Id,
                    TagId   = tag.Id
                };

                allTags.Add(tag);
                tag.Albums.Add(albumTag);
                currentAlbum.Tags.Add(albumTag);
                context.Tags.Add(tag);

                context.SaveChanges();
            }

            context.SaveChanges();
        }
Ejemplo n.º 31
0
        public static void Main()
        {
            SocialNetworkDbContext dbSocial = new SocialNetworkDbContext();

            using (dbSocial)
            {
                User newUser = new User();
                newUser.Username = "******";
                newUser.FirtsName = "John";
                newUser.LastName = "Snow";
                newUser.RegistrationDate = new System.DateTime(1002, 02, 03);

                dbSocial.Users.Add(newUser);
                dbSocial.SaveChanges();
                System.Console.WriteLine("Database created and user added.");
            }
        }