Added request transaction

pull/69/head
Titouan LOUVET 2 years ago
parent 61e4ae7f77
commit 1b4882ab51

@ -25,11 +25,11 @@ namespace Banquale.Stub
Account Account2 = new Account(9510, "Despoints", "FR7647858569691441525263003"); Account Account2 = new Account(9510, "Despoints", "FR7647858569691441525263003");
Account Account3 = new Account(3519, "Perotte", "FR7663522541416969585847002"); Account Account3 = new Account(3519, "Perotte", "FR7663522541416969585847002");
Transaction Transaction1 = new Transaction(true, 55, Account2, 1, new DateTime(2023, 6, 21, 15, 29, 20)); Transaction Transaction1 = new Transaction(true, 55, Account2, 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 Transaction12 = new Transaction(true, 105, Account2, 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 Transaction13 = new Transaction(true, 187, Account3, new DateTime(2023, 5, 3, 8, 39, 49));
Transaction Transaction2 = new Transaction(false, 54.99, Account2, 4, new DateTime(2022, 8, 15)); Transaction Transaction2 = new Transaction(false, 54.99, Account2, new DateTime(2022, 8, 15));
Transaction Transaction3 = new Transaction(true, 1000, Account3, 5, new DateTime(2020, 9, 1, 20, 00, 00)); Transaction Transaction3 = new Transaction(true, 1000, Account3, new DateTime(2020, 9, 1, 20, 00, 00));
Debug.WriteLine(Customer1.Name, Customer1.Password); Debug.WriteLine(Customer1.Name, Customer1.Password);
@ -46,11 +46,11 @@ namespace Banquale.Stub
//Account2.TransactionsList.Add(Transaction2); //Account2.TransactionsList.Add(Transaction2);
Account1.DoTransactions(Account2, 55, true, 1); Account1.DoTransactions(Account2, 55, true);
Account1.DoTransactions(Account2, 105, true, 2); Account1.DoTransactions(Account2, 105, true);
Account1.DoTransactions(Account3, 187, true, 3); Account1.DoTransactions(Account3, 187, true);
Account1.DoTransactions(Account2, 54.99, false, 4); Account1.DoTransactions(Account2, 54.99, false);
Account1.DoTransactions(Account3, 1000, false, 5); Account1.DoTransactions(Account3, 1000, false);
Customer1.AccountsList.Add(Account1); Customer1.AccountsList.Add(Account1);

@ -91,7 +91,7 @@
<Button <Button
Text="Faire opposition" Text="Faire opposition"
Margin="0, 50, 0, 0" Margin="0, 50, 0, 0"
Clicked="Objection_Clicked"/> Clicked="Objection_Clicked" x:Name="oppose"/>
</VerticalStackLayout> </VerticalStackLayout>

@ -26,7 +26,7 @@
Padding="3"> Padding="3">
<Entry <Entry
Text="FR " Text="FR"
Placeholder="IBAN (FR)" Placeholder="IBAN (FR)"
HorizontalOptions="Center" HorizontalOptions="Center"
WidthRequest="280" WidthRequest="280"
@ -54,7 +54,8 @@
Margin="0, 75, 0, 0" Margin="0, 75, 0, 0"
MinimumHeightRequest="80" MinimumHeightRequest="80"
WidthRequest="300" WidthRequest="300"
MaximumWidthRequest="400"/> MaximumWidthRequest="400"
Clicked="Send_Clicked"/>
</VerticalStackLayout> </VerticalStackLayout>

@ -14,7 +14,34 @@ public partial class RequestPage : ContentPage
public async void Send_Clicked(Object sender, EventArgs e) 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");
} }
} }

@ -12,7 +12,6 @@ public partial class TransferPage : ContentPage
public async void Send_Clicked(Object sender, EventArgs e) 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)) 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"); await DisplayAlert("Erreur", "Vous ne possèdez pas assez d'argent sur ce compte pour aboutir à la transaction", "OK");
return; 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(); await Shell.Current.Navigation.PopAsync();
return; return;
} }

