note globale
continuous-integration/drone/push Build is failing Details

pull/37/head
Vianney JOURDY 2 years ago
parent 0149eaa91e
commit 8c03023b19

@ -26,9 +26,7 @@ namespace MangaMap.Model
[DataMember]
public ObservableCollection<Oeuvre> ListeOeuvreFavorites { get; set; }
[DataMember]
public Dictionary<string,int> notesOeuvres { get; set; }
[DataMember]
public Dictionary<string,int> episodesVus { get; set; }
public Dictionary<string,List<int>> notesNombres { get; set; }
public Utilisateur(string email, string pseudo, string mdp, string nom, string prenom, int age)
{
@ -43,8 +41,7 @@ namespace MangaMap.Model
ListeOeuvreDejaVu = new ObservableCollection<Oeuvre>();
ListeOeuvrePourPlusTard = new ObservableCollection<Oeuvre>();
ListeOeuvreFavorites = new ObservableCollection<Oeuvre>();
notesOeuvres = new Dictionary<string, int>();
episodesVus = new Dictionary<string, int>();
notesNombres = new Dictionary<string, List<int>>();
}
public Utilisateur() {
@ -52,8 +49,7 @@ namespace MangaMap.Model
ListeOeuvreDejaVu = new ObservableCollection<Oeuvre>();
ListeOeuvrePourPlusTard = new ObservableCollection<Oeuvre>();
ListeOeuvreFavorites = new ObservableCollection<Oeuvre>();
notesOeuvres = new Dictionary<string, int>();
episodesVus = new Dictionary<string, int>();
notesNombres = new Dictionary<string, List<int>>();
}
public void SupprimerUtilisateur()

