|
|
@ -1,24 +1,40 @@
|
|
|
|
using System;
|
|
|
|
/// \file
|
|
|
|
|
|
|
|
/// \brief Définition de la classe Account.
|
|
|
|
|
|
|
|
/// \author Votre nom
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.ComponentModel;
|
|
|
|
using System.ComponentModel;
|
|
|
|
using System.Diagnostics;
|
|
|
|
using System.Diagnostics;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Runtime.Serialization;
|
|
|
|
using System.Runtime.Serialization;
|
|
|
|
using System;
|
|
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Model
|
|
|
|
namespace Model
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Représente un compte bancaire.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
[DataContract]
|
|
|
|
[DataContract]
|
|
|
|
public class Account : INotifyPropertyChanged, IEquatable<Account>
|
|
|
|
public class Account : INotifyPropertyChanged, IEquatable<Account>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Événement déclenché lorsqu'une propriété est modifiée.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Déclenche l'événement PropertyChanged pour une propriété donnée.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="propertyName">Nom de la propriété modifiée.</param>
|
|
|
|
void OnPropertyChanged(string propertyName)
|
|
|
|
void OnPropertyChanged(string propertyName)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Obtient ou définit le solde du compte.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
public Double Balance
|
|
|
|
public Double Balance
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -34,7 +50,9 @@ namespace Model
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
private Double balance;
|
|
|
|
private Double balance;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Obtient ou définit le nom du titulaire du compte.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
public string Name
|
|
|
|
public string Name
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -50,7 +68,9 @@ namespace Model
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
private string name;
|
|
|
|
private string name;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Obtient ou définit le numéro IBAN du compte.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
public string IBAN
|
|
|
|
public string IBAN
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -66,6 +86,9 @@ namespace Model
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
private string iban;
|
|
|
|
private string iban;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Obtient une version masquée du numéro IBAN du compte.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
public string IBANHide
|
|
|
|
public string IBANHide
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -81,26 +104,41 @@ namespace Model
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
private string ibanHide;
|
|
|
|
private string ibanHide;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Obtient ou définit la liste des transactions effectuées sur le compte.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
[DataMember]
|
|
|
|
[DataMember]
|
|
|
|
public List<Transactions> TransactionsList { get; set; } = new List<Transactions>();
|
|
|
|
public List<Transaction> TransactionsList { get; set; } = new List<Transaction>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Effectue une transaction entre le compte courant et un compte tiers.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="involvedAccount">Compte tiers impliqué dans la transaction.</param>
|
|
|
|
|
|
|
|
/// <param name="sum">Somme de la transaction.</param>
|
|
|
|
|
|
|
|
/// <param name="type">Type de transaction (débit ou crédit).</param>
|
|
|
|
|
|
|
|
/// <param name="nb">Numéro de la transaction.</param>
|
|
|
|
public void DoTransactions(Account involvedAccount, Double sum, bool type, int nb)
|
|
|
|
public void DoTransactions(Account involvedAccount, Double sum, bool type, int nb)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (type) // si le type est True => c'est un débit, on doit donc ajouter la transaction pour l'autre compte
|
|
|
|
if (type) // si le type est True => c'est un débit, on doit donc ajouter la transaction pour l'autre compte
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Transactions transaction = new Transactions(type, sum, involvedAccount, nb, DateTime.Now);
|
|
|
|
Transaction transaction = new Transaction(type, sum, involvedAccount, nb, DateTime.Now);
|
|
|
|
TransactionsList.Add(transaction);
|
|
|
|
TransactionsList.Add(transaction);
|
|
|
|
Balance = Balance - sum;
|
|
|
|
Balance = Balance - sum;
|
|
|
|
involvedAccount.DoTransactions(this, sum, !type, nb + 1);
|
|
|
|
involvedAccount.DoTransactions(this, sum, !type, nb + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else // Sinon, c'est un crédit, on a juste à l'ajouter à notre liste de transactions
|
|
|
|
else // Sinon, c'est un crédit, on a juste à l'ajouter à notre liste de transactions
|
|
|
|
{
|
|
|
|
{
|
|
|
|
TransactionsList.Add(new Transactions(type, sum, involvedAccount, nb, DateTime.Now));
|
|
|
|
TransactionsList.Add(new Transaction(type, sum, involvedAccount, nb, DateTime.Now));
|
|
|
|
Balance = Balance + sum;
|
|
|
|
Balance = Balance + sum;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Constructeur de la classe Account.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="balance">Solde initial du compte.</param>
|
|
|
|
|
|
|
|
/// <param name="name">Nom du titulaire du compte.</param>
|
|
|
|
|
|
|
|
/// <param name="iban">Numéro IBAN du compte.</param>
|
|
|
|
public Account(Double balance, string name, string iban)
|
|
|
|
public Account(Double balance, string name, string iban)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Balance = balance;
|
|
|
|
Balance = balance;
|
|
|
@ -109,40 +147,25 @@ namespace Model
|
|
|
|
IBANHide = IBANToString();
|
|
|
|
IBANHide = IBANToString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//public static void DoTransactions(string name, string iban, string sum)
|
|
|
|
/// <summary>
|
|
|
|
//{
|
|
|
|
/// Demande d'aide pour un compte.
|
|
|
|
// Debug.WriteLine(name);
|
|
|
|
/// </summary>
|
|
|
|
// Debug.WriteLine(iban);
|
|
|
|
/// <param name="subject">Sujet de la demande d'aide.</param>
|
|
|
|
// Debug.WriteLine(sum);
|
|
|
|
/// <param name="description">Description de la demande d'aide.</param>
|
|
|
|
// Debug.WriteLine("Transaction successed !");
|
|
|
|
/// <returns>Un message d'aide.</returns>
|
|
|
|
|
|
|
|
|
|
|
|
//public bool DoRequest(string name, string IBAN, float sum)
|
|
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
// List<Transactions> transactions.add(sum);
|
|
|
|
|
|
|
|
// if ()
|
|
|
|
|
|
|
|
// return true;
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//public void AskForHelp(string type, string type2, string message)
|
|
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
// Console.WriteLine("Help button pressed !");
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Message AskForHelp(string subject, string description)
|
|
|
|
public static Message AskForHelp(string subject, string description)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug.WriteLine(subject);
|
|
|
|
Debug.WriteLine(subject);
|
|
|
|
Debug.WriteLine(description);
|
|
|
|
Debug.WriteLine(description);
|
|
|
|
Debug.WriteLine("Help button pressed !");
|
|
|
|
Debug.WriteLine("Help button pressed !");
|
|
|
|
//throw new NotImplementedException();
|
|
|
|
|
|
|
|
Message message = new Message(subject, description);
|
|
|
|
Message message = new Message(subject, description);
|
|
|
|
return message;
|
|
|
|
return message;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void DoRequest(string name, string iBAN, string sum)
|
|
|
|
/// <summary>
|
|
|
|
{
|
|
|
|
/// Convertit le numéro IBAN en une version masquée.
|
|
|
|
throw new NotImplementedException();
|
|
|
|
/// </summary>
|
|
|
|
}
|
|
|
|
/// <returns>Le numéro IBAN masqué.</returns>
|
|
|
|
|
|
|
|
|
|
|
|
public string IBANToString()
|
|
|
|
public string IBANToString()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
char[] res = IBAN.ToCharArray();
|
|
|
|
char[] res = IBAN.ToCharArray();
|
|
|
@ -155,12 +178,21 @@ namespace Model
|
|
|
|
return new string(res);
|
|
|
|
return new string(res);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Vérifie si deux comptes sont égaux en comparant leur numéro IBAN.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="other">Compte à comparer.</param>
|
|
|
|
|
|
|
|
/// <returns>True si les comptes sont égaux, False sinon.</returns>
|
|
|
|
public bool Equals(Account other)
|
|
|
|
public bool Equals(Account other)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (other == null) return false;
|
|
|
|
if (other == null) return false;
|
|
|
|
else return other.IBAN.Equals(IBAN);
|
|
|
|
else return other.IBAN.Equals(IBAN);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Obtient le code de hachage du compte basé sur le numéro IBAN.
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <returns>Le code de hachage.</returns>
|
|
|
|
public override int GetHashCode()
|
|
|
|
public override int GetHashCode()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return IBAN.GetHashCode();
|
|
|
|
return IBAN.GetHashCode();
|
|
|
|