Files
School/Anul 2/Semestrul 2/ISS/Lab5/CasualProfile/District 3 App/HighlightsFE/SelectHighlight.xaml.cs
T
2024-08-31 12:07:21 +03:00

151 lines
5.3 KiB
C#

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.Shapes;
using District_3_App.Enitities;
using District_3_App.Enitities.Mocks;
using District_3_App.Repository;
using District_3_App.Service;
namespace District_3_App.HighlightsFE
{
public class HighlightInfo
{
public string Name { get; set; }
public string Cover { get; set; }
public Guid HighlightId { get; set; }
public HighlightInfo(string name, string cover, Guid highlightId)
{
Name = name;
Cover = cover;
HighlightId = highlightId;
}
}
public partial class SelectHighlight : Window
{
public List<HighlightInfo> Highlights { get; set; }
private List<Guid> selectedPostsGuid = new List<Guid>();
private List<Guid> selectedHighlightsGUID = new List<Guid>();
private SnapshotsService snapshotsService;
private CasualProfileService casualProfileService = new CasualProfileService();
public SelectHighlight(List<Guid> selectedPostsGuids)
{
this.selectedPostsGuid = selectedPostsGuids;
this.snapshotsService = casualProfileService.GetSnapshotsService();
InitializeComponent();
LoadHighlights();
}
private void LoadHighlights()
{
List<Highlight> highlights = snapshotsService.GetHighlightsOfUser();
if (highlights == null || highlights.Count == 0)
{
MessageBox.Show("No highlights found.");
CreateNewHighlight createNewHighlight = new CreateNewHighlight(selectedPostsGuid);
// navigationFrame.Navigate(createNewHighlight);
createNewHighlight.Show();
this.Close();
}
Highlights = new List<HighlightInfo>();
foreach (Highlight highlight in highlights)
{
// HighlightsRepo highlightsRepo = new HighlightsRepo();
List<MockPhotoPost> userPosts = casualProfileService.GetConnectedUserPosts();
MockPhotoPost coverPost = userPosts.FirstOrDefault(post => post.GetPostId().ToString() == highlight.GetCover());
if (coverPost != null)
{
Highlights.Add(new HighlightInfo(highlight.GetName(), coverPost.GetPhoto(), highlight.GetHighlightId()));
}
else
{
Highlights.Add(new HighlightInfo(highlight.GetName(), "/images/black.png", highlight.GetHighlightId()));
}
}
DataContext = Highlights;
}
private void CheckBox_Loaded(object sender, RoutedEventArgs e)
{
CheckBox checkBox = (CheckBox)sender;
HighlightInfo highlightInfo = (HighlightInfo)checkBox.DataContext;
checkBox.Name = "CheckBox_" + highlightInfo.HighlightId.ToString().Replace("-", "_");
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
CheckBox checkBox = (CheckBox)sender;
string checkBoxName = checkBox.Name;
if (checkBoxName.StartsWith("CheckBox_"))
{
string photoGuid = checkBoxName.Replace("CheckBox_", string.Empty);
photoGuid = photoGuid.Replace("_", "-");
if (!selectedHighlightsGUID.Contains(Guid.Parse(photoGuid)))
{
selectedHighlightsGUID.Add(Guid.Parse(photoGuid));
}
}
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
CheckBox checkBox = (CheckBox)sender;
string checkBoxName = checkBox.Name;
if (checkBoxName.StartsWith("CheckBox_"))
{
string photoGuid = checkBoxName.Replace("CheckBox_", string.Empty);
photoGuid = photoGuid.Replace("_", "-");
if (selectedHighlightsGUID.Contains(Guid.Parse(photoGuid)))
{
selectedHighlightsGUID.Remove(Guid.Parse(photoGuid));
}
}
}
private void DoneButton_Click(object sender, RoutedEventArgs e)
{
if (selectedHighlightsGUID.Count == 0)
{
return;
}
foreach (Guid highlightGuid in selectedHighlightsGUID)
{
if (highlightGuid == Guid.Empty)
{
continue;
}
foreach (Guid postId in selectedPostsGuid)
{
snapshotsService.AddPostToHighlight(highlightGuid, postId);
}
}
this.Close();
}
private void CreateNewHighlightButton_Click(object sender, RoutedEventArgs e)
{
CreateNewHighlight createNewHighlight = new CreateNewHighlight(selectedPostsGuid);
// navigationFrame.Navigate(createNewHighlight);
createNewHighlight.Show();
this.Close();
}
}
}