public static void Main()
        {
            //AddUsers();
            //PostToUser(1, 2, "Hi Plami, Hi are you?");
            //CommentToUserPost(2, 1, "I am fine, thank you.");
            //LikeUserPost(2, 1);
            //AddGroups();
            //AddUserToGroup(1, 1);
            //AddUserToGroup(2, 1);
            //AddUserToGroup(1, 2);

            var context = new SocialNetworkContext();
            //var posts = context.Users.Find(2).UserPosts;
            //foreach (var post in posts)
            //{
            //    Console.WriteLine("User is: {0}", context.Users.Find(2).Name);
            //    Console.WriteLine("Author: {0}, Target: {1}", post.Author.Name, post.User.Name);
            //    Console.WriteLine(post.Content);
            //}

            var group = context.Groups.Find(1);

            foreach (var member in group.Members)
            {
                Console.WriteLine("Member: {0}", member.Name);
            }
            //PostToGroup(1, 1, "Ho ho ho");
            //PostToGroup(2, 1, "Ha ha ha");
            foreach (var post in context.Groups.Find(1).Posts)
            {
                Console.WriteLine("Content: {0}", post.Content);
            }
        }
Пример #2
0
        private void ListAllAlbumsWithUser(SocialNetworkContext db)
        {
            var albums = db.Albums.
                         Select(a => new
            {
                AlbumName = a.Name,
                Users     = a.AlbumHolders.Select(ah => new
                {
                    Username = ah.User.Username,
                    Role     = ah.Role
                }).OrderBy(u => u.Role).ThenBy(u => u.Username)
            })
                         .ToList()
                         .OrderBy(a => a.Users.First().Username)
                         .ThenByDescending(a => a.Users.Where(u => u.Role == Role.Viewer).Count())
                         .ToList();

            foreach (var alb in albums)
            {
                Console.WriteLine($"Album: {alb.AlbumName}");
                foreach (var user in alb.Users)
                {
                    Console.WriteLine($"--User: {user.Username}, role = {user.Role}");
                }
            }
        }
Пример #3
0
 public XmlParser(SocialNetworkContext db)
 {
     this.xMLDocFriendships = XDocument.Load("XmlFiles/Friendships.xml");
     this.xMLDocPosts       = XDocument.Load("XmlFiles/Posts.xml");
     this.users             = new HashSet <User>();
     this.db = db;
 }
Пример #4
0
        private void ListPictureInMultipleAlbums(SocialNetworkContext db)
        {
            var pictures = db.Pictures
                           .Where(p => p.Albums.Count > 2)
                           .Select(p => new
            {
                p.Title,
                AlbumsTitlesAndOwners = p.Albums.Select(a => new
                {
                    a.Album.Name,
                    Holders = a.Album.AlbumHolders    //a.Album.AlbumHolders.First(ah => ah.Role == Role.Owner).User.Username //This is not working because of reasons unknown =/
                })
            })
                           .OrderByDescending(p => p.AlbumsTitlesAndOwners.Count())
                           .ThenBy(p => p.Title)
                           .ToList();

            foreach (var pic in pictures)
            {
                Console.WriteLine($"Picture: {pic.Title}");
                foreach (var alb in pic.AlbumsTitlesAndOwners)
                {
                    var ownerName = GetOwnerFromHoldersCollection(db, alb.Holders);

                    Console.WriteLine($"--Album name: {alb.Name}");
                    Console.WriteLine($"---Album owner: {ownerName}");
                }
            }
        }
Пример #5
0
        public static void LikeUserPost(int userId, int userPostId)
        {
            var context = new SocialNetworkContext();

            var user = context.Users.Find(userId);
            var post = context.Postings.Find(userPostId);
            var like = new Like()
            {
                Author  = user,
                Posting = post
            };

            context.Likes.Add(like);
            try
            {
                // Your code...
                // Could also be before try if you know the exception occurs in SaveChanges

                context.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                    }
                }
                throw;
            }
        }
