예제 #1
0
        public void addProfileToUser(String user_id, String profilePath)
        {
            var newProfile = new Profile
            {
                age       = this.age,
                firstname = this.firstname,
                lastname  = this.lastname,
                Id        = user_id,
                gender    = this.gender.ToString(),
                privacy   = this.privacy ? 1 : 0
            };
            var databaseEntities = new FacebookDatabaseEntities();

            databaseEntities.Profiles.Add(newProfile);
            var album = databaseEntities.Albums.Add(new Album {
                user_id = user_id, name = "ProfileAlbum", date = DateTime.Now
            });
            var picture = databaseEntities.Pictures.Add(new Picture {
                album_id = album.album_id, path = profilePath, date = DateTime.Now, description = "ProfilePicture"
            });
            var post = databaseEntities.Posts.Add(new Post {
                picture_id = picture.picture_id, sender_id = user_id, date = DateTime.Now, content = "I changed my profile picture"
            });

            databaseEntities.SaveChanges();
        }
예제 #2
0
        public NewsFeedViewModel(AspNetUser user)
        {
            var isAdmin = RoleHandler.isAdmin(user.Id);
            var groups  = user.Groups;
            ICollection <Post> posts = new List <Post>();

            //TODO TBD posts are shown twice
            foreach (var group in groups)
            {
                posts = posts.Union(group.Posts, new PostComparator()).ToList();
            }
            posts = posts.Union(user.Posts, new PostComparator()).ToList();
            FacebookDatabaseEntities entities = new FacebookDatabaseEntities();
            var friends = user.AspNetUsers;

            foreach (var friend in friends)
            {
                posts = posts.Union(friend.Posts.Where(x => groups.Where(y => y.group_id == x.group_id).Any() || x.group_id == null), new PostComparator()).ToList();
            }
            posts = posts.OrderByDescending(x => x.date).Distinct().ToList();

            this.posts = new List <PostViewModel>();
            foreach (var post in posts)
            {
                this.posts.Add(new PostViewModel(post, "Newsfeed", isAdmin));
            }
        }
예제 #3
0
        public GroupsViewModel(string selectedId, string userId)
        {
            var databaseEntities = new FacebookDatabaseEntities();
            var user             = databaseEntities.AspNetUsers.Find(userId);
            var groups           = user.Groups;

            myGroups = groups.Union(user.Groups1, new GroupComparator()).ToList();

            if (selectedId != null)
            {
                selectedGroup = databaseEntities.Groups.Find(int.Parse(selectedId));
            }
            else
            {
                selectedGroup = myGroups.FirstOrDefault();
            }

            //TO-DO add administrator permission
            if (selectedGroup != null)
            {
                newPost = new PostViewModel {
                    appLocation = "Groups", group_id = selectedGroup.group_id
                };
                if (selectedGroup.AspNetUsers.Contains(user))
                {
                    accesPermision = AccesPermision.readPermissions;
                }
                else
                {
                    accesPermision = AccesPermision.noPermission;
                }
            }
            isAdmin = RoleHandler.isAdmin(userId);
        }
예제 #4
0
        public AlbumViewModel(string albumName, string appLocation, int albumID, List <PostViewModel> userPosts, string userID)
        {
            var databaseEntities         = new FacebookDatabaseEntities();
            List <PostViewModel> myPosts = userPosts.Where(x => x.albumID == albumID).ToList();

            this.posts = myPosts;
            this.picturesRelativePath = this.posts.Select(x => x.postPictureRelativePath).ToList();
            this.userID      = userID;
            this.albumName   = albumName;
            this.appLocation = appLocation;
            this.albumID     = albumID;
        }
예제 #5
0
        public MessengerViewModel(string receiver_id, string sender_id, int currentMessageNumber = 0)
        {
            FacebookDatabaseEntities databaseEntities = new FacebookDatabaseEntities();
            var user = databaseEntities.AspNetUsers.Find(receiver_id);

            setUserList(user);

            var messages            = databaseEntities.Messages.Where(x => (x.sender_id == sender_id && x.receiver_id == receiver_id) || (x.sender_id == receiver_id && x.receiver_id == sender_id)).ToList();
            var userCanSendMessages = friends.Select(x => x.Id == sender_id).Any(x => x == true);

            conversation = new ConversationViewModel(messages, userCanSendMessages, sender_id, receiver_id, currentMessageNumber);
        }
