parent
5821c8c1d0
commit
e1c68f442f
@ -1,13 +1,20 @@
|
|||||||
using Model;
|
using Model;
|
||||||
|
|
||||||
namespace Banquale.Views.Category;
|
namespace Banquale.Views.Category
|
||||||
|
|
||||||
public partial class CategoryPage : ContentPage
|
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Page de catégorie.
|
||||||
|
/// </summary>
|
||||||
|
public partial class CategoryPage : ContentPage
|
||||||
|
{
|
||||||
|
public Manager Mgr => (App.Current as App).MyManager;
|
||||||
|
|
||||||
public Manager Mgr => (App.Current as App).MyManager;
|
/// <summary>
|
||||||
public CategoryPage()
|
/// Constructeur de la page CategoryPage.
|
||||||
{
|
/// </summary>
|
||||||
InitializeComponent();
|
public CategoryPage()
|
||||||
}
|
{
|
||||||
}
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,26 +1,36 @@
|
|||||||
using Model;
|
using Model;
|
||||||
|
|
||||||
namespace Banquale.Views.Category;
|
namespace Banquale.Views.Category
|
||||||
|
|
||||||
public partial class CategoryView : ContentView
|
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Vue partielle pour afficher les différentes catégories.
|
||||||
|
/// </summary>
|
||||||
|
public partial class CategoryView : ContentView
|
||||||
|
{
|
||||||
|
public Manager Mgr => (App.Current as App).MyManager;
|
||||||
|
|
||||||
public Manager Mgr => (App.Current as App).MyManager;
|
/// <summary>
|
||||||
public CategoryView()
|
/// Constructeur de la vue CategoryView.
|
||||||
{
|
/// </summary>
|
||||||
InitializeComponent();
|
public CategoryView()
|
||||||
BindingContext = Mgr;
|
{
|
||||||
}
|
InitializeComponent();
|
||||||
|
BindingContext = Mgr;
|
||||||
|
}
|
||||||
|
|
||||||
public async void Category_Clicked(object sender, EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Gère l'événement de clic sur une catégorie.
|
||||||
var selectedItem = (sender as Grid)?.BindingContext as string;
|
/// </summary>
|
||||||
if (selectedItem != null)
|
public async void Category_Clicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Mgr.SelectedTransaction.ChangeCategory(selectedItem);
|
var selectedItem = (sender as Grid)?.BindingContext as string;
|
||||||
Mgr.Persistence.DataSave(Mgr.CustomersList, Mgr.Consultant);
|
|
||||||
await Shell.Current.Navigation.PopAsync();
|
if (selectedItem != null)
|
||||||
|
{
|
||||||
|
Mgr.SelectedTransaction.ChangeCategory(selectedItem);
|
||||||
|
Mgr.Persistence.DataSave(Mgr.CustomersList, Mgr.Consultant);
|
||||||
|
await Shell.Current.Navigation.PopAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,49 +1,57 @@
|
|||||||
using Model;
|
using Model;
|
||||||
|
|
||||||
namespace Banquale.Views;
|
namespace Banquale.Views
|
||||||
|
|
||||||
public partial class ConnectionPage : ContentPage
|
|
||||||
{
|
{
|
||||||
public Manager Mgr => (App.Current as App).MyManager;
|
/// <summary>
|
||||||
|
/// Page de connexion.
|
||||||
public ConnectionPage()
|
/// </summary>
|
||||||
{
|
public partial class ConnectionPage : ContentPage
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async void Connection_Clicked(Object sender, EventArgs e)
|
|
||||||
{
|
{
|
||||||
uint currentId = Convert.ToUInt32(ident.Text);
|
public Manager Mgr => (App.Current as App).MyManager;
|
||||||
string password = pass.Text;
|
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(ident.Text) || string.IsNullOrWhiteSpace(password))
|
|
||||||
{
|
|
||||||
await DisplayAlert("Erreur", "Tout les champs doivent être complétés", "OK");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(currentId == 0 && password == "consultant")
|
/// <summary>
|
||||||
|
/// Initialise une nouvelle instance de la classe ConnectionPage.
|
||||||
|
/// </summary>
|
||||||
|
public ConnectionPage()
|
||||||
{
|
{
|
||||||
Mgr.IsConsultant = true;
|
InitializeComponent();
|
||||||
await Navigation.PushModalAsync(new ConsultantHomePage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Mgr.IsConsultant = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Customer customer = Mgr.CustomersList.FirstOrDefault(u => u.Id == currentId && u.Password == password);
|
/// <summary>
|
||||||
if (customer == null)
|
/// Gère l'événement du bouton de connexion.
|
||||||
|
/// </summary>
|
||||||
|
public async void Connection_Clicked(Object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Le mot de passe ou l'id entré est incorrect.", "OK");
|
uint currentId = Convert.ToUInt32(ident.Text);
|
||||||
return;
|
string password = pass.Text;
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(ident.Text) || string.IsNullOrWhiteSpace(password))
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Tous les champs doivent être complétés", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentId == 0 && password == "consultant")
|
||||||
|
{
|
||||||
|
Mgr.IsConsultant = true;
|
||||||
|
await Navigation.PushModalAsync(new ConsultantHomePage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Mgr.IsConsultant = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Customer customer = Mgr.CustomersList.FirstOrDefault(u => u.Id == currentId && u.Password == password);
|
||||||
|
if (customer == null)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Le mot de passe ou l'identifiant entré est incorrect.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Mgr.SelectedCustomer = customer;
|
||||||
|
|
||||||
|
await Navigation.PushModalAsync(new SwitchAccountPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
Mgr.SelectedCustomer = customer;
|
|
||||||
|
|
||||||
|
|
||||||
await Navigation.PushModalAsync(new SwitchAccountPage());
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
@ -1,33 +1,48 @@
|
|||||||
namespace Banquale.Views;
|
namespace Banquale.Views
|
||||||
|
|
||||||
public partial class ConsultantHomePage : ContentPage
|
|
||||||
{
|
{
|
||||||
public ConsultantHomePage()
|
/// <summary>
|
||||||
{
|
/// Page d'accueil du consultant.
|
||||||
InitializeComponent();
|
/// </summary>
|
||||||
}
|
public partial class ConsultantHomePage : ContentPage
|
||||||
|
|
||||||
async void DisconnectionClicked(System.Object sender, System.EventArgs e)
|
|
||||||
{
|
{
|
||||||
await Shell.Current.GoToAsync("///connection");
|
/// <summary>
|
||||||
}
|
/// Initialise une nouvelle instance de la classe ConsultantHomePage.
|
||||||
|
/// </summary>
|
||||||
|
public ConsultantHomePage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
async void Id_Clicked(System.Object sender, System.EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Gère l'événement du bouton de déconnexion.
|
||||||
await Shell.Current.Navigation.PushAsync(new ConsultantIdPage());
|
/// </summary>
|
||||||
//await Shell.Current.GoToAsync("..");
|
async void DisconnectionClicked(System.Object sender, System.EventArgs e)
|
||||||
}
|
{
|
||||||
|
await Shell.Current.GoToAsync("///connection");
|
||||||
|
}
|
||||||
|
|
||||||
async void Create_Customer_Clicked(System.Object sender, System.EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Gère l'événement du bouton d'identification du client.
|
||||||
await Shell.Current.Navigation.PushAsync(new CreateCustomerPage());
|
/// </summary>
|
||||||
//await Shell.Current.GoToAsync("///createcustomer");
|
async void Id_Clicked(System.Object sender, System.EventArgs e)
|
||||||
}
|
{
|
||||||
|
await Shell.Current.Navigation.PushAsync(new ConsultantIdPage());
|
||||||
|
}
|
||||||
|
|
||||||
async void Message_Clicked(System.Object sender, System.EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Gère l'événement du bouton de création de client.
|
||||||
await Shell.Current.Navigation.PushAsync(new MessageListPage());
|
/// </summary>
|
||||||
//await Shell.Current.GoToAsync("///createcustomer");
|
async void Create_Customer_Clicked(System.Object sender, System.EventArgs e)
|
||||||
}
|
{
|
||||||
|
await Shell.Current.Navigation.PushAsync(new CreateCustomerPage());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
/// <summary>
|
||||||
|
/// Gère l'événement du bouton de messagerie.
|
||||||
|
/// </summary>
|
||||||
|
async void Message_Clicked(System.Object sender, System.EventArgs e)
|
||||||
|
{
|
||||||
|
await Shell.Current.Navigation.PushAsync(new MessageListPage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,47 +1,63 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using Banquale.Views;
|
using Banquale.Views;
|
||||||
using Model;
|
using Model;
|
||||||
|
|
||||||
namespace Banquale.Views;
|
namespace Banquale.Views
|
||||||
|
|
||||||
public partial class ConsultantIdPage : ContentPage
|
|
||||||
{
|
{
|
||||||
public Manager Mgr => (App.Current as App).MyManager;
|
/// <summary>
|
||||||
|
/// Page d'identification du consultant.
|
||||||
public ConsultantIdPage()
|
/// </summary>
|
||||||
{
|
public partial class ConsultantIdPage : ContentPage
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async void Connection_Clicked(Object sender, EventArgs e)
|
|
||||||
{
|
{
|
||||||
uint currentId = Convert.ToUInt32(ident.Text);
|
/// <summary>
|
||||||
|
/// Obtient le gestionnaire de l'application à partir de l'instance de l'application.
|
||||||
if (string.IsNullOrWhiteSpace(ident.Text))
|
/// </summary>
|
||||||
{
|
public Manager Mgr => (App.Current as App).MyManager;
|
||||||
await DisplayAlert("Erreur", "Il faut rentrer un ID", "OK");
|
|
||||||
return;
|
/// <summary>
|
||||||
}
|
/// Initialise une nouvelle instance de la classe ConsultantIdPage.
|
||||||
|
/// </summary>
|
||||||
if (currentId == 0)
|
public ConsultantIdPage()
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Ce compte est innaccessible", "OK");
|
InitializeComponent();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Customer customer = Mgr.CustomersList.FirstOrDefault(u => u.Id == currentId);
|
/// <summary>
|
||||||
if (customer == null)
|
/// Gère l'événement du bouton de connexion.
|
||||||
|
/// </summary>
|
||||||
|
public async void Connection_Clicked(Object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "L'id entré est incorrect ou n'existe pas.", "OK");
|
// Récupération de l'ID entré
|
||||||
return;
|
uint currentId = Convert.ToUInt32(ident.Text);
|
||||||
|
|
||||||
|
// Validation de l'ID
|
||||||
|
if (string.IsNullOrWhiteSpace(ident.Text))
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Il faut rentrer un ID", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentId == 0)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Ce compte est inaccessible", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recherche du client correspondant à l'ID
|
||||||
|
Customer customer = Mgr.CustomersList.FirstOrDefault(u => u.Id == currentId);
|
||||||
|
if (customer == null)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "L'ID entré est incorrect ou n'existe pas.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sélection du client dans le gestionnaire
|
||||||
|
Mgr.SelectedCustomer = customer;
|
||||||
|
|
||||||
|
Debug.WriteLine(Mgr.IsConsultant);
|
||||||
|
|
||||||
|
// Navigation vers la page de sélection du compte
|
||||||
|
await Navigation.PushModalAsync(new SwitchAccountPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
Mgr.SelectedCustomer = customer;
|
|
||||||
|
|
||||||
Debug.WriteLine(Mgr.IsConsultant);
|
|
||||||
|
|
||||||
|
|
||||||
await Navigation.PushModalAsync(new SwitchAccountPage());
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
@ -1,62 +1,84 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using Banquale.Views.Balance;
|
using Banquale.Views.Balance;
|
||||||
using Model;
|
using Model;
|
||||||
|
|
||||||
namespace Banquale.Views;
|
namespace Banquale.Views
|
||||||
|
|
||||||
public partial class SwitchAccountPage : ContentPage
|
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Page permettant de basculer entre les comptes.
|
||||||
|
/// </summary>
|
||||||
|
public partial class SwitchAccountPage : ContentPage
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Obtient le gestionnaire de l'application à partir de l'instance de l'application (Manager Mgr).
|
||||||
|
/// </summary>
|
||||||
|
public Manager Mgr => (App.Current as App).MyManager;
|
||||||
|
|
||||||
public Manager Mgr => (App.Current as App).MyManager;
|
/// <summary>
|
||||||
public SwitchAccountPage()
|
/// Initialise une nouvelle instance de la classe SwitchAccountPage.
|
||||||
{
|
/// </summary>
|
||||||
InitializeComponent();
|
public SwitchAccountPage()
|
||||||
BindingContext = Mgr.SelectedCustomer;
|
{
|
||||||
}
|
InitializeComponent();
|
||||||
|
|
||||||
protected override void OnAppearing()
|
|
||||||
{
|
|
||||||
base.OnAppearing();
|
|
||||||
|
|
||||||
RefreshData();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async void Transfer_Clicked(object sender, EventArgs e)
|
// Lie le contexte de liaison au client sélectionné dans le Manager
|
||||||
{
|
BindingContext = Mgr.SelectedCustomer;
|
||||||
var selectedItem = (sender as Button)?.BindingContext as Account;
|
|
||||||
|
|
||||||
if (selectedItem != null)
|
|
||||||
{
|
|
||||||
Mgr.SelectedAccount = selectedItem;
|
|
||||||
if (Mgr.IsConsultant == true)
|
|
||||||
{
|
|
||||||
await Shell.Current.Navigation.PushAsync(new Balance.BalancePage());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
await Shell.Current.GoToAsync("//balance");
|
|
||||||
var balancePage = Shell.Current.CurrentPage as BalancePage;
|
|
||||||
balancePage?.RefreshPage();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async void DisconnectionClicked(object sender, EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Méthode appelée lorsque la page apparaît.
|
||||||
if(Mgr.IsConsultant == true)
|
/// </summary>
|
||||||
|
protected override void OnAppearing()
|
||||||
{
|
{
|
||||||
await Shell.Current.Navigation.PopAsync();
|
base.OnAppearing();
|
||||||
|
|
||||||
|
RefreshData();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gère l'événement du bouton de transfert.
|
||||||
|
/// </summary>
|
||||||
|
public async void Transfer_Clicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
await Shell.Current.GoToAsync("///connection");
|
var selectedItem = (sender as Button)?.BindingContext as Account;
|
||||||
|
|
||||||
|
if (selectedItem != null)
|
||||||
|
{
|
||||||
|
Mgr.SelectedAccount = selectedItem;
|
||||||
|
if (Mgr.IsConsultant)
|
||||||
|
{
|
||||||
|
await Shell.Current.Navigation.PushAsync(new Balance.BalancePage());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await Shell.Current.GoToAsync("//balance");
|
||||||
|
var balancePage = Shell.Current.CurrentPage as BalancePage;
|
||||||
|
balancePage?.RefreshPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gère l'événement du bouton de déconnexion.
|
||||||
|
/// </summary>
|
||||||
|
async void DisconnectionClicked(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (Mgr.IsConsultant)
|
||||||
|
{
|
||||||
|
await Shell.Current.Navigation.PopAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await Shell.Current.GoToAsync("///connection");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void RefreshData()
|
/// <summary>
|
||||||
{
|
/// Rafraîchit les données de la page.
|
||||||
BindingContext = Mgr.SelectedCustomer;
|
/// </summary>
|
||||||
|
private void RefreshData()
|
||||||
|
{
|
||||||
|
BindingContext = Mgr.SelectedCustomer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,82 +1,104 @@
|
|||||||
using Model;
|
using Model;
|
||||||
using Banquale.Views.Category;
|
using Banquale.Views.Category;
|
||||||
namespace Banquale.Views;
|
|
||||||
|
|
||||||
public partial class TransactionsPage : ContentPage
|
namespace Banquale.Views
|
||||||
{
|
{
|
||||||
public Manager Mgr => (App.Current as App).MyManager;
|
/// <summary>
|
||||||
|
/// Page affichant le détail d'une transaction.
|
||||||
public TransactionsPage()
|
/// </summary>
|
||||||
{
|
public partial class TransactionsPage : ContentPage
|
||||||
InitializeComponent();
|
{
|
||||||
BindingContext = Mgr.SelectedTransaction;
|
/// <summary>
|
||||||
|
/// Obtient le gestionnaire de l'application à partir de l'instance de l'application (Manager Mgr).
|
||||||
|
/// </summary>
|
||||||
|
public Manager Mgr => (App.Current as App).MyManager;
|
||||||
|
|
||||||
if(Mgr.IsConsultant == true && Mgr.SelectedTransaction.IsOpposition == false)
|
/// <summary>
|
||||||
{
|
/// Initialise une nouvelle instance de la classe TransactionsPage.
|
||||||
oppose.Text = "Aucune demande en cours";
|
/// </summary>
|
||||||
}
|
public TransactionsPage()
|
||||||
else if(Mgr.IsConsultant == true && Mgr.SelectedTransaction.IsOpposition == true)
|
|
||||||
{
|
{
|
||||||
oppose.Text = "Accepter l'opposition";
|
InitializeComponent();
|
||||||
refuseOpposition.IsVisible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Mgr.IsConsultant == false && Mgr.SelectedTransaction.IsOpposition == true)
|
|
||||||
{
|
|
||||||
oppose.Text = "Demande en cours";
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Mgr.SelectedTransaction.Type == true)
|
// Lie le contexte de liaison aux transactions sélectionnées dans le gestionnaire
|
||||||
{
|
BindingContext = Mgr.SelectedTransaction;
|
||||||
string price1 = sum.Text;
|
|
||||||
sum.Text = "- " + price1;
|
|
||||||
sum.TextColor = Colors.Red;
|
|
||||||
}
|
|
||||||
else if(Mgr.SelectedTransaction.Type == false)
|
|
||||||
{
|
|
||||||
string price2 = sum.Text;
|
|
||||||
sum.Text = "+ " + price2;
|
|
||||||
sum.TextColor = Colors.Green;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async void Categ_Clicked(System.Object sender, System.EventArgs e)
|
// Configure l'affichage en fonction des conditions
|
||||||
{
|
if (Mgr.IsConsultant && !Mgr.SelectedTransaction.IsOpposition)
|
||||||
await Shell.Current.Navigation.PushAsync(new CategoryPage());
|
{
|
||||||
}
|
oppose.Text = "Aucune demande en cours";
|
||||||
|
}
|
||||||
|
else if (Mgr.IsConsultant && Mgr.SelectedTransaction.IsOpposition)
|
||||||
|
{
|
||||||
|
oppose.Text = "Accepter l'opposition";
|
||||||
|
refuseOpposition.IsVisible = true;
|
||||||
|
}
|
||||||
|
|
||||||
async void Objection_Clicked(System.Object sender, System.EventArgs e)
|
if (!Mgr.IsConsultant && Mgr.SelectedTransaction.IsOpposition)
|
||||||
{
|
{
|
||||||
if(Mgr.IsConsultant == false && Mgr.SelectedTransaction.IsOpposition == false)
|
oppose.Text = "Demande en cours";
|
||||||
{
|
}
|
||||||
Mgr.SelectedTransaction.IsOpposition = true;
|
|
||||||
await DisplayAlert("Opposition", "Votre demande d'opposition à bien été pris en compte", "OK");
|
if (Mgr.SelectedTransaction.Type)
|
||||||
await Shell.Current.Navigation.PopAsync();
|
{
|
||||||
|
string price1 = sum.Text;
|
||||||
|
sum.Text = "- " + price1;
|
||||||
|
sum.TextColor = Colors.Red;
|
||||||
|
}
|
||||||
|
else if (!Mgr.SelectedTransaction.Type)
|
||||||
|
{
|
||||||
|
string price2 = sum.Text;
|
||||||
|
sum.Text = "+ " + price2;
|
||||||
|
sum.TextColor = Colors.Green;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(Mgr.IsConsultant == true && Mgr.SelectedTransaction.IsOpposition == true)
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gère l'événement du bouton de la catégorie.
|
||||||
|
/// </summary>
|
||||||
|
async void Categ_Clicked(System.Object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
Mgr.SelectedAccount.TransactionsList.Remove(Mgr.SelectedTransaction);
|
await Shell.Current.Navigation.PushAsync(new CategoryPage());
|
||||||
await DisplayAlert("Opposition", "La demande d'opposition à été réalisé avec succé", "OK");
|
|
||||||
await Shell.Current.Navigation.PopAsync();
|
|
||||||
}
|
}
|
||||||
else if (Mgr.IsConsultant == true && Mgr.SelectedTransaction.IsOpposition == false)
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gère l'événement du bouton d'opposition.
|
||||||
|
/// </summary>
|
||||||
|
async void Objection_Clicked(System.Object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Aucune demande d'opposition est en cours sur cette transaction", "OK");
|
if (!Mgr.IsConsultant && !Mgr.SelectedTransaction.IsOpposition)
|
||||||
await Shell.Current.Navigation.PopAsync();
|
{
|
||||||
|
Mgr.SelectedTransaction.IsOpposition = true;
|
||||||
|
await DisplayAlert("Opposition", "Votre demande d'opposition a bien été prise en compte", "OK");
|
||||||
|
await Shell.Current.Navigation.PopAsync();
|
||||||
|
}
|
||||||
|
else if (Mgr.IsConsultant && Mgr.SelectedTransaction.IsOpposition)
|
||||||
|
{
|
||||||
|
Mgr.SelectedAccount.TransactionsList.Remove(Mgr.SelectedTransaction);
|
||||||
|
await DisplayAlert("Opposition", "La demande d'opposition a été réalisée avec succès", "OK");
|
||||||
|
await Shell.Current.Navigation.PopAsync();
|
||||||
|
}
|
||||||
|
else if (Mgr.IsConsultant && !Mgr.SelectedTransaction.IsOpposition)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Aucune demande d'opposition en cours pour cette transaction", "OK");
|
||||||
|
await Shell.Current.Navigation.PopAsync();
|
||||||
|
}
|
||||||
|
else if (!Mgr.IsConsultant && Mgr.SelectedTransaction.IsOpposition)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Opposition", "Votre demande est en cours. Veuillez patienter SVP.", "OK");
|
||||||
|
await Shell.Current.Navigation.PopAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (Mgr.IsConsultant == false && Mgr.SelectedTransaction.IsOpposition == true)
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gère l'événement du bouton de refus d'opposition du coté du consultant.
|
||||||
|
/// </summary>
|
||||||
|
async void Refuse_Clicked(System.Object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
await DisplayAlert("Opposition", "Votre demande est en cours. Veuillez patienter SVP.", "OK");
|
Mgr.SelectedTransaction.IsOpposition = false;
|
||||||
|
await DisplayAlert("Opposition", "La demande d'opposition a bien été refusée", "OK");
|
||||||
|
refuseOpposition.IsVisible = false;
|
||||||
await Shell.Current.Navigation.PopAsync();
|
await Shell.Current.Navigation.PopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async void Refuse_Clicked(System.Object sender, System.EventArgs e)
|
|
||||||
{
|
|
||||||
Mgr.SelectedTransaction.IsOpposition = false;
|
|
||||||
await DisplayAlert("Opposition", "La demande d'opposition à bien été refusé", "OK");
|
|
||||||
refuseOpposition.IsVisible = false;
|
|
||||||
await Shell.Current.Navigation.PopAsync();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,61 +1,74 @@
|
|||||||
using Model;
|
using Model;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
namespace Banquale.Views.Transfer;
|
|
||||||
|
|
||||||
public partial class TransferPage : ContentPage
|
namespace Banquale.Views.Transfer
|
||||||
{
|
{
|
||||||
public Manager Mgr => (App.Current as App).MyManager;
|
/// <summary>
|
||||||
|
/// Page de transfert d'argent.
|
||||||
public TransferPage()
|
/// </summary>
|
||||||
{
|
public partial class TransferPage : ContentPage
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async void Send_Clicked(Object sender, EventArgs e)
|
|
||||||
{
|
{
|
||||||
|
public Manager Mgr => (App.Current as App).MyManager;
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(Name.Text) || string.IsNullOrEmpty(IBAN.Text) || string.IsNullOrEmpty(Sum.Text))
|
/// <summary>
|
||||||
|
/// Initialise une nouvelle instance de la classe TransferPage.
|
||||||
|
/// </summary>
|
||||||
|
public TransferPage()
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Tout les champs doivent être complétés", "OK");
|
InitializeComponent();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else if (IBAN.Text.Length != 27)
|
|
||||||
{
|
/// <summary>
|
||||||
await DisplayAlert("Erreur", "L'IBAN doit contenir exactement 25 chiffres.", "OK");
|
/// Gère l'événement du bouton d'envoi de transfert.
|
||||||
}
|
/// </summary>
|
||||||
if(Name.Text == Mgr.SelectedAccount.Name && IBAN.Text == Mgr.SelectedAccount.IBAN)
|
public async void Send_Clicked(Object sender, EventArgs e)
|
||||||
{
|
|
||||||
await DisplayAlert("Erreur", "Vous ne pouvez vous faire de virement à vous même", "OK");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
foreach (var cust in Mgr.CustomersList)
|
|
||||||
{
|
{
|
||||||
foreach (var acc in cust.AccountsList)
|
if (string.IsNullOrEmpty(Name.Text) || string.IsNullOrEmpty(IBAN.Text) || string.IsNullOrEmpty(Sum.Text))
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Tous les champs doivent être complétés", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (IBAN.Text.Length != 27)
|
||||||
{
|
{
|
||||||
if(acc.Name == Name.Text && acc.IBAN == IBAN.Text)
|
await DisplayAlert("Erreur", "L'IBAN doit contenir exactement 25 chiffres.", "OK");
|
||||||
|
}
|
||||||
|
if (Name.Text == Mgr.SelectedAccount.Name && IBAN.Text == Mgr.SelectedAccount.IBAN)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Vous ne pouvez pas vous faire un virement à vous-même", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (var cust in Mgr.CustomersList)
|
||||||
|
{
|
||||||
|
foreach (var acc in cust.AccountsList)
|
||||||
{
|
{
|
||||||
if(Mgr.SelectedAccount.Balance - Convert.ToDouble(Sum.Text) < 0)
|
if (acc.Name == Name.Text && acc.IBAN == IBAN.Text)
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Vous ne possèdez pas assez d'argent sur ce compte pour aboutir à la transaction", "OK");
|
if (Mgr.SelectedAccount.Balance - Convert.ToDouble(Sum.Text) < 0)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Vous ne possédez pas suffisamment d'argent sur ce compte pour effectuer la transaction", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Mgr.SelectedAccount.DoTransactions(acc, Convert.ToDouble(Sum.Text), true); // Type true car c'est un virement
|
||||||
|
Mgr.Persistence.DataSave(Mgr.CustomersList, Mgr.Consultant);
|
||||||
|
await Shell.Current.Navigation.PopAsync();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Mgr.SelectedAccount.DoTransactions(acc, Convert.ToDouble(Sum.Text), true); // Type true car c'est un virement
|
|
||||||
Mgr.Persistence.DataSave(Mgr.CustomersList, Mgr.Consultant);
|
|
||||||
await Shell.Current.Navigation.PopAsync();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
await DisplayAlert("Erreur", "Le compte n'existe pas", "OK");
|
||||||
}
|
}
|
||||||
await DisplayAlert("Erreur", "Le compte n'existe pas", "OK");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void IbanChanged(object sender, EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Gère l'événement du changement de l'IBAN.
|
||||||
if (IBAN.Text.Length < 2)
|
/// </summary>
|
||||||
|
public void IbanChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
DisplayAlert("Erreur", "Vous ne pouvez pas effacer le FR !", "OK");
|
if (IBAN.Text.Length < 2)
|
||||||
var cast = ((Entry)sender);
|
{
|
||||||
cast.Text = "FR";
|
DisplayAlert("Erreur", "Vous ne pouvez pas effacer le FR !", "OK");
|
||||||
|
var cast = ((Entry)sender);
|
||||||
|
cast.Text = "FR";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue