Files
2024-08-31 12:07:21 +03:00

403 lines
15 KiB
C#

using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Text;
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 System.Xml;
using District_3_App.ExtraInfo;
using District_3_App.HighlightsFE;
using District_3_App.LogIn;
using District_3_App.ProfileSocialNetworkInfoStuff.Entities;
using District_3_App.ProfileSocialNetworkInfoStuff.ProfileNetworkInfo_Repository;
using District_3_App.Service;
using Log_In;
namespace District_3_App
{
public partial class MainWindow : Window
{
private ProfileInfoSettings profileInfoSettings;
private CasualProfileService casualProfileService = new CasualProfileService();
private UsersRepository userRepository;
private UserManager userManager;
public string Username { get; set; }
private Stopwatch timer = new Stopwatch();
protected int time;
private DateTime currentDate;
public MainWindow()
{
timer.Start();
InitializeComponent();
GenerateFrame();
this.profileInfoSettings = casualProfileService.GetProfileInfoSettings();
userRepository = new UsersRepository("./Users.xml");
userManager = new UserManager("./Users.xml");
LoadUserProfile();
}
protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
timer.Stop();
TimeSpan elapsedTime = timer.Elapsed;
string formattedTime = $"{elapsedTime.Hours:00}:{elapsedTime.Minutes:00}:{elapsedTime.Seconds:00}.{elapsedTime.Milliseconds / 10:00}";
time = (int)elapsedTime.TotalSeconds;
currentDate = DateTime.Now;
SaveTimeToXml(time);
}
private void SaveTimeToXml(int time)
{
string filePath = "TimeData.xml";
try
{
// Check if the XML file exists
if (File.Exists(filePath))
{
// Load the existing XML document
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filePath);
// Get the root element
XmlElement root = xmlDoc.DocumentElement;
// Create the entry element
XmlElement entryElement = xmlDoc.CreateElement("Entry");
// Create the time element
XmlElement timeElement = xmlDoc.CreateElement("Time");
timeElement.InnerText = time.ToString();
// Create the date element
XmlElement dateElement = xmlDoc.CreateElement("Date");
dateElement.InnerText = DateTime.Now.ToString("yyyy-MM-dd");
// Append time and date elements to the entry element
entryElement.AppendChild(timeElement);
entryElement.AppendChild(dateElement);
// Append the entry element to the root element
root.AppendChild(entryElement);
// Save the XML document back to the file
xmlDoc.Save(filePath);
}
else
{
// If the file doesn't exist, create a new XML document and save the time value
XmlDocument xmlDoc = new XmlDocument();
// Create the root element
XmlElement root = xmlDoc.CreateElement("TimeData");
xmlDoc.AppendChild(root);
// Create the entry element
XmlElement entryElement = xmlDoc.CreateElement("Entry");
// Create the time element
XmlElement timeElement = xmlDoc.CreateElement("Time");
timeElement.InnerText = time.ToString();
// Create the date element
XmlElement dateElement = xmlDoc.CreateElement("Date");
dateElement.InnerText = DateTime.Now.ToString("yyyy-MM-dd");
// Append time and date elements to the entry element
entryElement.AppendChild(timeElement);
entryElement.AppendChild(dateElement);
// Append the entry element to the root element
root.AppendChild(entryElement);
// Save the XML document to a file
xmlDoc.Save(filePath);
}
}
catch (Exception ex)
{
// Handle any exceptions
MessageBox.Show($"Error saving time data to XML file: {ex.Message}");
}
}
private void LoadUserProfile()
{
User user;
if (userManager != null)
{
user = userRepository.GetUserByName(userManager.GetCurrentUser());
}
else
{
user = null;
}
if (user != null)
{
// Display the username
UsernameTextBlock.Text = $"{user.Username}";
// Display the followers count
FollowerCountTextBlock.Text = $"{userRepository.GetFollowersCount(user.Username)}";
// Display the following count
FollowingTextBlock.Text = $"{userRepository.GetFollowingCount(user.Username)}";
}
else
{
// User not found
MessageBox.Show("User not found.");
}
}
public void UpdateAboutYou(
string email, string phoneNumber, string dateOfBirth, string name,
string education, string educationLevel,
string educationStartDate, string educationEndDate,
string educationLocation, string hobbies, string music, string places,
string work, string position, string workStartDate,
string workEndDate, string workLocation, string description)
{
TextBlockEmail.Text = email;
TextBlockPhoneNumber.Text = phoneNumber;
TextBlockDateOfBirth.Text = dateOfBirth;
TextBlockName.Text = name;
TextBlockEducation.Text = education;
TextBlockEducationLevel.Text = educationLevel;
TextBlockEducationStartDate.Text = educationStartDate;
TextBlockEducationEndDate.Text = educationEndDate;
TextBlockEducationLocation.Text = educationLocation;
TextBlockHobbies.Text = hobbies;
TextBlockMusic.Text = music;
TextBlockPlaces.Text = places;
TextBlockWork.Text = work;
TextBlockWorkPosition.Text = position;
TextBlockWorkStartDate.Text = workStartDate;
TextBlockWorkEndDate.Text = workEndDate;
TextBlockWorkLocation.Text = workLocation;
TextBlockDescription.Text = description;
}
private void Button_Click_Home(object sender, RoutedEventArgs e)
{
CC.Content = new UserControl6();
}
private void Button_Click_Search(object sender, RoutedEventArgs e)
{
CC.Content = new UserControl5();
}
private void Button_Click_Explore(object sender, RoutedEventArgs e)
{
CC.Content = new UserControl4();
}
private void Button_Click_Reels(object sender, RoutedEventArgs e)
{
CC.Content = new UserControl3();
}
private void Button_Click_Messages(object sender, RoutedEventArgs e)
{
CC.Content = new UserControl2();
}
private void Button_Click_Notifications(object sender, RoutedEventArgs e)
{
CC.Content = new UserControl1();
}
private void ProfileButton_Click(object sender, RoutedEventArgs e)
{
CC.Content = null;
}
private void PlusButton_Click(object sender, RoutedEventArgs e)
{
Popup.IsOpen = true;
}
private void MoreButton_Click(object sender, RoutedEventArgs e)
{
Popup2.IsOpen = true;
}
private void ExtraInfo_Click(object sender, RoutedEventArgs e)
{
var newContent = new ExtraInfo.ExtraInfo();
Grid.SetColumn(newContent, 2);
Grid.SetRow(newContent, 0);
Grid.SetRowSpan(newContent, 6);
mainGrid.Children.Add(newContent);
}
private void Logout_Click(object sender, RoutedEventArgs e)
{
userManager.LogOutUser();
mainGrid.Children.Clear();
var newContent = new SignUp();
Grid.SetColumn(newContent, 2);
Grid.SetRow(newContent, 0);
Grid.SetRowSpan(newContent, 6);
mainGrid.Children.Add(newContent);
}
private void Cancel_Click(object sender, RoutedEventArgs e)
{
Popup2.IsOpen = false;
}
private void MoreAbout_Click(object sender, RoutedEventArgs e)
{
MoreAboutPopup.IsOpen = true;
}
private void OnAddHighlight_Click(object sender, RoutedEventArgs e)
{
mainGrid.Children.Clear();
var newContent = new SelectPostsPage();
Grid.SetColumn(newContent, 2); // Place in the third column
Grid.SetRow(newContent, 0); // Place in the first row
Grid.SetRowSpan(newContent, 4); // Span multiple rows if necessary
mainGrid.Children.Add(newContent);
}
private void PostsButton_Click(object sender, RoutedEventArgs e)
{
// Show PostsPanel and hide ReelsPanel and TagsPanel
PostsPanel.Visibility = Visibility.Visible;
ReelsPanel.Visibility = Visibility.Collapsed;
TagsPanel.Visibility = Visibility.Collapsed;
}
private void ReelsButton_Click(object sender, RoutedEventArgs e)
{
// Show ReelsPanel and hide PostsPanel and TagsPanel
PostsPanel.Visibility = Visibility.Collapsed;
ReelsPanel.Visibility = Visibility.Visible;
TagsPanel.Visibility = Visibility.Collapsed;
}
private void TagsButton_Click(object sender, RoutedEventArgs e)
{
// Show TagsPanel and hide PostsPanel and ReelsPanel
PostsPanel.Visibility = Visibility.Collapsed;
ReelsPanel.Visibility = Visibility.Collapsed;
TagsPanel.Visibility = Visibility.Visible;
}
private bool isDescriptionVisible = false;
private void MoreDescriptionButton_Click(object sender, RoutedEventArgs e)
{
if (isDescriptionVisible)
{
// Hide the additional description
AdditionalDescription.Visibility = Visibility.Collapsed;
isDescriptionVisible = false;
}
else
{
// Show the additional description
AdditionalDescription.Visibility = Visibility.Visible;
isDescriptionVisible = true;
}
var links = profileInfoSettings.GetLinks();
if (links != null && links.Count >= 1)
{
link1Text.Text = links[0];
}
else
{
link1Text.Text = string.Empty;
}
if (links != null && links.Count >= 2)
{
link2Text.Text = links[1];
}
else
{
link2Text.Text = string.Empty;
}
var dailyMotto = profileInfoSettings.GetDailyMotto();
mottoText.Text = dailyMotto != null ? dailyMotto : string.Empty;
var hashtag = profileInfoSettings.GetHashtag();
hashtagText.Text = hashtag != null ? hashtag : string.Empty;
}
private void GenerateFrame()
{
int frameNumber = casualProfileService.GetProfileInfoSettings().GetFrameNumber();
if (frameNumber == 1)
{
firstFrame.Visibility = Visibility.Visible;
secondFrame.Visibility = Visibility.Collapsed;
thirdFrame.Visibility = Visibility.Collapsed;
fourthFrame.Visibility = Visibility.Collapsed;
fifthFrame.Visibility = Visibility.Collapsed;
romanianFrame.Visibility = Visibility.Collapsed;
}
else if (frameNumber == 2)
{
firstFrame.Visibility = Visibility.Collapsed;
secondFrame.Visibility = Visibility.Visible;
thirdFrame.Visibility = Visibility.Collapsed;
fourthFrame.Visibility = Visibility.Collapsed;
fifthFrame.Visibility = Visibility.Collapsed;
romanianFrame.Visibility = Visibility.Collapsed;
}
else if (frameNumber == 3)
{
firstFrame.Visibility = Visibility.Collapsed;
secondFrame.Visibility = Visibility.Collapsed;
thirdFrame.Visibility = Visibility.Visible;
fourthFrame.Visibility = Visibility.Collapsed;
fifthFrame.Visibility = Visibility.Collapsed;
romanianFrame.Visibility = Visibility.Collapsed;
}
else if (frameNumber == 4)
{
firstFrame.Visibility = Visibility.Collapsed;
secondFrame.Visibility = Visibility.Collapsed;
thirdFrame.Visibility = Visibility.Collapsed;
fourthFrame.Visibility = Visibility.Visible;
fifthFrame.Visibility = Visibility.Collapsed;
romanianFrame.Visibility = Visibility.Collapsed;
}
else if (frameNumber == 5)
{
firstFrame.Visibility = Visibility.Collapsed;
secondFrame.Visibility = Visibility.Collapsed;
thirdFrame.Visibility = Visibility.Collapsed;
fourthFrame.Visibility = Visibility.Collapsed;
fifthFrame.Visibility = Visibility.Visible;
romanianFrame.Visibility = Visibility.Collapsed;
}
else if (frameNumber == 6)
{
firstFrame.Visibility = Visibility.Collapsed;
secondFrame.Visibility = Visibility.Collapsed;
thirdFrame.Visibility = Visibility.Collapsed;
fourthFrame.Visibility = Visibility.Collapsed;
fifthFrame.Visibility = Visibility.Collapsed;
romanianFrame.Visibility = Visibility.Visible;
}
else
{
firstFrame.Visibility = Visibility.Collapsed;
secondFrame.Visibility = Visibility.Collapsed;
thirdFrame.Visibility = Visibility.Collapsed;
fourthFrame.Visibility = Visibility.Collapsed;
fifthFrame.Visibility = Visibility.Collapsed;
romanianFrame.Visibility = Visibility.Collapsed;
}
}
private void MoreImage_MouseDown(object sender, MouseButtonEventArgs e)
{
// Perform your action here
MessageBox.Show("More2 image clicked!");
}
}
}