@ -1,43 +1,43 @@
using MangaMap.Model;
using System;
using System.Collections.Generic;
using MangaMap.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MangaMap.Stub
{
public class Stub : IPersistanceManager
//Cette classe sert à faire charger un jeu de données qui n'est pas celui enregistrer dans le fichier sur l'ordinateur.
//Il permet de faire des transistion entre différent moyen de persister.
{
public (ObservableCollection<Oeuvre>, List<Utilisateur>) chargeDonne()
{
ObservableCollection<Oeuvre> l1 = new ObservableCollection<Oeuvre>();
List<Utilisateur> l2 = new List<Utilisateur>();
Utilisateur u1 = new Utilisateur("t", "Pseudo1", "t", "Jean", "Baptiste", 12);
Utilisateur u2 = new Utilisateur("test@test.ts", "Pseudo2", "MotDePasse123", "Baptiste", "Jean", 12);
Utilisateur u3 = new Utilisateur("test@test.ts", "Pseudo3", "MotDePasse123", "David", "Marc", 12);
List<string> genres = new List<string>();
genres.Add("Action");
genres.Add("Future");
Oeuvre o1 = new Oeuvre("Evangelion", genres, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg");
Oeuvre o2 = new Oeuvre("[Oshi No Ko]", genres, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png");
l1.Add(o1); l1.Add(o2);
l2.Add(u1); l2.Add(u2); l2.Add(u3);
//u1.ListeOeuvreEnVisionnage.Add(o1);
return (l1, l2);
}
public void sauvegarder(ObservableCollection<Oeuvre> o, List<Utilisateur> u)
{
throw new NotImplementedException();
}
}
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MangaMap.Stub
{
public class Stub : IPersistanceManager
//Cette classe sert à faire charger un jeu de données qui n'est pas celui enregistrer dans le fichier sur l'ordinateur.
//Il permet de faire des transistion entre différent moyen de persister.
{
public (ObservableCollection<Oeuvre>, List<Utilisateur>) chargeDonne()
{
ObservableCollection<Oeuvre> l1 = new ObservableCollection<Oeuvre>();
List<Utilisateur> l2 = new List<Utilisateur>();
Utilisateur u1 = new Utilisateur("t", "Pseudo1", "t", "Jean", "Baptiste", 12);
Utilisateur u2 = new Utilisateur("s", "Pseudo2", "s", "Baptiste", "Jean", 12);
Utilisateur u3 = new Utilisateur("v", "Pseudo3", "v", "David", "Marc", 12);
List<string> genres = new List<string>();
genres.Add("Action");
genres.Add("Future");
Oeuvre o1 = new Oeuvre("Evangelion", genres, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg");
Oeuvre o2 = new Oeuvre("[Oshi No Ko]", genres, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png");
l1.Add(o1); l1.Add(o2);
l2.Add(u1); l2.Add(u2); l2.Add(u3);
//u1.ListeOeuvreEnVisionnage.Add(o1);
return (l1, l2);
}
public void sauvegarder(ObservableCollection<Oeuvre> o, List<Utilisateur> u)
{
throw new NotImplementedException();
}
}
}

@ -28,14 +28,14 @@
</Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always">
<VerticalStackLayout BindableLayout.ItemsSource="{Binding UtilisateurActuel.ListeOeuvreEnVisionnage}" Spacing="10">
<VerticalStackLayout BindableLayout.ItemsSource="{Binding my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage}" Spacing="10">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300">
<ImageButton Grid.Column="0" Source="{Binding Affiche}" Style="{StaticResource ImageAnime}" HorizontalOptions="Start" Clicked="AnimeImageClickedList"/>
<Label Grid.Column="1" Text="{Binding Nom}" TextColor="White" FontSize="Medium" VerticalOptions="Center" Margin="15"/>
<Label Grid.Column="2" Text="{Binding Note, StringFormat='{0}/5'}" TextColor="White" FontSize="Medium" VerticalOptions="Center" HorizontalOptions="Center"/>
<Label Grid.Column="3" Text="{Binding NbEpisodes}" TextColor="White" FontSize="Medium" VerticalOptions="Center" HorizontalOptions="End"/>
<Label Grid.Column="3" Text="{Binding NbEpisodes}" TextColor="White" FontSize="Medium" VerticalOptions="Center" HorizontalOptions="End"/>
</Grid>
</DataTemplate>
@ -67,14 +67,14 @@
</Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always">
<VerticalStackLayout BindableLayout.ItemsSource="{Binding UtilisateurActuel.ListeOeuvreDejaVu}" Spacing="10">
<VerticalStackLayout BindableLayout.ItemsSource="{Binding my_manager.UtilisateurActuel.ListeOeuvreDejaVu}" Spacing="10">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300">
<ImageButton Grid.Column="0" Source="{Binding Affiche}" Style="{StaticResource ImageAnime}" HorizontalOptions="Start" Clicked="AnimeImageClickedList"/>
<Label Grid.Column="1" Text="{Binding Nom}" TextColor="White" FontSize="Medium" VerticalOptions="Center" Margin="15"/>
<Label Grid.Column="2" Text="{Binding Note, StringFormat='{0}/5'}" TextColor="White" FontSize="Medium" VerticalOptions="Center" HorizontalOptions="Center"/>
<Label Grid.Column="3" Text="{Binding NbEpisodes}" TextColor="White" FontSize="Medium" VerticalOptions="Center" HorizontalOptions="End"/>
<Label Grid.Column="3" Text="{Binding NbEpisodes}" TextColor="White" FontSize="Medium" VerticalOptions="Center" HorizontalOptions="End"/>
</Grid>
</DataTemplate>
</BindableLayout.ItemTemplate>
@ -106,7 +106,7 @@
</Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always">
<VerticalStackLayout BindableLayout.ItemsSource="{Binding UtilisateurActuel. ListeOeuvrePourPlusTard}" Spacing="10">
<VerticalStackLayout BindableLayout.ItemsSource="{Binding my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard}" Spacing="10">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300">
@ -145,7 +145,7 @@
</Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always">
<VerticalStackLayout BindableLayout.ItemsSource="{Binding UtilisateurActuel.ListeOeuvreFavorites}" Spacing="10">
<VerticalStackLayout BindableLayout.ItemsSource="{Binding my_manager.UtilisateurActuel.ListeOeuvreFavorites}" Spacing="10">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300">

@ -1,5 +1,6 @@
namespace MangaMap.Views.Composants;
using MangaMap.Model;
using System.Xml;
public partial class ListOeuvre : ContentView
{
@ -8,7 +9,7 @@ public partial class ListOeuvre : ContentView
public ListOeuvre()
{
InitializeComponent();
BindingContext = my_manager;
BindingContext = this;
}
private async void AnimeImageClickedList(object sender, EventArgs e)

@ -30,9 +30,9 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
BindingContext = this;
SetNote();
SetNote();
}
public async void AjouterListe(object sender, EventArgs e)
{
if (my_manager.UtilisateurActuel.Email == null)
@ -41,6 +41,40 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
return;
}
// Si la série est déjà dans la liste il faut bloquer l'ajout.
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage)
{
if (oeuvre.Nom == AnimeModel.Nom)
{
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'En visionnage'.", "OK");
return;
}
}
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreDejaVu)
{
if (oeuvre.Nom == AnimeModel.Nom)
{
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'Déjà vu'.", "OK");
return;
}
}
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreFavorites)
{
if (oeuvre.Nom == AnimeModel.Nom)
{
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'En favoris'.", "OK");
return;
}
}
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard)
{
if (oeuvre.Nom == AnimeModel.Nom)
{
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'Pour plus tard'.", "OK");
return;
}
}
string selectedOption = await DisplayActionSheet("Ajouter à quelle liste ?", "Annuler", null, "En Visionnage", "Déjà Vu", "Pour Plus Tard", "Favoris");
if (selectedOption == "Annuler" || selectedOption == null)
@ -69,27 +103,35 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
break;
}
////foreach (oeuvre oeuvre in my_manager.utilisateuractuel.listeoeuvreenvisionnage)
////{
//// debug.writeline("titre de l'oeuvre : " + oeuvre.nom);
//// // faites d'autres opérations avec chaque élément de la liste
////}
my_manager.sauvegarder();
await Navigation.PushAsync(new listPage());
}
public async void SupprimerListe(object sender, EventArgs e)
{
if (my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Remove(AnimeModel) ||
my_manager.UtilisateurActuel.ListeOeuvreDejaVu.Remove(AnimeModel) ||
my_manager.UtilisateurActuel.ListeOeuvreFavorites.Remove(AnimeModel) ||
my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard.Remove(AnimeModel))
my_manager.sauvegarder();
else
{
await DisplayAlert("Erreur", "Avez n'avez pas cette série dans une liste.", "OK");
return;
}
}
private void SetNote()
{
stars.Children.Clear();
bool test = my_manager.UtilisateurActuel.notesOeuvres.ContainsKey(AnimeModel.Nom);
int x;
bool test = my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom);
List<int> x;
for (int i = 0; i < 5; i++)
{
if (my_manager.UtilisateurActuel.notesOeuvres.TryGetValue(AnimeModel.Nom,out x) && i<x)
if (my_manager.UtilisateurActuel.notesNombres.TryGetValue(AnimeModel.Nom,out x) && i < x[0])
{
ImageButton imageButton = new ImageButton
{
@ -155,15 +197,38 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
var button = (ImageButton)sender;
var idAutomation = button.AutomationId;
List<int> x = new List<int>();
int somme = 0;
int compteur = 0;
if (int.TryParse(idAutomation, out int id))
{
if (my_manager.UtilisateurActuel.notesOeuvres.ContainsKey(AnimeModel.Nom))
my_manager.UtilisateurActuel.notesOeuvres.Remove(AnimeModel.Nom);
if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom))
{
my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x);
x[0] = id + 1;
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
}
else
{
x.Add(id + 1);
x.Add(0);
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
}
my_manager.UtilisateurActuel.notesOeuvres.Add(AnimeModel.Nom, id+1);
my_manager.sauvegarder();
SetNote();
foreach (Utilisateur u in my_manager.Utilisateurs)
{
if(u.notesNombres.TryGetValue(AnimeModel.Nom, out x) && x[0] != 0)
{
compteur = compteur + 1;
somme = somme + x[0];
}
}
AnimeModel.Note = somme / compteur;
my_manager.sauvegarder();
}
}
@ -175,11 +240,23 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
return;
}
List<int> x = new List<int>();
int nb = Convert.ToInt32(nombreEP.Text);
if (my_manager.UtilisateurActuel.episodesVus.ContainsKey(AnimeModel.Nom))
my_manager.UtilisateurActuel.episodesVus.Remove(AnimeModel.Nom);
my_manager.UtilisateurActuel.episodesVus.Add(AnimeModel.Nom, nb);
if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom))
{
my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x);
x[1] = nb;
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
return;
}
else
{
x.Add(0);
x.Add(nb);
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
}
my_manager.sauvegarder();
}
}

