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

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

@ -28,14 +28,14 @@
</Grid> </Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always"> <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> <BindableLayout.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300"> <Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300">
<ImageButton Grid.Column="0" Source="{Binding Affiche}" Style="{StaticResource ImageAnime}" HorizontalOptions="Start" Clicked="AnimeImageClickedList"/> <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="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="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> </Grid>
</DataTemplate> </DataTemplate>
@ -67,14 +67,14 @@
</Grid> </Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always"> <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> <BindableLayout.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300"> <Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300">
<ImageButton Grid.Column="0" Source="{Binding Affiche}" Style="{StaticResource ImageAnime}" HorizontalOptions="Start" Clicked="AnimeImageClickedList"/> <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="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="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> </Grid>
</DataTemplate> </DataTemplate>
</BindableLayout.ItemTemplate> </BindableLayout.ItemTemplate>
@ -106,7 +106,7 @@
</Grid> </Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always"> <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> <BindableLayout.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300"> <Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300">
@ -145,7 +145,7 @@
</Grid> </Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always"> <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> <BindableLayout.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300"> <Grid Margin="20,0,20,20" ColumnDefinitions="*,*,300,300">

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

@ -30,9 +30,9 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
BindingContext = this; BindingContext = this;
SetNote(); SetNote();
} }
public async void AjouterListe(object sender, EventArgs e) public async void AjouterListe(object sender, EventArgs e)
{ {
if (my_manager.UtilisateurActuel.Email == null) if (my_manager.UtilisateurActuel.Email == null)
@ -41,6 +41,40 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
return; 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"); string selectedOption = await DisplayActionSheet("Ajouter à quelle liste ?", "Annuler", null, "En Visionnage", "Déjà Vu", "Pour Plus Tard", "Favoris");
if (selectedOption == "Annuler" || selectedOption == null) if (selectedOption == "Annuler" || selectedOption == null)
@ -69,27 +103,35 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
break; 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(); my_manager.sauvegarder();
await Navigation.PushAsync(new listPage()); 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() private void SetNote()
{ {
stars.Children.Clear(); stars.Children.Clear();
bool test = my_manager.UtilisateurActuel.notesOeuvres.ContainsKey(AnimeModel.Nom); bool test = my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom);
int x; List<int> x;
for (int i = 0; i < 5; i++) 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 ImageButton imageButton = new ImageButton
{ {
@ -155,15 +197,38 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
var button = (ImageButton)sender; var button = (ImageButton)sender;
var idAutomation = button.AutomationId; var idAutomation = button.AutomationId;
List<int> x = new List<int>();
int somme = 0;
int compteur = 0;
if (int.TryParse(idAutomation, out int id)) if (int.TryParse(idAutomation, out int id))
{ {
if (my_manager.UtilisateurActuel.notesOeuvres.ContainsKey(AnimeModel.Nom)) if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom))
my_manager.UtilisateurActuel.notesOeuvres.Remove(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(); 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; return;
} }
List<int> x = new List<int>();
int nb = Convert.ToInt32(nombreEP.Text); int nb = Convert.ToInt32(nombreEP.Text);
if (my_manager.UtilisateurActuel.episodesVus.ContainsKey(AnimeModel.Nom)) if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom))
my_manager.UtilisateurActuel.episodesVus.Remove(AnimeModel.Nom); {
my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x);
my_manager.UtilisateurActuel.episodesVus.Add(AnimeModel.Nom, nb); 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}" BackgroundColor="{StaticResource Primary}"
Clicked="AjouterListe"/> 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"/> <Label Text="{Binding AnimeModel.NbEpisodes, StringFormat='/ {0}'}" FontSize="Medium" VerticalOptions="Center"/>
<ImageButton Source="ok.png" Margin="20,0,0,0" HeightRequest="20" Clicked="NbEpCheck"/> <ImageButton Source="ok.png" Margin="20,0,0,0" HeightRequest="20" Clicked="NbEpCheck"/>
</HorizontalStackLayout> </HorizontalStackLayout>
<Label Text="{Binding AnimeModel.Type}" FontSize="Large" TextColor="White"/> <Label Text="{Binding AnimeModel.Type}" FontSize="Large" TextColor="White" Margin="20,0,0,0"/>
<Label Text="{Binding AnimeModel.Description}"/> <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> </VerticalStackLayout>

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

Loading…
Cancel
Save