예제 #6
0
        public ConversationViewModel(List <Message> messages, bool userCanSendMessages, string ToUserId, string fromUserId, int currentMessageNumber)
        {
            this.sendToUserId        = ToUserId;
            this.sendFromUserId      = fromUserId;
            this.userCanSendMessages = userCanSendMessages;
            this.messages            = messages.Skip(messages.Count - ((currentMessageNumber / multiplier) + 1) * multiplier).Select(x => new MessageViewModel(x, ToUserId)).ToList();

            FacebookDatabaseEntities databaseEntities = new FacebookDatabaseEntities();

            this.senderPicture   = databaseEntities.AspNetUsers.Find(fromUserId).Profile.Albums.Where(x => x.name.Equals("ProfileAlbum")).FirstOrDefault().Pictures.OrderByDescending(x => x.date).FirstOrDefault().path;
            this.receiverPicture = databaseEntities.AspNetUsers.Find(ToUserId).Profile.Albums.Where(x => x.name.Equals("ProfileAlbum")).FirstOrDefault().Pictures.OrderByDescending(x => x.date).FirstOrDefault().path;
        }
예제 #7
0
        public void addCommentFrom(AspNetUser user, FacebookDatabaseEntities toDataBase, string actualUserID)
        {
            var actualPost = toDataBase.Posts.Where(x => x.post_id == post_id).FirstOrDefault();
            var status     = CommentStatus.pending;

            if (actualPost.sender_id == actualUserID)
            {
                status = CommentStatus.accepted;
            }
            user.Comments.Add(new Comment {
                post_id = post_id, user_id = user.Id, date = DateTime.Now, content = inputComment, Status = (int)status
            });
            toDataBase.SaveChanges();
        }
예제 #8
0
        public int saveToDatabase(string administrator, HttpServerUtilityBase server)
        {
            var databaseEntities = new FacebookDatabaseEntities();
            var relativePath     = FilesHandler.saveImage(picture, server);

            var group = databaseEntities.Groups.Add(new Group {
                name = name, administrator = administrator, picture_path = relativePath
            });
            var user = databaseEntities.AspNetUsers.Find(administrator);

            group.AspNetUsers.Add(user);

            databaseEntities.SaveChanges();
            return(group.group_id);
        }
예제 #9
0
        public IEnumerable <SelectListItem> GetAlbumNames(string id)
        {
            var          selectList       = new List <SelectListItem>();
            var          databaseEntities = new FacebookDatabaseEntities();
            List <Album> albums           = databaseEntities.Albums.Where(x => x.user_id.Equals(id)).ToList();

            foreach (var album in albums)
            {
                selectList.Add(new SelectListItem
                {
                    Value = album.album_id.ToString(),
                    Text  = album.name
                });
            }
            return(selectList);
        }
예제 #10
0
        static public void addPostFrom(string user_id, FacebookDatabaseEntities toDataBase, String picturePath, string content, int albumID, Nullable <int> group_id = null, bool isProfilePicture = false)
        {
            Album album = null;

            if (isProfilePicture)
            {
                album = toDataBase.Albums.Where(x => x.name.Equals("ProfileAlbum") && x.user_id == user_id).FirstOrDefault();
            }
            else
            {
                if (albumID != -1) //if we have an album to add the post to
                {
                    album = toDataBase.Albums.Where(x => x.album_id == albumID).FirstOrDefault();
                }
                if (album == null) //if we have not specified the id put it to posted pictures
                {
                    album = toDataBase.Albums.Where(x => x.name.Equals("PostedPicturesAlbum") && x.user_id == user_id).FirstOrDefault();
                }
                if (album == null) //if we have not specified the album and we also do not have the posted picture album created
                {
                    album = toDataBase.Albums.Add(new Album {
                        user_id = user_id, name = "PostedPicturesAlbum", date = DateTime.Now
                    });
                }
            }
            var     aspNetUser     = toDataBase.AspNetUsers.Find(user_id);
            Picture profilePicture = new Picture();

            profilePicture.album_id    = album.album_id;
            profilePicture.path        = picturePath;
            profilePicture.date        = DateTime.Now;
            profilePicture.description = "ProfilePicture";

            toDataBase.Pictures.Add(profilePicture);

            Post newPost = new Post();

            newPost.group_id   = group_id;
            newPost.content    = content;
            newPost.AspNetUser = aspNetUser;
            newPost.Picture    = profilePicture;
            newPost.date       = DateTime.Now;
            toDataBase.Posts.Add(newPost);
            toDataBase.SaveChanges();
        }