Пример #6
0
        public void ParsePostData()
        {
            Console.Write("Parsing Posts and adding to database:");
            var posts       = xMLDocPosts.Root.Elements("Post");
            var usersFromDb = db.Users.ToList <User>();

            foreach (XElement post in posts)
            {
                var postToAdd = new Post();
                postToAdd.Content  = post.Element("Content").Value;
                postToAdd.DateTime = DateTime.Parse(post.Element("PostedOn").Value);

                var usersInPost = post.Element("Users").Value.Split(',');

                foreach (var userToAdd in usersInPost)
                {
                    postToAdd.Users.Add(usersFromDb.FirstOrDefault(x => x.Username == userToAdd));
                }

                db.Posts.Add(postToAdd);

                if (cnt % 100 == 0)
                {
                    db.SaveChanges();
                    db.Dispose();
                    db          = new SocialNetworkContext();
                    usersFromDb = db.Users.ToList <User>();
                    Console.Write(".");
                }
                cnt++;
            }
        }
        public IEnumerable GetChatUsers(string username)
        {
            var ctx = new SocialNetworkContext();

            var user = ctx.Users.FirstOrDefault(u => u.Username == username);

            if (user == null)
            {
                return(null);
            }

            var uniqueUsersChattedWith =
                ctx.Friendships
                .Where(f => f.FirstUser.FirstName == user.Username || f.SecondUser.Username == user.Username)
                .Select(u => new
            {
                Username = u.FirstUser.Username == username ? u.SecondUser.Username : u.FirstUser.Username

                           //// Uncomment it to see that the messages are more than 0 :)
                           //// CountMessages = u.Messages.Count
            })
                .GroupBy(u => u.Username)
                .OrderBy(u => u.Key)
                .ToList();

            return(uniqueUsersChattedWith);
        }
Пример #8
0
        public IHttpActionResult GetAllUsers()
        {
            try
            {
                using (var ctx = new SocialNetworkContext())
                {
                    var users = ctx.Users.ToList();
#if SECURE
                    foreach (var u in users)
                    {
                        u.Password = null;
                    }
#endif
                    //Sensitive Data Exposure
                    return(Json(new
                    {
                        success = true,
                        users
                    }));
                }
            }
            catch (Exception ex)
            {
                return(Json(new
                {
                    success = false,
                    error = ex.Message
                }));
            }
        }
Пример #9
0
 public IHttpActionResult DeletePost(int id)
 {
     try
     {
         using (var ctx = new SocialNetworkContext())
         {
             var post = ctx.Posts.Where(w => w.Id == id).SingleOrDefault();
             if (post != null)
             {
                 ctx.Posts.Remove(post);
             }
             ctx.SaveChanges();
             return(Json(new
             {
                 success = true
             }));
         }
     }
     catch (Exception ex)
     {
         return(Json(new
         {
             success = false,
             error = ex.Message
         }));
     }
 }
Пример #10
0
 public IHttpActionResult CreatePost([FromBody] Post post)
 {
     try
     {
         using (var ctx = new SocialNetworkContext())
         {
             post.DateCreated = DateTime.Now;
             post.UserId      = GetCurrentUser().Id;
             ctx.Posts.Add(post);
             ctx.SaveChanges();
             return(Json(new
             {
                 success = true
             }));
         }
     }
     catch (Exception ex)
     {
         return(Json(new
         {
             success = false,
             error = ex.Message
         }));
     }
 }
Пример #11
0
        private static void AddUsers(SocialNetworkContext context)
        {
            User user = new User
            {
                BirthDate = DateTime.Now,
                FirstName = "Olga",
                LastName  = "Mirnaya",
                Login     = "******",
                Password  = "******"
            };


            User user1 = new User
            {
                BirthDate = DateTime.Now,
                FirstName = "Admin",
                LastName  = "Admin",
                Login     = "******",
                Password  = "******"
            };


            context.Users.Add(user);
            context.Users.Add(user1);
        }
Пример #12
0
        private void ListAllAlbumsWithGivenTag(SocialNetworkContext db)
        {
            var specialTag = db.Tags.OrderBy(t => Guid.NewGuid()).Select(t => t.Title).First();

            Console.WriteLine($"Listing all albums with tag: {specialTag}");

            var albumsWithTag = db.Albums
                                .Where(a => a.Tags.Any(at => at.Tag.Title == specialTag))
                                .OrderByDescending(a => a.Tags.Count)
                                .ThenBy(a => a.Name)
                                .Select(a => new
            {
                AlbumTitle = a.Name,
                Owner      = a.AlbumHolders.First(ah => ah.Role == Role.Owner).User.Username
            })
                                .ToList();

            foreach (var alb in albumsWithTag)
            {
                Console.WriteLine($"Album: {alb.AlbumTitle}");
                Console.WriteLine($"-Owner: {alb.Owner}");
            }

            if (albumsWithTag.Count == 0)
            {
                Console.WriteLine($"No albums with tag \"{specialTag}\" available.");
            }
        }
        public void Create(Notification notification)
        {
            var notificationContext = new SocialNetworkContext();

            notificationContext.Notifications.Add(notification);
            notificationContext.SaveChanges();
        }
