diff --git a/src/Banquale/Banquale/Stub/Stub.cs b/src/Banquale/Banquale/Stub/Stub.cs index f82d7a8..501412a 100644 --- a/src/Banquale/Banquale/Stub/Stub.cs +++ b/src/Banquale/Banquale/Stub/Stub.cs @@ -25,11 +25,11 @@ namespace Banquale.Stub Account Account2 = new Account(9510, "Despoints", "FR7647858569691441525263003"); Account Account3 = new Account(3519, "Perotte", "FR7663522541416969585847002"); - Transaction Transaction1 = new Transaction(true, 55, Account2, 1, new DateTime(2023, 6, 21, 15, 29, 20)); - Transaction Transaction12 = new Transaction(true, 105, Account2, 2, new DateTime(2023, 8, 17, 18, 54, 35)); - Transaction Transaction13 = new Transaction(true, 187, Account3, 3, new DateTime(2023, 5, 3, 8, 39, 49)); - Transaction Transaction2 = new Transaction(false, 54.99, Account2, 4, new DateTime(2022, 8, 15)); - Transaction Transaction3 = new Transaction(true, 1000, Account3, 5, new DateTime(2020, 9, 1, 20, 00, 00)); + Transaction Transaction1 = new Transaction(true, 55, Account2, new DateTime(2023, 6, 21, 15, 29, 20)); + Transaction Transaction12 = new Transaction(true, 105, Account2, new DateTime(2023, 8, 17, 18, 54, 35)); + Transaction Transaction13 = new Transaction(true, 187, Account3, new DateTime(2023, 5, 3, 8, 39, 49)); + Transaction Transaction2 = new Transaction(false, 54.99, Account2, new DateTime(2022, 8, 15)); + Transaction Transaction3 = new Transaction(true, 1000, Account3, new DateTime(2020, 9, 1, 20, 00, 00)); Debug.WriteLine(Customer1.Name, Customer1.Password); @@ -46,11 +46,11 @@ namespace Banquale.Stub //Account2.TransactionsList.Add(Transaction2); - Account1.DoTransactions(Account2, 55, true, 1); - Account1.DoTransactions(Account2, 105, true, 2); - Account1.DoTransactions(Account3, 187, true, 3); - Account1.DoTransactions(Account2, 54.99, false, 4); - Account1.DoTransactions(Account3, 1000, false, 5); + Account1.DoTransactions(Account2, 55, true); + Account1.DoTransactions(Account2, 105, true); + Account1.DoTransactions(Account3, 187, true); + Account1.DoTransactions(Account2, 54.99, false); + Account1.DoTransactions(Account3, 1000, false); Customer1.AccountsList.Add(Account1); diff --git a/src/Banquale/Banquale/Views/TransactionsPage.xaml.cs b/src/Banquale/Banquale/Views/TransactionsPage.xaml.cs index 25e29df..d20ab97 100644 --- a/src/Banquale/Banquale/Views/TransactionsPage.xaml.cs +++ b/src/Banquale/Banquale/Views/TransactionsPage.xaml.cs @@ -22,6 +22,7 @@ public partial class TransactionsPage : ContentPage async void Objection_Clicked(System.Object sender, System.EventArgs e) { + Mgr.SelectedTransaction.IsOpposition = true; await Shell.Current.Navigation.PopAsync(); } diff --git a/src/Banquale/Banquale/Views/Transfer/RequestPage.xaml b/src/Banquale/Banquale/Views/Transfer/RequestPage.xaml index 7a3709a..8f20e5a 100644 --- a/src/Banquale/Banquale/Views/Transfer/RequestPage.xaml +++ b/src/Banquale/Banquale/Views/Transfer/RequestPage.xaml @@ -26,7 +26,7 @@ Padding="3"> + MaximumWidthRequest="400" + Clicked="Send_Clicked"/> diff --git a/src/Banquale/Banquale/Views/Transfer/RequestPage.xaml.cs b/src/Banquale/Banquale/Views/Transfer/RequestPage.xaml.cs index c41832d..00ac895 100644 --- a/src/Banquale/Banquale/Views/Transfer/RequestPage.xaml.cs +++ b/src/Banquale/Banquale/Views/Transfer/RequestPage.xaml.cs @@ -14,7 +14,34 @@ public partial class RequestPage : ContentPage public async void Send_Clicked(Object sender, EventArgs e) { - //Account.DoRequest(Name.Text, IBAN.Text, Sum.Text); - await Shell.Current.GoToAsync("//balance"); + + if (string.IsNullOrEmpty(Name.Text) || string.IsNullOrEmpty(IBAN.Text) || string.IsNullOrEmpty(Sum.Text)) + { + await DisplayAlert("Erreur", "Tout les champs doivent être complétés", "OK"); + return; + } + if (Name.Text == Mgr.SelectedAccount.Name && IBAN.Text == Mgr.SelectedAccount.IBAN) + { + await DisplayAlert("Erreur", "Vous ne pouvez vous faire de demande à vous même", "OK"); + return; + } + foreach (var cust in Mgr.CustomersList) + { + foreach (var acc in cust.AccountsList) + { + if (acc.Name == Name.Text && acc.IBAN == IBAN.Text) + { + if (acc.Balance - Convert.ToDouble(Sum.Text) < 0) + { + await DisplayAlert("Erreur", "Le compte ne possède assez d'argent sur son compte pour aboutir à la transaction", "OK"); + return; + } + acc.DoTransactions(acc, Convert.ToDouble(Sum.Text), true); // Type true car c'est un virement que le SelectedAccount reçoit + await Shell.Current.Navigation.PopAsync(); + return; + } + } + } + await DisplayAlert("Erreur", "Le compte n'existe pas", "OK"); } } diff --git a/src/Banquale/Banquale/Views/Transfer/TransferPage.xaml.cs b/src/Banquale/Banquale/Views/Transfer/TransferPage.xaml.cs index ac48216..4e8abbe 100644 --- a/src/Banquale/Banquale/Views/Transfer/TransferPage.xaml.cs +++ b/src/Banquale/Banquale/Views/Transfer/TransferPage.xaml.cs @@ -12,7 +12,6 @@ public partial class TransferPage : ContentPage public async void Send_Clicked(Object sender, EventArgs e) { - int count = Mgr.SelectedAccount.TransactionsList.Count; if (string.IsNullOrEmpty(Name.Text) || string.IsNullOrEmpty(IBAN.Text) || string.IsNullOrEmpty(Sum.Text)) { @@ -35,7 +34,7 @@ public partial class TransferPage : ContentPage await DisplayAlert("Erreur", "Vous ne possèdez pas assez d'argent sur ce compte pour aboutir à la transaction", "OK"); return; } - Mgr.SelectedAccount.DoTransactions(acc, Convert.ToDouble(Sum.Text), true, count+1); // Type true car c'est un virement + Mgr.SelectedAccount.DoTransactions(acc, Convert.ToDouble(Sum.Text), true); // Type true car c'est un virement await Shell.Current.Navigation.PopAsync(); return; } diff --git a/src/Banquale/Model/Account.cs b/src/Banquale/Model/Account.cs index 3ab60ef..92c9175 100644 --- a/src/Banquale/Model/Account.cs +++ b/src/Banquale/Model/Account.cs @@ -127,19 +127,18 @@ namespace Model /// Compte tiers impliqué dans la transaction. /// Somme de la transaction. /// Type de transaction (débit ou crédit). - /// Numéro de la transaction. - public void DoTransactions(Account involvedAccount, double sum, bool type, int nb) + public void DoTransactions(Account involvedAccount, double sum, bool type) { if (type) // si le type est True => c'est un débit, on doit donc ajouter la transaction pour l'autre compte { - Transaction transaction = new Transaction(type, sum, involvedAccount, nb, DateTime.Now); + Transaction transaction = new Transaction(type, sum, involvedAccount, DateTime.Now); TransactionsList.Add(transaction); Balance = Balance - sum; - involvedAccount.DoTransactions(this, sum, !type, nb + 1); + involvedAccount.DoTransactions(this, sum, !type); } else // Sinon, c'est un crédit, on a juste à l'ajouter à notre liste de transactions { - TransactionsList.Add(new Transaction(type, sum, involvedAccount, nb, DateTime.Now)); + TransactionsList.Add(new Transaction(type, sum, involvedAccount, DateTime.Now)); Balance = Balance + sum; } } diff --git a/src/Banquale/Model/Transaction.cs b/src/Banquale/Model/Transaction.cs index 27d1ff6..28a708f 100644 --- a/src/Banquale/Model/Transaction.cs +++ b/src/Banquale/Model/Transaction.cs @@ -19,16 +19,10 @@ namespace Model PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } - /// - /// Gets the unique identifier of the transaction. - /// - [DataMember(Order = 1)] - public int Id { get; private set; } - /// /// Gets or sets the type of the transaction (debit or credit). /// - [DataMember(Order = 2)] + [DataMember(Order = 1)] public bool Type { get => type; @@ -46,7 +40,7 @@ namespace Model /// /// Gets or sets the sum of the transaction. /// - [DataMember(Order = 3)] + [DataMember(Order = 2)] public double Sum { get => sum; @@ -64,7 +58,7 @@ namespace Model /// /// Gets or sets the account(s) involved in the transaction. /// - [DataMember(Order = 4)] + [DataMember(Order = 3)] public Account? InvolvedAccounts { get => involvedAccounts; @@ -82,7 +76,7 @@ namespace Model /// /// Gets or sets the category of the transaction. /// - [DataMember(Order = 5)] + [DataMember(Order = 4)] public string? Category { get => category; @@ -100,7 +94,7 @@ namespace Model /// /// Gets or sets the date of the transaction. /// - [DataMember(Order = 6)] + [DataMember(Order = 5)] public DateTime Date { get => date; @@ -115,6 +109,11 @@ namespace Model [DataMember] private DateTime date; + + [DataMember(Order = 6)] + public bool IsOpposition { get; set; } + + /// /// Initializes a new instance of the class. /// @@ -123,14 +122,14 @@ namespace Model /// The account(s) involved in the transaction. /// The unique identifier of the transaction. /// The date of the transaction. - public Transaction(bool type, double sum, Account involvedAccounts, int id, DateTime date) + public Transaction(bool type, double sum, Account involvedAccounts, DateTime date) { Category = null; Type = type; Sum = sum; - Id = id; InvolvedAccounts = involvedAccounts; Date = date; + IsOpposition = false; } public void ChangeCategory(string newCateg)