@ -36,13 +36,20 @@
BackgroundColor="{StaticResource Primary}"
Clicked="AjouterListe"/>
<Entry x:Name="nombreEP" Placeholder="Nombre d'épisodes vues" Margin="10,10,10,10" HeightRequest="20" WidthRequest="180" Style="{StaticResource Champs}"/>
<Entry x:Name="nombreEP" Placeholder="Nombre d'épisodes vu" Margin="10,10,10,10" HeightRequest="20" WidthRequest="180" PlaceholderColor="White"/>
<Label Text="{Binding AnimeModel.NbEpisodes, StringFormat='/ {0}'}" FontSize="Medium" VerticalOptions="Center"/>
<ImageButton Source="ok.png" Margin="20,0,0,0" HeightRequest="20" Clicked="NbEpCheck"/>
</HorizontalStackLayout>
<Label Text="{Binding AnimeModel.Type}" FontSize="Large" TextColor="White"/>
<Label Text="{Binding AnimeModel.Description}"/>
<Label Text="{Binding AnimeModel.Type}" FontSize="Large" TextColor="White" Margin="20,0,0,0"/>
<Label Text="{Binding AnimeModel.Description}" Margin="20,0,0,0"/>
<Button Text="Supprimer de la liste"
TextColor="#FFFFFF"
HorizontalOptions="End"
Margin="20"
BackgroundColor="Red"
Clicked="SupprimerListe"/>
</VerticalStackLayout>

@ -48,6 +48,7 @@ public partial class loginPage : ContentPage
// On garde l'utilisateur qui vient de se connecter pour accéder à ses informations
my_manager.UtilisateurActuel = utilisateur;
// Rediriger l'utilisateur vers la page principale
await Shell.Current.GoToAsync("//page/homePage");
}

Loading…
Cancel
Save