Пример #14
0
        private void ListAlbumsSharedWithUser(SocialNetworkContext db)
        {
            var testUsername = "******";

            var sharedAlbums = db.Albums
                               .Where(ah =>
                                      ah.AlbumHolders
                                      .Any(a => a.User.Username == testUsername && a.Role == Role.Viewer)
                                      )
                               .Select(a => new
            {
                AlbumName    = a.Name,
                PictureCount = a.Pictures.Count
            })
                               .OrderByDescending(a => a.PictureCount)
                               .ThenBy(a => a.AlbumName)
                               .ToList();

            Console.WriteLine($"Albums shared with: {testUsername}");
            foreach (var alb in sharedAlbums)
            {
                Console.WriteLine($"-Album: {alb.AlbumName}");
                Console.WriteLine($"-Pictures: {alb.PictureCount}");
            }
        }
Пример #15
0
        private static void ListAllUsersWithMoreThan3Tags(SocialNetworkContext context)
        {
            var users = context
                        .Users
                        .Where(u => u.AlbumsOwned.Any(a => a.Tags.Count >= 2)) // yeaa... lazy to fix seed...
                        .OrderByDescending(u => u.AlbumsOwned.Count)
                        .ThenBy(u => u.Username)
                        .Select(u => new
            {
                u.Username,
                Album = u.AlbumsOwned.Select(a => new
                {
                    a.Name,
                    TagName = a.Tags.Select(t => t.Tag.Name)
                })
            })
                        .ToList();

            foreach (var user in users)
            {
                Console.WriteLine(user.Username);
                foreach (var album in user.Album)
                {
                    Console.WriteLine($"--Name {album.Name}| {string.Join(", ", album.TagName)}");
                }
            }
        }
Пример #16
0
        private static void RecieveTagsAndSaveThemToDb(SocialNetworkContext context)
        {
            Console.WriteLine("Enter tag:");
            string       tagAsString = Console.ReadLine();
            string       validTag    = tagAsString.Transform();
            List <Album> albums      = context.Albums.ToList();
            Random       rnd         = new Random();

            Tag tag = new Tag()
            {
                Name = validTag
            };

            for (int i = 0; i < 2; i++)
            {
                int next = rnd.Next(0, albums.Count);
                if (tag.Albums.All(a => a.AlbumId != next))
                {
                    tag.Albums.Add(new AlbumTags()
                    {
                        AlbumId = albums[next].Id
                    });
                }
            }
            context.Tags.Add(tag);

            context.SaveChanges();

            Console.WriteLine($"{tag} was added to database");
        }
Пример #17
0
        public User Authenticate(string userName, string password)
        {
            User user;

            using (var context = new SocialNetworkContext(new DbContextOptions <SocialNetworkContext>()))
            {
                user = context.Users.FirstOrDefault(u => u.UserName == userName && u.Password == password);
            }
            if (user == null)
            {
                return(null);
            }

            // authentication successful, generate jwt token
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes("symetricKeyForNWTProject");
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.UserId.ToString())
                }),
                Expires            = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature),
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            user.Token = tokenHandler.WriteToken(token);

            return(user);
        }
Пример #18
0
        private static void ListAllUsersWithAllFriends(SocialNetworkContext context)
        {
            var users = context
                        .Users
                        .Where(u => u.Friends.Any())
                        .Select(u => new
            {
                u.Username,
                Count   = u.Friends.Count,
                Friends = u.Friends
                          .Select(f => new
                {
                    Status = f.Friend.IsDeleted ? "Inactive" : "Active"
                })
            })
                        .OrderByDescending(u => u.Count)
                        .ThenBy(u => u.Username)
                        .ToList();

            foreach (var user in users)
            {
                Console.WriteLine($"User {user.Username} have {user.Count} friends");
                foreach (var friend in user.Friends)
                {
                    Console.WriteLine($"---{friend.Status}");
                }
            }
        }
        protected override void Seed(SocialNetworkContext context)
        {
            if (context.Roles.Any())
            {
                return;
            }

            var user = context.Users.First();

            var adminRole = new IdentityRole()
            {
                Name = "Admin"
            };

            var moderatorRole = new IdentityRole()
            {
                Name = "Moderator"
            };

            context.Roles.Add(adminRole);
            context.Roles.Add(moderatorRole);
            context.SaveChanges();

            adminRole.Users.Add(new IdentityUserRole()
            {
                UserId = user.Id
            });

            context.SaveChanges();
        }
