using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using District_3_App.CloseFriends_GUI; using District_3_App.ProfileSocialNetworkInfoStuff.Entities; using District_3_App.ProfileSocialNetworkInfoStuff.ProfileNetworkInfo_Repository; using District_3_App.ProfileSocialNetworkInfoStuff.ProfileNetworkInfo_Service; using District_3_App.Settings_Privacy_GUI; using Statistics; namespace District_3_App.ExtraInfo { /// /// Interaction logic for ExtraInfo.xaml /// public partial class ExtraInfo : UserControl { private ProfileNetworkInfoService profileNetworkInfoService; private User currentConnectedUser; public ExtraInfo() { //// HARDCODED STUFF User user1 = new User(Guid.NewGuid(), "username1", "password1", "user1@yahoo.ro", "password1"); User user2 = new User(Guid.NewGuid(), "username2", "password2", "username2@gmail.ro", "password2"); User user3 = new User(Guid.NewGuid(), "username3", "password3", "user3@yahoo.com", "password3"); User user4 = new User(Guid.NewGuid(), "username4", "password4", "username4@stud.ubbcluj.ro", "password4"); User user5 = new User(Guid.NewGuid(), "username5", "password5", "username4@gmail.es", "password5"); List usersList = new List(); usersList.Add(user1); usersList.Add(user2); usersList.Add(user3); usersList.Add(user4); usersList.Add(user5); UsersRepository usersRepo = new UsersRepository(usersList); BlockedProfile blockedProfile1 = new BlockedProfile(user5, new DateTime(2023, 12, 02, 18, 40, 10)); BlockedProfile blockedProfile2 = new BlockedProfile(user2, new DateTime(2023, 12, 02, 17, 50, 10)); BlockedProfile blockedProfile3 = new BlockedProfile(user3, new DateTime(2023, 12, 02, 17, 50, 15)); BlockedProfile blockedProfile4 = new BlockedProfile(user4, new DateTime(2022, 11, 02, 17, 50, 15)); CloseFriendProfile closeFriendProfile1 = new CloseFriendProfile(user3, new DateTime(2023, 12, 02, 18, 40, 10)); CloseFriendProfile closeFriendProfile2 = new CloseFriendProfile(user4, new DateTime(2023, 12, 02, 18, 40, 10)); CloseFriendProfile closeFriendProfile3 = new CloseFriendProfile(user5, new DateTime(2023, 12, 02, 18, 40, 10)); CloseFriendProfile closeFriendProfile4 = new CloseFriendProfile(user2, new DateTime(2023, 12, 02, 18, 40, 10)); List group1Members = new List(); group1Members.Add(user2); group1Members.Add(user3); group1Members.Add(user1); List group2Members = new List(); group2Members.Add(user1); group2Members.Add(user5); group2Members.Add(user4); List group3Members = new List(); group3Members.Add(user1); group3Members.Add(user5); group3Members.Add(user2); List anotherGroupMembers = new List(); anotherGroupMembers.Add(user5); anotherGroupMembers.Add(user3); Group group1 = new Group(Guid.NewGuid(), "group 1", group1Members); Group group2 = new Group(Guid.NewGuid(), "group 3", group2Members); Group group3 = new Group(Guid.NewGuid(), "group 2", group3Members); Group group4 = new Group(Guid.NewGuid(), "another group", anotherGroupMembers); List groups = new List(); groups.Add(group1); groups.Add(group2); groups.Add(group3); groups.Add(group4); // some hardocded profile perspective examples UserProfileSocialNetworkInfo profileUser1 = new UserProfileSocialNetworkInfo(user1, new List { blockedProfile2, blockedProfile3 }, new List { closeFriendProfile4, closeFriendProfile3 }, new List { group1, group2, group3 }, new List { user2, user3 }, new List { user2, user3 }); UserProfileSocialNetworkInfo profileUser2 = new UserProfileSocialNetworkInfo(user2, new List { blockedProfile1, blockedProfile3 }, new List { closeFriendProfile4 }, new List { group1, group3 }, new List(), new List()); UserProfileSocialNetworkInfo profileUser3 = new UserProfileSocialNetworkInfo(user3, new List(), new List(), new List { group1, group3 }, new List(), new List()); UserProfileSocialNetworkInfo profileUser5 = new UserProfileSocialNetworkInfo(user5, new List(), new List(), new List { group2, group3, group4 }, new List(), new List()); List userProfileSocialNetworkInfos = new List(); userProfileSocialNetworkInfos.Add(profileUser1); userProfileSocialNetworkInfos.Add(profileUser2); userProfileSocialNetworkInfos.Add(profileUser3); userProfileSocialNetworkInfos.Add(profileUser5); // init repos with profiles list and groups list GroupsRepository groupsRepository = new GroupsRepository(); ProfileNetworkInfoRepository userProfileNetowrkRepository = new ProfileNetworkInfoRepository(); // init profile info service with profile list ProfileNetworkInfoService profileNetworkInfoService = new ProfileNetworkInfoService(groupsRepository, userProfileNetowrkRepository, usersRepo); // profileNetworkInfoService.CreateGroupToRepository("group 1", group1Members); // profileNetworkInfoService.CreateGroupToRepository("group 3", group3Members); // profileNetworkInfoService.CreateGroupToRepository("group 2", group2Members); // profileNetworkInfoService.CreateGroupToRepository("another group", anotherGroupMembers); this.currentConnectedUser = user1; this.profileNetworkInfoService = profileNetworkInfoService; //// ADD DATA TO THE SERVICE profileNetworkInfoService.AddProfileSocialNetworkInfo(profileUser1); profileNetworkInfoService.AddProfileSocialNetworkInfo(profileUser2); profileNetworkInfoService.AddProfileSocialNetworkInfo(profileUser5); profileNetworkInfoService.AddBlockedProfileToCurrentUser(profileUser1, blockedProfile2); profileNetworkInfoService.AddBlockedProfileToCurrentUser(profileUser1, blockedProfile4); profileNetworkInfoService.AddCloseFriendToCurrentUser(profileUser1, closeFriendProfile2); profileNetworkInfoService.AddGroupToCurrentUser(profileUser1, group1); profileNetworkInfoService.AddGroupToCurrentUser(profileUser1, group3); profileNetworkInfoService.AddGroupToCurrentUser(profileUser1, group2); profileNetworkInfoService.AddRestrictedPostsAudienceUserToCurrentUser(profileUser1, user3); profileNetworkInfoService.AddRestrictedStoriesAudienceUserToCurrentUser(profileUser1, user3); profileNetworkInfoService.AddRestrictedPostsAudienceUserToCurrentUser(profileUser1, user2); profileNetworkInfoService.AddRestrictedStoriesAudienceUserToCurrentUser(profileUser1, user2); profileNetworkInfoService.AddRestrictedPostsAudienceUserToCurrentUser(profileUser1, user4); profileNetworkInfoService.AddRestrictedStoriesAudienceUserToCurrentUser(profileUser1, user4); profileNetworkInfoService.AddBlockedProfileToCurrentUser(profileUser2, blockedProfile3); profileNetworkInfoService.AddBlockedProfileToCurrentUser(profileUser2, blockedProfile1); profileNetworkInfoService.AddCloseFriendToCurrentUser(profileUser2, closeFriendProfile4); profileNetworkInfoService.AddGroupToCurrentUser(profileUser2, group2); profileNetworkInfoService.AddGroupToCurrentUser(profileUser2, group3); InitializeComponent(); } private void EditProfileButton_Click(object sender, RoutedEventArgs e) { List elementsToRemove = new List(); foreach (UIElement child in extraInfoGrid.Children) { int columnIndex = Grid.GetColumn(child); if (columnIndex == 1) { elementsToRemove.Add(child); } } foreach (UIElement element in elementsToRemove) { extraInfoGrid.Children.Remove(element); } var profileInfo = new ProfileInfo_GUI.ProfileInfoDisplay(); Grid.SetColumn(profileInfo, 1); Grid.SetRow(profileInfo, 1); Grid.SetRowSpan(profileInfo, 4); // .Children.Clear(); extraInfoGrid.Children.Add(profileInfo); } private void SettingsPrivacyButton_Click(object sender, RoutedEventArgs e) { var settingsPrivacyUserControl = new SettingsPrivacy_UserControl(currentConnectedUser, profileNetworkInfoService); Grid.SetColumn(settingsPrivacyUserControl, 1); Grid.SetRow(settingsPrivacyUserControl, 1); Grid.SetRowSpan(settingsPrivacyUserControl, 4); // extraInfoGrid.Children.Clear(); extraInfoGrid.Children.Add(settingsPrivacyUserControl); } private void FancierProfileButton_Click(object sender, RoutedEventArgs e) { var paymentForm = new FancierProfilePage(); Grid.SetColumn(paymentForm, 1); Grid.SetRow(paymentForm, 1); Grid.SetRowSpan(paymentForm, 4); // .Children.Clear(); extraInfoGrid.Children.Add(paymentForm); } private void SavedPostsButton_Click(object sender, RoutedEventArgs e) { } private void CloseFriendsButton_Click(object sender, RoutedEventArgs e) { var closeFriendsUserControl = new CloseFriendsSection_UserControl(currentConnectedUser, profileNetworkInfoService); Grid.SetColumn(closeFriendsUserControl, 1); Grid.SetRow(closeFriendsUserControl, 1); Grid.SetRowSpan(closeFriendsUserControl, 4); // .Children.Clear(); extraInfoGrid.Children.Add(closeFriendsUserControl); } private void VerifiedAccountButton_Click(object sender, RoutedEventArgs e) { var newContent = new VerifiedAccount(profileNetworkInfoService); // extraInfoGrid.Children.Clear(); extraInfoGrid.Children.Add(newContent); Grid.SetColumn(newContent, 1); Grid.SetRow(newContent, 1); Grid.SetRowSpan(newContent, 4); } private void FriendsSettingsButton_Click(object sender, RoutedEventArgs e) { /*var friends = new FriendsSettings.Friends(); //extraInfoGrid.Children.Clear(); Grid.SetColumn(friends, 1); Grid.SetRow(friends, 1); Grid.SetRowSpan(friends, 4); extraInfoGrid.Children.Add(friends);*/ // Collect the controls that need to be removed from the specified column List elementsToRemove = new List(); // Iterate through the children of the extraInfoGrid foreach (UIElement child in extraInfoGrid.Children) { // Get the column index of the current child int columnIndex = Grid.GetColumn(child); // Check if the child is located in the target column (column 1 in this case) if (columnIndex == 1) { // Add the child to the list of elements to remove elementsToRemove.Add(child); } } // Remove all elements collected in the elementsToRemove list from the grid foreach (UIElement element in elementsToRemove) { extraInfoGrid.Children.Remove(element); } // Create and add the new FriendsSettings.Friends control to the specified column var friends = new FriendsSettings.Friends(); Grid.SetColumn(friends, 1); Grid.SetRow(friends, 1); Grid.SetRowSpan(friends, 4); extraInfoGrid.Children.Add(friends); } private void LikedPostsButton_Click(object sender, RoutedEventArgs e) { var likedPosts = new LikedPosts(); Grid.SetColumn(likedPosts, 1); Grid.SetRow(likedPosts, 1); Grid.SetRowSpan(likedPosts, 4); // extraInfoGrid.Children.Clear(); extraInfoGrid.Children.Add(likedPosts); } private void StatisticsButton_Click(object sender, RoutedEventArgs e) { var statistics = new Statistics.Statistics(); Grid.SetColumn(statistics, 1); Grid.SetRow(statistics, 1); Grid.SetRowSpan(statistics, 4); // extraInfoGrid.Children.Clear(); extraInfoGrid.Children.Add(statistics); } } }