@ -127,19 +127,18 @@ namespace Model
/// <param name="involvedAccount">Compte tiers impliqué dans la transaction.</param> /// <param name="involvedAccount">Compte tiers impliqué dans la transaction.</param>
/// <param name="sum">Somme de 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="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)
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
{ {
Transaction transaction = new Transaction(type, sum, involvedAccount, nb, DateTime.Now); Transaction transaction = new Transaction(type, sum, involvedAccount, 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);
} }
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 Transaction(type, sum, involvedAccount, nb, DateTime.Now)); TransactionsList.Add(new Transaction(type, sum, involvedAccount, DateTime.Now));
Balance = Balance + sum; Balance = Balance + sum;
} }
} }

@ -19,16 +19,10 @@ namespace Model
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
} }
/// <summary>
/// Gets the unique identifier of the transaction.
/// </summary>
[DataMember(Order = 1)]
public int Id { get; private set; }
/// <summary> /// <summary>
/// Gets or sets the type of the transaction (debit or credit). /// Gets or sets the type of the transaction (debit or credit).
/// </summary> /// </summary>
[DataMember(Order = 2)] [DataMember(Order = 1)]
public bool Type public bool Type
{ {
get => type; get => type;
@ -46,7 +40,7 @@ namespace Model
/// <summary> /// <summary>
/// Gets or sets the sum of the transaction. /// Gets or sets the sum of the transaction.
/// </summary> /// </summary>
[DataMember(Order = 3)] [DataMember(Order = 2)]
public double Sum public double Sum
{ {
get => sum; get => sum;
@ -64,7 +58,7 @@ namespace Model
/// <summary> /// <summary>
/// Gets or sets the account(s) involved in the transaction. /// Gets or sets the account(s) involved in the transaction.
/// </summary> /// </summary>
[DataMember(Order = 4)] [DataMember(Order = 3)]
public Account? InvolvedAccounts public Account? InvolvedAccounts
{ {
get => involvedAccounts; get => involvedAccounts;
@ -82,7 +76,7 @@ namespace Model
/// <summary> /// <summary>
/// Gets or sets the category of the transaction. /// Gets or sets the category of the transaction.
/// </summary> /// </summary>
[DataMember(Order = 5)] [DataMember(Order = 4)]
public string? Category public string? Category
{ {
get => category; get => category;
@ -100,7 +94,7 @@ namespace Model
/// <summary> /// <summary>
/// Gets or sets the date of the transaction. /// Gets or sets the date of the transaction.
/// </summary> /// </summary>
[DataMember(Order = 6)] [DataMember(Order = 5)]
public DateTime Date public DateTime Date
{ {
get => date; get => date;
@ -116,7 +110,7 @@ namespace Model
private DateTime date; private DateTime date;
[DataMember(Order = 7)] [DataMember(Order = 6)]
public bool IsOpposition { get; set; } public bool IsOpposition { get; set; }
@ -128,12 +122,11 @@ namespace Model
/// <param name="involvedAccounts">The account(s) involved in the transaction.</param> /// <param name="involvedAccounts">The account(s) involved in the transaction.</param>
/// <param name="id">The unique identifier of the transaction.</param> /// <param name="id">The unique identifier of the transaction.</param>
/// <param name="date">The date of the transaction.</param> /// <param name="date">The date of the transaction.</param>
public Transaction(bool type, double sum, Account involvedAccounts, int id, DateTime date) public Transaction(bool type, double sum, Account involvedAccounts, DateTime date)
{ {
Category = null; Category = null;
Type = type; Type = type;
Sum = sum; Sum = sum;
Id = id;
InvolvedAccounts = involvedAccounts; InvolvedAccounts = involvedAccounts;
Date = date; Date = date;
IsOpposition = false; IsOpposition = false;

Loading…
Cancel
Save