Пример #20
0
        private void ListUsersWithAlbumsWithMoreThanThreeTags(SocialNetworkContext db)
        {
            Console.WriteLine($"Listing all users that have albums with more than 3 tags:");

            var users = db.Users
                        .Where(u => u.Albums.Select(a => a.Album).Where(ua => ua.Tags.Count > 3).Count() > 0)
                        .Select(u => new
            {
                User   = u.Username,
                Albums = u.Albums.Select(ua => ua.Album).Select(a => new
                {
                    AlbumName = a.Name,
                    Tags      = a.Tags.Select(t => t.Tag.Title)
                })
            })
                        .ToList()
                        .OrderByDescending(u => u.Albums.Count())
                        .ThenByDescending(u => u.Albums.Sum(a => a.Tags.Count()))
                        .ThenBy(u => u.User);

            foreach (var user in users)
            {
                Console.WriteLine($"User: {user.User}");
                foreach (var alb in user.Albums)
                {
                    Console.WriteLine($"-Album: {alb.AlbumName}");
                    Console.WriteLine($"--Tags: {string.Join(", ", alb.Tags)}");
                }
            }
        }
 public ProfileRepository(SocialNetworkContext socialNetworkContext)
 {
     context  = socialNetworkContext;
     Profiles = socialNetworkContext.Set <Profile>();
     Messages = socialNetworkContext.Set <Message>();
     Photos   = socialNetworkContext.Set <Photo>();
 }
Пример #22
0
 public void DeleteEntity(T entity)
 {
     using (var context = new SocialNetworkContext())
     {
         context.Set <T>().Remove(entity);
         context.SaveChanges();
     }
 }
Пример #23
0
 public static void Main()
 {
     Database.SetInitializer(new MigrateDatabaseToLatestVersion <SocialNetworkContext, Configuration>());
     using (var ctx = new SocialNetworkContext())
     {
         Console.WriteLine(ctx.Images.Count());
     }
 }
 public FriendshipsController()
 {
     db = new SocialNetworkContext();
     _friendshipService = new FriendshipService(
         new ProfileEntityFrameworkRepository(db),
         new FriendshipEntityFrameworkRepository(db)
         );
 }
Пример #25
0
        private string GetOwnerFromHoldersCollection(SocialNetworkContext db, ICollection <UserAlbum> holders)
        {
            var userId = holders.Where(a => a.Role == Role.Owner).First().UserId;

            var ownerName = db.Users.First(u => u.Id == userId).Username;

            return(ownerName);
        }
Пример #26
0
        private static void CreateDb()
        {
            var ctx = new SocialNetworkContext();

            var users = ctx.Users.ToList();

            ctx.SaveChanges();
        }
Пример #27
0
 public void AddRange(IList <T> entities)
 {
     using (var context = new SocialNetworkContext())
     {
         context.Set <T>().AddRange(entities);
         context.SaveChanges();
     }
 }
Пример #28
0
 public void AddEntity(T entity)
 {
     using (var context = new SocialNetworkContext())
     {
         context.Set <T>().Add(entity);
         context.SaveChanges();
     }
 }
Пример #29
0
        private void ListUsersAndAlbumViewers(SocialNetworkContext db)
        {
            var usrs = db.Users
                       .Select(u => new
            {
                u.Username,
                FollowerIds    = u.Followers.Select(f => f.SecondUserId),
                AlbumsOwnedIds = u.Albums
                                 .Where(a => a.Role == Role.Owner)
                                 .Select(a => a.AlbumId)
            })
                       .OrderBy(u => u.Username)
                       .ToList();

            foreach (var us in usrs)
            {
                var sb = new StringBuilder();

                bool userNameAppended = false;

                foreach (var fol in us.FollowerIds)
                {
                    var follower = db.Users
                                   .Include(u => u.Albums)
                                   .First(f => f.Id == fol);

                    foreach (var alb in follower.Albums)
                    {
                        db.Entry(alb).Reference(u => u.Album).Load();
                    }

                    var albumNames = follower.Albums
                                     .Where(a => us.AlbumsOwnedIds.Contains(a.AlbumId))
                                     .Select(a => a.Album.Name)
                                     .ToList();
                    if (albumNames.Count > 0)
                    {
                        if (userNameAppended == false)
                        {
                            sb.AppendLine($"User: { us.Username}");
                            userNameAppended = true;
                        }

                        sb.AppendLine($"-Follower: {follower.Username}");

                        string result = string.Join(", ", albumNames);

                        sb.AppendLine($"--Albums shared: {result}");
                    }
                }

                if (sb.Length > 0)
                {
                    Console.WriteLine(sb.ToString().Trim());
                }
            }
        }
        public static void AddUserToGroup(int userId, int groupId)
        {
            var context = new SocialNetworkContext();
            var user    = context.Users.Find(userId);
            var group   = context.Groups.Find(groupId);

            group.Members.Add(user);
            context.SaveChanges();
        }
 public BaseApiController(SocialNetworkContext data)
 {
     this.Data = data;
 }