예제 #11
0
        public MessageViewModel(Message message, string sendToUserId)
        {
            message_id = message.message_id;
            date       = message.date;
            sender     = message.AspNetUser1;
            receiver   = message.AspNetUser;
            switch (message.type)
            {
            case 1:
                type    = MessageTypes.normalMessage;
                content = message.content;
                break;

            case 2:
                type     = MessageTypes.friendRequest;
                actionId = message.content;
                content  = " sent a friend request";
                break;

            case 3:
                type     = MessageTypes.groupRequest;
                actionId = message.content;
                FacebookDatabaseEntities databaseEntities = new FacebookDatabaseEntities();
                var group = databaseEntities.Groups.Find(int.Parse(actionId));
                content = " sent a group request for " + group.name;
                break;

            case 4:
                type    = MessageTypes.adminWarning;
                content = "We took action on your post. Reason:" + message.content;
                break;
            }

            if (sender.Id == sendToUserId)
            {
                content = sender.Profile.firstname + " " + sender.Profile.lastname + " : " + content;
                state   = State.received;
            }
            else
            {
                content = " me : " + content;
                state   = State.sent;
            }
        }
예제 #12
0
        public void saveToDatabase(string administrator, HttpServerUtilityBase server, FacebookDatabaseEntities toDataBase)
        {
            Album newAlbum = new Album();

            newAlbum.date    = DateTime.Now;
            newAlbum.name    = name;
            newAlbum.user_id = administrator;
            toDataBase.Albums.Add(newAlbum);
            toDataBase.SaveChanges();
        }
예제 #13
0
        public void getResult(String userId)
        {
            var dataBase    = new FacebookDatabaseEntities();
            var currentUser = dataBase.AspNetUsers.Find(userId);

            if (currentUser != null)
            {
                var userGroups  = currentUser.Groups.Where(x => x.name.ToLower().Contains(searchInput.ToLower())).Take(5);
                var otherGroups = dataBase.Groups.Where(x => x.name.ToLower().Contains(searchInput.ToLower()) && !x.AspNetUsers.Where(y => y.Id == userId).Any()).Take(5);

                groupsResult = userGroups.Select(x => new GenericItemViewModel
                {
                    content      = x.name,
                    id           = x.group_id.ToString(),
                    myController = "Groups",
                    clickOption  = "Show"
                })
                               .ToList();
                groupsResult = groupsResult.Union(otherGroups.Select(x => new GenericItemViewModel
                {
                    content      = x.name,
                    id           = x.group_id.ToString(),
                    myController = "Groups",
                    clickOption  = "Show"
                })
                                                  .ToList());

                var userFriends  = currentUser.AspNetUsers1.Where(x => (x.Profile.firstname + " " + x.Profile.lastname).ToLower().Contains(searchInput.ToLower())).Take(5);
                var otherFriends = dataBase.AspNetUsers.Where(x => !x.AspNetUsers1.Where(y => y.Id == userId).Any() && x.Id != userId && (x.Profile.firstname + " " + x.Profile.lastname).ToLower().Contains(searchInput.ToLower())).Take(5);

                usersResult = userFriends.Select(x => new GenericItemViewModel
                {
                    content      = x.Profile.firstname + " " + x.Profile.lastname,
                    imagePath    = x.Profile.Albums.Where(y => y.name.Equals("ProfileAlbum")).FirstOrDefault().Pictures.OrderByDescending(y => y.date).FirstOrDefault().path,
                    id           = x.Id,
                    myController = "Profile",
                    clickOption  = "Show"
                })
                              .ToList();
                usersResult = usersResult.Union(otherFriends.Select(x => new GenericItemViewModel
                {
                    content      = x.Profile.firstname + " " + x.Profile.lastname,
                    imagePath    = x.Profile.Albums.Where(y => y.name.Equals("ProfileAlbum")).FirstOrDefault().Pictures.OrderByDescending(y => y.date).FirstOrDefault().path,
                    id           = x.Id,
                    myController = "Profile",
                    clickOption  = "Show"
                })
                                                .ToList());
            }
            else
            {
                var users = dataBase.AspNetUsers.Where(x => (x.Profile.firstname + " " + x.Profile.lastname).ToLower().Contains(searchInput.ToLower())).Take(5);

                usersResult = users.Select(x => new GenericItemViewModel
                {
                    content      = x.Profile.firstname + " " + x.Profile.lastname,
                    imagePath    = x.Profile.Albums.Where(y => y.name.Equals("ProfileAlbum")).FirstOrDefault().Pictures.OrderByDescending(y => y.date).FirstOrDefault().path,
                    id           = x.Id,
                    myController = "Profile",
                    clickOption  = "Show"
                }).ToList();
            }
        }
예제 #14
0
        public void addNewProfileToUser(String user_id, String profilePath)
        {
            var databaseEntities = new FacebookDatabaseEntities();

            PostViewModel.addPostFrom(user_id, databaseEntities, profilePath, "I changed my profile picture", -1, null, true);
        }