using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Modèle
{
///
/// Class Expert qui implémente l'interface Personne
/// Un expert peut ajouter et modifier des requins mais il peut aussi valider ou refuser les ajouts ou les modifications des utilisateurs
///
[DataContract]
public class Expert : Personne
{
///
/// DateTime qui permet de connaitre la date de création x'un compte expert
///
[DataMember]
public DateTime DateD { get; private set; }
///
/// /String le surnom d'un expert
///
[DataMember]
public string Surnom { get; private set; }
///
/// Constructeur sans DateTime
///
/// String email de l'Expert (son identifiant pour se connecter
/// String le mot de passe de l'Expert
/// String surnom de l'Expert
public Expert(string email, string mdp, string surnom) : base(email, mdp)
{
Surnom = surnom;
DateD = DateTime.Now;
}
///
/// Constructeur avec DateTime
///
/// String email de l'Expert (son identifiant pour se connecter
/// String le mot de passe de l'Expert
/// String surnom de l'Expert
/// Date de création du compte Expert
public Expert(string email, string mdp, string surnom, DateTime date) : base(email, mdp)
{
Surnom = surnom;
DateD = date;
}
///
/// Méthode ToString de la classe Expert
///
public override string ToString()
{
return Email + " " + " " + Surnom + " " + DateD;
}
///
/// Méthode de test lors de la création de la class Expert qui permettait de valider ou de refuser des requins ajoutés par les utilisateurs
///
/// List qui est la list contenant tout les requins ajoutés par des Utilisateurs
/// List qui est la list contenant tout les requins validés par les experts
/// Int : Le nombre changement validé
public int ValiderSubmit(List lBdFinie, List lBdPasFinie)
{
int i=0;
string rep;
List nv = new List();
foreach (Requin r in lBdPasFinie)
{
nv.Add(r);
}
foreach (Requin r in nv)
{
Console.WriteLine(r);
Console.WriteLine("Voulez vous ajoutez ce requin à la base de données des requins ? (y/n)");
rep = Console.ReadLine();
while (rep!="n" && rep != "y")
{
Console.WriteLine("Erreur de saisie (y/n)");
rep = Console.ReadLine();
}
if (rep == "y")
{
lBdFinie.Add(r);
i++;
}
lBdPasFinie.Remove(r);
}
return i;
}
///
/// Méthode de test lors de la création de la class Expert qui permettait de valider ou de refuser des requins édités par les utilisateurs
///
/// List qui est la list contenant tout les requins ajoutés par des Utilisateurs
/// List qui est la list contenant tout les requins validés par les experts
/// Int : Le nombre changement validé
public int ValiderUnChangement(List lBdFinie, List lBdPasfinie)
{
int i = 0;
string rep;
List nv = new List();
foreach (Requin r in lBdPasfinie)
{
nv.Add(r);
}
foreach (Requin r in nv)
{
Console.WriteLine(r);
Console.WriteLine("Voulez vous ajoutez ce requin à la base de données des requins ? (y/n)");
rep = Console.ReadLine();
while (rep != "n" && rep != "y")
{
Console.WriteLine("Erreur de saisie (y/n)");
rep = Console.ReadLine();
}
if (rep == "y")
{
lBdFinie.Remove(r);
lBdFinie.Add(r);
i++;
}
lBdPasfinie.Remove(r);
}
return i;
}
///
/// Méthode Equals de la Class Expert qui permet de savoir si deux experts sont égaux, regarde en fonction des emails
///
/// Expert
/// Booléen : true si elles sont égales, false si elles sont différentes
public bool Equals(Expert e)
{
return Email == e.Email;
}
///
/// Méthode qui permet d'ajouter un Requin dans une ObservableCollection de Requin
///
/// Requin qui va être ajouté dans l'observable collection
/// ObservableCollection l'ObservableCollection dans laquelle on ajoute le Requin
public override void AjouterRequin(Requin req, ObservableCollection requins)
{
requins.Add(req);
}
///
/// Méthode qui permet de changer le mot de passe de l'Expert
///
/// String nouveau mot de passe de l'Expert
public override void ChangerMotDePasse(string nvMdp)
{
MotDePasse = nvMdp;
}
}
}