@ -12,62 +12,150 @@ using System.Threading.Tasks;
namespace Models
namespace Models
{
{
/// <summary>
/// Représente un jeu-vidéo dans sa totalité, avec ses paramètres.
/// </summary>
[DataContract]
[DataContract]
public class Jeu
public class Jeu
{
{
/// <summary>
/// Obtient ou définit le nom du jeu.
/// </summary>
/// <value>Nom du jeu.</value>
[DataMember]
[DataMember]
public string Nom { get ; private set ; }
public string Nom { get ; private set ; }
/// <summary>
/// Obtient ou définit le résumé du jeu.
/// </summary>
/// <value>Description résumée du jeu.</value>
[DataMember]
[DataMember]
public string Resume { get ; private set ; }
public string Resume { get ; private set ; }
/// <summary>
/// Obtient ou définit la date de sortie du jeu.
/// </summary>
/// <value>La date de sortie du jeu (sans format préalable).</value>
[DataMember]
[DataMember]
public string Sortie { get ; private set ; }
public string Sortie { get ; private set ; }
/// <summary>
/// Obtient ou définit la liste des plateformes du jeu.
/// </summary>
/// <value>La liste des plateformes du jeu.</value>
[DataMember]
[DataMember]
public string Plateformes { get ; private set ; }
public List < string > ListPlateformes { get ; private set ; }
/// <summary>
/// Obtient ou définit le développeur du jeu.
/// </summary>
/// <value>Studio-développeur du jeu.</value>
[DataMember]
[DataMember]
public string Developpeur { get ; private set ; }
public string Developpeur { get ; private set ; }
/// <summary>
/// Obtient ou définit l'éditeur du jeu.
/// </summary>
/// <value>Studio-éditeur du jeu.</value>
[DataMember]
[DataMember]
public string Editeur { get ; private set ; }
public string Editeur { get ; private set ; }
/// <summary>
/// Obtient ou définit la note du jeu.
/// </summary>
/// <value>La note du jeu (sur 10).</value>
[DataMember]
[DataMember]
public double Note { get ; private set ; }
public double Note { get ; private set ; }
/// <summary>
/// Obtient ou définit le nombre de téléchargements du jeu.
/// </summary>
/// <value>Le nombre de téléchargements du jeu (en milliers).</value>
[DataMember]
[DataMember]
public int NbTelechargement { get ; private set ; }
public int NbTelechargement { get ; private set ; }
//[DataMember]
//public List<(string,string)> Revendeurs { get; private set; }
/// <summary>
/// Obtient ou définit la liste des genres du jeu.
/// </summary>
/// <value>La liste des genres du jeu.</value>
[DataMember]
[DataMember]
public string Genres { get ; private set ; }
public List < string > ListGenres { get ; private set ; }
/// <summary>
/// Obtient ou définit l'image du jeu.
/// </summary>
/// <value>L'image du jeu.</value>
[DataMember]
[DataMember]
public string Image { get ; private set ; }
public string Image { get ; private set ; }
[DataMember]
public ObservableCollection < ( string , double , string ) > ListeAvis { get ; private set ; }
/// <summary>
/// Obtient ou définit le nombre de favoris du jeu.
/// </summary>
/// <value>Le nombre d'utilisateur qui aiment le jeu.</value>
[DataMember]
[DataMember]
public int NbFavoris { get ; private set ; }
public int NbFavoris { get ; private set ; }
/// <summary>
/// Obtient ou définit le nombre de copies possédées du jeu.
/// </summary>
/// <value>Le nombre d'utilisateur qui possèdent le jeu.</value>
[DataMember]
[DataMember]
public int NbPossedes { get ; private set ; }
public int NbPossedes { get ; private set ; }
/// <summary>
/// Obtient ou définit la liste des avis du jeu.
/// </summary>
/// <value>La liste des avis du jeu.</value>
[DataMember]
public ObservableCollection < ( string , double , string ) > ListAvis { get ; private set ; }
/// <summary>
/// Constructeur qui initialise une nouvelle instance de la classe <see cref="Jeu"/>.
/// </summary>
/// <param name="nom">Le nom du jeu.</param>
/// <param name="resume">Le résumé du jeu.</param>
/// <param name="sortie">La date de sortie du jeu.</param>
/// <param name="plateformes">La liste des plateformes du jeu (séparées par des espaces).</param>
/// <param name="developpeur">Le développeur du jeu.</param>
/// <param name="editeur">L'éditeur du jeu.</param>
/// <param name="note">La note du jeu.</param>
/// <param name="nbTelechargement">Le nombre de téléchargements du jeu.</param>
/// <param name="genres">La liste des genres du jeu (séparés par des espaces).</param>
/// <param name="image">L'image du jeu.</param>
public Jeu ( string nom , string resume , string sortie , string plateformes , string developpeur , string editeur , double note , int nbTelechargement , string genres , string image )
public Jeu ( string nom , string resume , string sortie , string plateformes , string developpeur , string editeur , double note , int nbTelechargement , string genres , string image )
{
{
Nom = nom ;
Nom = nom ;
Resume = resume ;
Resume = resume ;
Sortie = sortie ;
Sortie = sortie ;
Plateformes = plateformes ;
List Plateformes = plateformes . Split ( ' ' ) . ToList ( ) ;
Developpeur = developpeur ;
Developpeur = developpeur ;
Editeur = editeur ;
Editeur = editeur ;
Note = note ;
Note = note ;
NbTelechargement = nbTelechargement ;
NbTelechargement = nbTelechargement ;
//Revendeurs = revendeurs;
ListGenres = genres . Split ( ' ' ) . ToList ( ) ;
Genres = genres ;
Image = image ;
Image = image ;
ListeAvis = new ObservableCollection < ( string , double , string ) > ( ) ;
List Avis = new ObservableCollection < ( string , double , string ) > ( ) ;
NbFavoris = 0 ;
NbFavoris = 0 ;
NbPossedes = 0 ;
NbPossedes = 0 ;
}
}
/// <summary>
/// Ajoute un avis au jeu.
/// </summary>
/// <param name="pseudo">Le pseudo de l'utilisateur donnant l'avis.</param>
/// <param name="note">La note donnée par l'utilisateur (sur 10).</param>
/// <param name="commentaire">Le commentaire de l'utilisateur.</param>
public void AjouterAvis ( string pseudo , double note , string commentaire )
public void AjouterAvis ( string pseudo , double note , string commentaire )
{
{
this . ListeAvis . Add ( ( pseudo , note , commentaire ) ) ;
this . List Avis. Add ( ( pseudo , note , commentaire ) ) ;
}
}
public override bool Equals ( object obj )
/// <summary>
/// Détermine si l'objet spécifié est égal à l'objet actuel.
/// </summary>
/// <param name="obj">L'objet à comparer avec l'objet actuel (via le Nom et la Date de Sortie).</param>
/// <returns><see langword="true"/> si les objets sont égaux, sinon <see langword="false"/>.</returns>
public override bool Equals ( object? obj )
{
{
if ( obj = = null | | GetType ( ) ! = obj . GetType ( ) )
if ( obj = = null | | GetType ( ) ! = obj . GetType ( ) )
return false ;
return false ;
@ -76,6 +164,10 @@ namespace Models
return Nom = = otherJeu . Nom & & Sortie = = otherJeu . Sortie ;
return Nom = = otherJeu . Nom & & Sortie = = otherJeu . Sortie ;
}
}
/// <summary>
/// Retourne le code de hachage de l'objet actuel.
/// </summary>
/// <returns>Le code de hachage de l'objet actuel.</returns>
public override int GetHashCode ( )
public override int GetHashCode ( )
{
{
return HashCode . Combine ( Nom , Sortie ) ;
return HashCode . Combine ( Nom , Sortie ) ;