Ejemplo n.º 1
0
        private static void SeedUsers(SocialNetworkDbContext db)
        {
            const int totalUsers = 50;

            var biggestUserId = db.Users.Select(u => u.Id).FirstOrDefault();

            var allUsers = new List <User>();

            for (int i = biggestUserId; i < biggestUserId + totalUsers; i++)
            {
                var user = new User
                {
                    Username         = $"Username {i}",
                    Password         = $"Passw{i}r2@d#$",
                    Email            = $"email@email{i}.com",
                    RegisteredOn     = DateTime.Now.AddDays(100 + i * 10),
                    LastTimeLoggedIn = DateTime.Now.AddDays(i),
                    Age = i + 1
                };

                db.Add(user);
                allUsers.Add(user);
            }

            db.SaveChanges();

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

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

                var totalFriends = random.Next(5, 11);

                for (int j = 0; j < totalFriends; j++)
                {
                    var friendId = userIds[random.Next(0, userIds.Count)];

                    var validFriendShip = true;

                    // Cannot be friend to myself
                    if (friendId == currentUserId)
                    {
                        validFriendShip = false;
                    }

                    var friendShipExists = db
                                           .FriendShips
                                           .Any(f => (f.FromUserId == currentUserId && f.ToUserId == friendId) ||
                                                (f.FromUserId == friendId && f.ToUserId == currentUserId));

                    if (friendShipExists)
                    {
                        validFriendShip = false;
                    }

                    if (!validFriendShip)
                    {
                        j--;
                        continue;
                    }

                    db
                    .FriendShips
                    .Add(new FriendShip
                    {
                        FromUserId = currentUserId,
                        ToUserId   = friendId
                    });

                    db.SaveChanges();
                }
            }
        }