Merge pull request 'ManagerRefactoring' (#139) from ManagerRefactoring into master
continuous-integration/drone/push Build is failing Details

Reviewed-on: #139
PatchDeserialisation
Hugo LIVET 2 years ago
commit 12651ea426

@ -12,7 +12,7 @@ using static System.Net.Mime.MediaTypeNames;
namespace Data
{
public class LoadOperation
public static class LoadOperation
{
public static IList<Compte> LoadOperationsFromOFX(string ofx)
{
@ -112,7 +112,7 @@ namespace Data
}
public static string[] CutRow(string row)
private static string[] CutRow(string row)
{
string[] cutRow;
if (row == null) throw new ArgumentNullException();

@ -13,121 +13,127 @@ namespace Data
// /!\ et ne doit en aucun cas manipuler la mémoire !
//actions sur les inscrits
public bool AjouterInscrit(Inscrit inscrit)
public async Task<bool> AjouterInscrit(Inscrit inscrit)
{
return ClientAPI.PostAddInscritAsync(inscrit.Nom, inscrit.Prenom, inscrit.Mail, inscrit.Mdp).GetAwaiter().GetResult();
return await ClientAPI.PostAddInscritAsync(inscrit.Nom, inscrit.Prenom, inscrit.Mail, inscrit.Mdp);
}
public bool SupprimerInscrit(Inscrit inscrit)
public async Task<bool> SupprimerInscrit(Inscrit inscrit)
{
return ClientAPI.DeleteInscritAsync(inscrit.Mail).GetAwaiter().GetResult();
return await ClientAPI.DeleteInscritAsync(inscrit.Mail);
}
public bool ModifierMdpInscrit(string mail, string nouveauMdp)
public async Task<bool> ModifierMdpInscrit(string mail, string nouveauMdp)
{
return ClientAPI.PutPasswordInscritAsync(mail,nouveauMdp).GetAwaiter().GetResult();
return await ClientAPI.PutPasswordInscritAsync(mail, nouveauMdp);
}
public Inscrit RecupererInscrit(string mail)
public async Task<Inscrit> RecupererInscrit(string mail)
{
List<Inscrit> inscrits = ClientAPI.GetInscritAsync(mail).GetAwaiter().GetResult();
if(inscrits.Count >= 1)
List<Inscrit> inscrits = await ClientAPI.GetInscritAsync(mail);
if (inscrits.Count == 1)
{
throw new ArgumentException("Cet email contient plusieurs utilisateurs pour la même adresse");
return inscrits.First();
}
return inscrits.FirstOrDefault();
throw new ArgumentException("Cet email a un problème");
}
public bool EmailDisponible(string mail)
public async Task<bool> EmailDisponible(string mail)
{
List<Inscrit> inscrits = ClientAPI.GetInscritAsync(mail).GetAwaiter().GetResult();
List<Inscrit> inscrits = await ClientAPI.GetInscritAsync(mail);
if (inscrits.Count >= 1)
{
return false;
return true;
}
return true;
return false;
}
//actions sur les banques
public bool AjouterBanque(Banque banque, Inscrit inscrit)
public async Task<bool> AjouterBanque(Banque banque, Inscrit inscrit)
{
return ClientAPI.PostAddBanqueInscritAsync(banque.Nom, inscrit.Id.ToString()).GetAwaiter().GetResult();
return await ClientAPI.PostAddBanqueInscritAsync(banque.Nom, inscrit.Id.ToString());
}
public bool SupprimerBanque(Banque banque, Inscrit inscrit)
public async Task<bool> SupprimerBanque(Banque banque, Inscrit inscrit)
{
return ClientAPI.DeleteBanqueInscritAsync(banque.Nom, inscrit.Id.ToString()).GetAwaiter().GetResult();
return await ClientAPI.DeleteBanqueInscritAsync(banque.Nom, inscrit.Id.ToString());
}
public IList<Banque> RecupererBanques(Inscrit inscrit)
public async Task<IList<Banque>> RecupererBanques(Inscrit inscrit)
{
return ClientAPI.GetBanqueAsync(inscrit.Id.ToString()).GetAwaiter().GetResult();
return await ClientAPI.GetBanqueAsync(inscrit.Id.ToString());
}
public IList<Banque> RecupererBanquesDisponible()
public async Task<IList<Banque>> RecupererBanquesDisponible()
{
return ClientAPI.GetBanquesAsync().GetAwaiter().GetResult();
return await ClientAPI.GetBanquesAsync();
}
//actions sur les comptes
public bool AjouterCompte(Compte compte, Inscrit inscrit)
public async Task<bool> AjouterCompte(Compte compte, Inscrit inscrit)
{
return ClientAPI.PostAddCompteInscritAsync(compte.Nom, inscrit.Id.ToString()).GetAwaiter().GetResult();
return await ClientAPI.PostAddCompteInscritAsync(compte.Nom, inscrit.Id.ToString());
}
public bool SupprimerCompte(Compte compte, Inscrit inscrit)
public async Task<bool> SupprimerCompte(Compte compte, Inscrit inscrit)
{
return ClientAPI.DeleteCompteInscritAsync(compte.Nom, inscrit.Id.ToString()).GetAwaiter().GetResult();
return await ClientAPI.DeleteCompteInscritAsync(compte.Nom, inscrit.Id.ToString());
}
public IList<Compte> RecupererCompte(Banque banque, Inscrit inscrit)
public async Task<IList<Compte>> RecupererCompte(Banque banque, Inscrit inscrit)
{
return ClientAPI.GetCompteAsync(inscrit.Id.ToString()).GetAwaiter().GetResult();
return await ClientAPI.GetCompteAsync(inscrit.Id.ToString());
}
//actions sur les Opérations
public bool AjouterOperation(Compte compte, Operation operation)
public async Task<bool> AjouterOperation(Compte compte, Operation operation)
{
return ClientAPI.PostAddOperationInscritAsync(compte,operation).GetAwaiter().GetResult();
return await ClientAPI.PostAddOperationInscritAsync(compte, operation);
}
public bool SupprimerOperation(Compte compte, Operation operation)
public async Task<bool> SupprimerOperation(Compte compte, Operation operation)
{
return ClientAPI.DeleteOperationInscritAsync(compte.Identifiant, operation.IntituleOperation).GetAwaiter().GetResult();
return await ClientAPI.DeleteOperationInscritAsync(compte.Identifiant, operation.IntituleOperation);
}
public IList<Operation> RecupererOperation(Compte compte)
public async Task<IList<Operation>> RecupererOperation(Compte compte)
{
return ClientAPI.GetOperationAsync(compte.Identifiant).GetAwaiter().GetResult();
return await ClientAPI.GetOperationAsync(compte.Identifiant);
}
//actions sur les Planifications
public bool AjouterPlanification(Compte compte, Planification planification)
public async Task<bool> AjouterPlanification(Compte compte, Planification planification)
{
return ClientAPI.PostAddPlanificationInscritAsync(compte, planification).GetAwaiter().GetResult();
return await ClientAPI.PostAddPlanificationInscritAsync(compte, planification);
}
public bool SupprimerPlanification(Compte compte, Planification planification)
public async Task<bool> SupprimerPlanification(Compte compte, Planification planification)
{
return ClientAPI.DeletePlanificationInscritAsync(compte.Identifiant, planification.IntituleOperation).GetAwaiter().GetResult();
return await ClientAPI.DeletePlanificationInscritAsync(compte.Identifiant, planification.IntituleOperation);
}
public IList<Planification> RecupererPlanification(Compte compte)
public async Task<IList<Planification>> RecupererPlanification(Compte compte)
{
return ClientAPI.GetPlanificationAsync(compte.Identifiant).GetAwaiter().GetResult();
return await ClientAPI.GetPlanificationAsync(compte.Identifiant);
}
//actions sur les Echéances
public bool AjouterEcheance(Compte compte, Echeance echeance)
public async Task<bool> AjouterEcheance(Compte compte, Echeance echeance)
{
return ClientAPI.PostAddEcheanceInscritAsync(compte, echeance).GetAwaiter().GetResult();
return await ClientAPI.PostAddEcheanceInscritAsync(compte, echeance);
}
public bool SupprimerEcheance(Compte compte, Echeance echeance)
public async Task<bool> SupprimerEcheance(Compte compte, Echeance echeance)
{
return ClientAPI.DeleteEcheanceInscritAsync(compte.Identifiant, echeance.IntituleOperation).GetAwaiter().GetResult();
return await ClientAPI.DeleteEcheanceInscritAsync(compte.Identifiant, echeance.IntituleOperation);
}
public IList<Echeance> RecupererEcheance(Compte compte)
public async Task<IList<Echeance>> RecupererEcheance(Compte compte)
{
return ClientAPI.GetEcheanceAsync(compte.Identifiant).GetAwaiter().GetResult();
return await ClientAPI.GetEcheanceAsync(compte.Identifiant);
}
//actions utilitaire
public bool TestConnexion()
public async Task<bool> TestConnexion()
{
return await ClientAPI.GetStateApi();
}
public IList<Compte> GetDataFromOFX(string path)
{
return ClientAPI.GetStateApi().GetAwaiter().GetResult();
return LoadOperation.LoadOperationsFromOFX(path);
}
}
}

@ -19,7 +19,6 @@ namespace LinqToPgSQL
{
public class PersLinqToPgSQL /*: IPersistanceManager*/
{
private Hash hash = new Hash();
private static string connexionBDD = String.Format("Server=2.3.8.130; Username=postgres; Database=conseco; Port=5432; Password=lulu; SSLMode=Prefer");
private static NpgsqlConnection dbAccess = new NpgsqlConnection(connexionBDD);
@ -100,8 +99,7 @@ namespace LinqToPgSQL
public async void ChangePasswordBdd(string mail, string newMdp)
{
Hash hash = new Hash();
string hashedMdp = hash.CreateHashCode(newMdp);
string hashedMdp = Hash.CreateHashCode(newMdp);
var conn = new NpgsqlConnection(connexionBDD);
Console.Out.WriteLine("Ouverture de la connection");
try
@ -151,7 +149,7 @@ namespace LinqToPgSQL
public async void CreateInscrit(Inscrit inscrit)
{
string mdpHash = hash.CreateHashCode(inscrit.Mdp);
string mdpHash = Hash.CreateHashCode(inscrit.Mdp);
Console.WriteLine("AAAAAA"+mdpHash.Length);
var conn = new NpgsqlConnection(connexionBDD);
conn.Open();

@ -2,9 +2,9 @@
namespace Data
{
public class PersStub /*: IPersistanceManager*/
public class PersStub : IPersistanceManager
{
private List<Inscrit> lesInscrits = new List<Inscrit>();
/*private List<Inscrit> lesInscrits = new List<Inscrit>();
public PersStub()
{
@ -63,10 +63,7 @@ namespace Data
public void CreateInscrit(Inscrit inscrit){
lesInscrits.Add(inscrit);
}
/*public string LastInscrit()
{
return lesInscrits[lesInscrits.Count - 1].Id;
}*/
public bool ExistEmail(string mail)
{
foreach(Inscrit i in lesInscrits)
@ -90,12 +87,11 @@ namespace Data
}
public string RecupMdpBdd(string mail)
{
Hash hash = new Hash();
foreach(Inscrit i in lesInscrits)
{
if(i.Mail == mail)
{
return hash.CreateHashCode(i.Mdp);
return Hash.CreateHashCode(i.Mdp);
}
}
return "inexistant";
@ -157,6 +153,120 @@ namespace Data
public List<Banque> LoadBanqueId(int id)
{
throw new NotImplementedException();
}*/
public Task<bool> AjouterBanque(Banque banque, Inscrit inscrit)
{
throw new NotImplementedException();
}
public Task<bool> AjouterCompte(Compte compte, Inscrit inscrit)
{
throw new NotImplementedException();
}
public Task<bool> AjouterEcheance(Compte compte, Echeance echeance)
{
throw new NotImplementedException();
}
public Task<bool> AjouterInscrit(Inscrit inscrit)
{
throw new NotImplementedException();
}
public Task<bool> AjouterOperation(Compte compte, Operation operation)
{
throw new NotImplementedException();
}
public Task<bool> AjouterPlanification(Compte compte, Planification planification)
{
throw new NotImplementedException();
}
public Task<bool> EmailDisponible(string mail)
{
throw new NotImplementedException();
}
public IList<Compte> GetDataFromOFX(string path)
{
throw new NotImplementedException();
}
public Task<bool> ModifierMdpInscrit(string mail, string nouveauMdp)
{
throw new NotImplementedException();
}
public Task<IList<Banque>> RecupererBanques(Inscrit inscrit)
{
throw new NotImplementedException();
}
public Task<IList<Banque>> RecupererBanquesDisponible()
{
throw new NotImplementedException();
}
public Task<IList<Compte>> RecupererCompte(Banque banque, Inscrit inscrit)
{
throw new NotImplementedException();
}
public Task<IList<Echeance>> RecupererEcheance(Compte compte)
{
throw new NotImplementedException();
}
public Task<Inscrit> RecupererInscrit(string mail)
{
throw new NotImplementedException();
}
public Task<IList<Operation>> RecupererOperation(Compte compte)
{
throw new NotImplementedException();
}
public Task<IList<Planification>> RecupererPlanification(Compte compte)
{
throw new NotImplementedException();
}
public Task<bool> SupprimerBanque(Banque banque, Inscrit inscrit)
{
throw new NotImplementedException();
}
public Task<bool> SupprimerCompte(Compte compte, Inscrit inscrit)
{
throw new NotImplementedException();
}
public Task<bool> SupprimerEcheance(Compte compte, Echeance echeance)
{
throw new NotImplementedException();
}
public Task<bool> SupprimerInscrit(Inscrit inscrit)
{
throw new NotImplementedException();
}
public Task<bool> SupprimerOperation(Compte compte, Operation operation)
{
throw new NotImplementedException();
}
public Task<bool> SupprimerPlanification(Compte compte, Planification planification)
{
throw new NotImplementedException();
}
public Task<bool> TestConnexion()
{
throw new NotImplementedException();
}
@ -164,4 +274,3 @@ namespace Data
}

@ -21,7 +21,7 @@ CREATE TABLE Inscrit
nom varchar(40),
prenom varchar(40),
mail varchar(40) UNIQUE,
mdp varchar(40)
mdp varchar(200)
);
CREATE TABLE DeviseInscrit

@ -169,4 +169,6 @@
</MauiXaml>
</ItemGroup>
<ProjectExtensions><VisualStudio><UserProperties XamarinHotReloadDebuggerTimeoutExceptionIHMHideInfoBar="True" /></VisualStudio></ProjectExtensions>
</Project>

@ -66,7 +66,8 @@
<ImageButton Grid.Column="2" Source="add_new_banks.png"
Padding="10" Margin="5"
CornerRadius="10" HeightRequest="65"
BackgroundColor="{StaticResource Primary}"/>
BackgroundColor="{StaticResource Primary}"
Clicked="AddBanque_Clicked"/>
</Grid>

@ -11,7 +11,7 @@ public partial class AjoutBanques : ContentPage
{
InitializeComponent();
BindingContext = Mgr;
//Mgr.importBanques();
Mgr.LoadBanques();
if (OperatingSystem.IsIOS())
{
boutonRetour.IsVisible = true;
@ -29,12 +29,16 @@ public partial class AjoutBanques : ContentPage
{
if (result.FileName.EndsWith("ofx", StringComparison.OrdinalIgnoreCase))
{
//IList<Compte> lesComptes = Mgr.getCompteFromOFX(result.FullPath);
/*Debug.WriteLine(lesComptes.Count);
IList<Compte> lesComptes = Mgr.Pers.GetDataFromOFX(result.FullPath);
Debug.WriteLine(lesComptes.Count);
foreach(Compte compte in lesComptes)
{
Mgr.User.LesBanques.First().AjouterCompte(compte);
}*/
if(Mgr.User.LesBanques.Count != 0)
{
Mgr.User.LesBanques.First().AjouterCompte(compte);
}
}
}
}
@ -54,5 +58,21 @@ public partial class AjoutBanques : ContentPage
{
await Navigation.PopModalAsync();
}
private async void AddBanque_Clicked(object sender, EventArgs e)
{
ImageButton imageButton = (ImageButton)sender;
Grid grid = (Grid)imageButton.Parent;
foreach(IView iw in grid.Children)
{
if (iw.GetType() == typeof(Label))
{
await Mgr.Pers.AjouterBanque((Banque)(iw as Label).BindingContext, Mgr.User);
}
}
Mgr.User.LesBanques = await Mgr.Pers.RecupererBanques(Mgr.User);
await Navigation.PopModalAsync();
}
}

@ -25,7 +25,7 @@ public partial class ChangePassword : ContentPage
}
else
{
//Mgr.changePasswordBdd(MailUser, EntryNewMdp.Text);
Mgr.Pers.ModifierMdpInscrit(MailUser, EntryNewMdp.Text);
AffichError("mdp changé", "mot de passe bien changé", "ok");
NavigateTo("../..");
}

@ -1,4 +1,5 @@
using Model;
using System.Diagnostics;
namespace IHM.Mobile;
@ -17,10 +18,10 @@ public partial class DashBoard : ContentPage
}
/* if (!Mgr.testConnexionAsDatabase())
/*if (!Mgr.Pers.TestConnexion())
{
loadPage(new ErrorPage());
Debug.WriteLine("cc");
}*/
}

@ -20,12 +20,12 @@ public partial class ErrorPage : ContentPage
return true;
}
public void conIsActive()
public async void conIsActive()
{
/*while (!Mgr.testConnexionAsDatabase())
while (!await Mgr.Pers.TestConnexion())
{
Thread.Sleep(TIME_TEST_DB);
}*/
}
ConnexionValide();
return;

@ -14,13 +14,14 @@ public partial class ForgetPassword : ContentPage
{
InitializeComponent();
}
public void SearchEmail(object sender, EventArgs e)
public async void SearchEmail(object sender, EventArgs e)
{
if (EntryMail.Text == null)
{
AffichError("Email inconnue", "Aucun compte existant portant cette adresse mail", "OK");
}
/*if (Mgr.existEmail(EntryMail.Text)){
if (await Mgr.Pers.EmailDisponible(EntryMail.Text))
{
Random generator = new Random();
code = generator.Next(0, 1000000).ToString("D6");
Email.CreateMail(EntryMail.Text, code);
@ -31,7 +32,7 @@ public partial class ForgetPassword : ContentPage
else
{
AffichError("Mail inexistant", "Aucun compte possédant cette adresse email trouvé", "OK");
}*/
}
}
private async void AffichError(string s, string s1, string s2)
{

@ -11,7 +11,7 @@ public partial class GestionBanques : ContentPage
{
InitializeComponent();
BindingContext= Mgr;
//Mgr.LoadBanques();
Mgr.LoadBanques();
if (OperatingSystem.IsIOS())
{
boutonRetour.IsVisible = true;

@ -11,7 +11,7 @@ public partial class Inscription : ContentPage
{
InitializeComponent();
}
public void InscriptionOnClicked(object sender, EventArgs e)
public async void InscriptionOnClicked(object sender, EventArgs e)
{
if (EntryNewName.Text == null || EntryNewMail.Text == null || EntryConfirmationPassword.Text == null || EntryNewPassword.Text == null ||
EntryNewSurname.Text == null)
@ -20,8 +20,8 @@ public partial class Inscription : ContentPage
}
else
{
/*if(EntryNewPassword.Text.Equals(EntryConfirmationPassword.Text)) {
if (Mgr.existEmail(EntryNewMail.Text))
if(EntryNewPassword.Text.Equals(EntryConfirmationPassword.Text)) {
if (await Mgr.Pers.EmailDisponible(EntryNewMail.Text))
{
AffichError("Mail existant", "un compte porte déjà cette adresse mail, veuillez en changer", "OK");
}
@ -43,15 +43,16 @@ public partial class Inscription : ContentPage
else
{
AffichError("Mot de passe de confirmation invalide", "Veuillez mettre deux mots de passe identiques", "OK");
}*/
}
}
}
private void ValideCode(object sender, EventArgs e)
{
if (EntryCodeRecept.Text == code)
{
//Inscrit inscrit = new Inscrit(Mgr.lastInscrit() + 1, EntryNewName.Text, EntryNewMail.Text, EntryNewSurname.Text, EntryNewPassword.Text);
//Mgr.createInscrit(inscrit);
string hashedPassword = Hash.CreateHashCode(EntryNewPassword.Text);
Inscrit inscrit = new Inscrit(1, EntryNewName.Text, EntryNewMail.Text, EntryNewSurname.Text, hashedPassword);
Mgr.Pers.AjouterInscrit(inscrit);
AffichError("compte créé", "Compte bien créé", "OK");
NavigateTo("..");
}

@ -18,7 +18,7 @@
<Image Source="{AppThemeBinding Light=logo_sans_fond_black.png, Dark=logo_sans_fond.png}"
HorizontalOptions="Center" HeightRequest="200"/>
<Border StrokeShape="RoundRectangle 20" BackgroundColor="White" Padding="7">
<Entry BackgroundColor="{StaticResource White}"
TextColor="{StaticResource Black}"
@ -36,26 +36,26 @@
Placeholder="Mot de passe"
IsPassword="True"
x:Name="EntryPassworld"/>
</Border>
<Button
x:Name="ConnexionButton"
Text="Se connecter"
Clicked="ConnectionOnClicked"
HorizontalOptions="Center" />
<Label
Text="Mot de passe oublié ?"
TextColor="{StaticResource Primary}"
Margin="5,0,0,0"
TextDecorations="Underline"
HorizontalOptions="Center">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}"
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}"
CommandParameter="ForgetPassword"/>
</Label.GestureRecognizers>
</Label>
</Label.GestureRecognizers>
</Label>
<HorizontalStackLayout HorizontalOptions="Center">
@ -74,7 +74,7 @@
</Label.GestureRecognizers>
</Label>
</HorizontalStackLayout>
</VerticalStackLayout>
</ScrollView>

@ -14,19 +14,19 @@ namespace IHM.Mobile
public void ConnectionOnClicked(object sender, EventArgs e)
public async void ConnectionOnClicked(object sender, EventArgs e)
{
if (EntryMail.Text == null || EntryPassworld.Text == null)
{
AffichError("Champ invalide", "Veuillez compléter tout les champs", "OK");
}
else {
/* if (Mgr.existEmail(EntryMail.Text))
if (await Mgr.Pers.EmailDisponible(EntryMail.Text))
{
if (Mgr.isEqualHash(Mgr.recupMdpBdd(EntryMail.Text), EntryPassworld.Text))
if (Mgr.CompareHash(await Mgr.getPassword(EntryMail.Text), EntryPassworld.Text))
{
Mgr.createUser(EntryMail.Text);
ConnexionValide();
await Navigation.PopModalAsync();
}
else
{
@ -36,16 +36,10 @@ namespace IHM.Mobile
else
{
AffichError("Compte inexistant", "Email ou mot de passe invalide", "OK");
}*/
}
}
}
private async void ConnexionValide()
{
//Mgr.LoadBanques();
await Navigation.PopModalAsync();
}
private async void AffichError(string s, string s1, string s2)
{
await DisplayAlert(s, s1, s2);
@ -57,5 +51,6 @@ namespace IHM.Mobile
}
public ICommand TapCommand => new Command<string>(async (page) => await Shell.Current.GoToAsync(page));
}
}

@ -3,8 +3,8 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="IHM.Mobile.Operations">
<VerticalStackLayout>
<CollectionView Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding User.LesBanques[0].ListeDesComptes[0].LesOpe}">
<CollectionView.ItemTemplate>
<ListView Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding User.LesBanques[0].ListeDesComptes[0].LesOpe}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Padding="10" >
<Grid.RowDefinitions>
@ -34,7 +34,7 @@
FontAttributes="Bold"/>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</ListView.ItemTemplate>
</ListView>
</VerticalStackLayout>
</ContentPage>

@ -3,7 +3,8 @@ using Android.Runtime;
namespace IHM
{
[Application]
[Application(UsesCleartextTraffic = true)]
public class MainApplication : MauiApplication
{
public MainApplication(IntPtr handle, JniHandleOwnership ownership)

@ -36,11 +36,8 @@ namespace Model
UrlLogo = urlLogo;
}
public Banque(string nom, string urlSite, string urlLogo, List<Compte> lescomptes)
public Banque(string nom, string urlSite, string urlLogo, List<Compte> lescomptes) : this(nom,urlSite, urlLogo)
{
Nom = nom;
UrlSite = urlSite;
UrlLogo = urlLogo;
ListeDesComptes = lescomptes;
}

@ -7,9 +7,9 @@ using System.Text;
namespace Model
{
public class Hash
public static class Hash
{
public string CreateHashCode(string mdp)
public static string CreateHashCode(string mdp)
{
string hashString = "";
@ -25,21 +25,10 @@ namespace Model
return hashString;
}
public bool IsEqualHash(string mdpBdd, string mdpSent)
public static bool IsEqualHash(string mdpBdd, string mdpSent)
{
string hashedMdpSent = CreateHashCode(mdpSent);
string hashedMdpSent = Hash.CreateHashCode(mdpSent);
return hashedMdpSent.Equals(mdpBdd);
}
private string ByteArrayToString(byte[] arrInput)
{
int i;
StringBuilder sOutput = new StringBuilder(arrInput.Length);
for (i = 0; i < arrInput.Length; i++)
{
sOutput.Append(arrInput[i].ToString("X2"));
}
return sOutput.ToString();
}
}
}

@ -10,48 +10,49 @@ namespace Model
{
// /!\ Toutes les méthodes ici permettent d'uniquement manipuler une stratégie de persistance
// /!\ et ne doit en aucun cas manipuler la mémoire !
//actions sur les inscrits
bool AjouterInscrit(Inscrit inscrit);
bool SupprimerInscrit(Inscrit inscrit);
bool ModifierMdpInscrit(string mail, string nouveauMdp);
Inscrit RecupererInscrit(string mail);
bool EmailDisponible(string mail);
Task<bool> AjouterInscrit(Inscrit inscrit);
Task<bool> SupprimerInscrit(Inscrit inscrit);
Task<bool> ModifierMdpInscrit(string mail, string nouveauMdp);
Task<Inscrit> RecupererInscrit(string mail);
Task<bool> EmailDisponible(string mail);
//actions sur les banques
bool AjouterBanque(Banque banque, Inscrit inscrit);
bool SupprimerBanque(Banque banque, Inscrit inscrit);
IList<Banque> RecupererBanques(Inscrit inscrit);
IList<Banque> RecupererBanquesDisponible();
Task<bool> AjouterBanque(Banque banque, Inscrit inscrit);
Task<bool> SupprimerBanque(Banque banque, Inscrit inscrit);
Task<IList<Banque>> RecupererBanques(Inscrit inscrit);
Task<IList<Banque>> RecupererBanquesDisponible();
//actions sur les comptes
bool AjouterCompte(Compte compte, Inscrit inscrit);
bool SupprimerCompte(Compte compte, Inscrit inscrit);
IList<Compte> RecupererCompte(Banque banque, Inscrit inscrit);
Task<bool> AjouterCompte(Compte compte, Inscrit inscrit);
Task<bool> SupprimerCompte(Compte compte, Inscrit inscrit);
Task<IList<Compte>> RecupererCompte(Banque banque, Inscrit inscrit);
//actions sur les Opérations
bool AjouterOperation(Compte compte, Operation operation);
bool SupprimerOperation(Compte compte, Operation operation);
IList<Operation> RecupererOperation(Compte compte);
Task<bool> AjouterOperation(Compte compte, Operation operation);
Task<bool> SupprimerOperation(Compte compte, Operation operation);
Task<IList<Operation>> RecupererOperation(Compte compte);
//actions sur les Planifications
bool AjouterPlanification(Compte compte, Planification planification);
bool SupprimerPlanification(Compte compte, Planification planification);
IList<Planification> RecupererPlanification(Compte compte);
Task<bool> AjouterPlanification(Compte compte, Planification planification);
Task<bool> SupprimerPlanification(Compte compte, Planification planification);
Task<IList<Planification>> RecupererPlanification(Compte compte);
//actions sur les Echéances
bool AjouterEcheance(Compte compte, Echeance echeance);
bool SupprimerEcheance(Compte compte, Echeance echeance);
IList<Echeance> RecupererEcheance(Compte compte);
Task<bool> AjouterEcheance(Compte compte, Echeance echeance);
Task<bool> SupprimerEcheance(Compte compte, Echeance echeance);
Task<IList<Echeance>> RecupererEcheance(Compte compte);
//actions utilitaire
bool TestConnexion();
Task<bool> TestConnexion();
IList<Compte> GetDataFromOFX(string path);
}
}

@ -12,8 +12,6 @@ namespace Model
{
public class Inscrit:INotifyPropertyChanged
{
public Hash hash = new Hash();
public event PropertyChangedEventHandler PropertyChanged;
public int Id { get; set; }
@ -45,7 +43,7 @@ namespace Model
get => mdp;
set
{
if (value.Length <= 8)
/*if (value.Length <= 8)
{
throw new InvalidPasswordException(value, "La longeur d'un mot de passe doit être obligatoirement superieure a 8");
}
@ -56,7 +54,7 @@ namespace Model
if (!Regex.IsMatch(value, "[0-9]+"))
{
throw new InvalidPasswordException(value, "Le mot de passe doit contenir au moins un chiffre");
}
}*/
mdp = value;
}
}
@ -66,7 +64,7 @@ namespace Model
public double SoldeTotal { get; private set; }
public Devises Dev { get; private set; }
public List<Banque> LesBanques
public IList<Banque> LesBanques
{
get => lesBanques;
set
@ -79,7 +77,7 @@ namespace Model
}
}
private List<Banque> lesBanques;
private IList<Banque> lesBanques;
[JsonConstructor]
public Inscrit(int id, string nom, string mail, string prenom, string mdp, double soldeTotal = 0)
@ -90,7 +88,7 @@ namespace Model
Prenom = prenom;
Mdp = mdp;
SoldeTotal = soldeTotal;
lesBanques = new();
lesBanques = new List<Banque>();
}
public Inscrit(int id, string nom, string mail, string prenom, string mdp, double soldeTotal, List<Banque> lesbanques)
: this(id, nom, mail, prenom, mdp, soldeTotal)

@ -9,25 +9,6 @@ namespace Model
public event PropertyChangedEventHandler PropertyChanged;
public IPersistanceManager Pers { get; private set; }
public int SelectedInscrit { get; set; }
public Hash hash = new Hash();
public int Solde
{
get => solde;
set
{
if (solde != value)
{
solde = value;
OnPropertyChanged(nameof(Solde));
}
}
}
private int solde;
private Inscrit user;
public Inscrit User
{
@ -58,7 +39,7 @@ namespace Model
}
}
private Banque selectedBanque;
public List<Banque> BanquesDisponibleInApp
public IList<Banque> BanquesDisponibleInApp
{
get => banquesDisponibleInApp;
set
@ -70,31 +51,42 @@ namespace Model
}
}
}
private List<Banque> banquesDisponibleInApp;
void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
private IList<Banque> banquesDisponibleInApp;
public Manager(IPersistanceManager persistance)
{
Pers = persistance;
}
void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public bool isEqualHash(string mdpBdd, string mdpSent)
public bool CompareHash(string mdpBdd, string mdpSent)
{
return hash.IsEqualHash(mdpBdd, mdpSent);
return Hash.IsEqualHash(mdpBdd, mdpSent);
}
public void deconnexion()
{
User = null;
}
public async void LoadBanques()
{
User.LesBanques = await Pers.RecupererBanques(User);
BanquesDisponibleInApp = await Pers.RecupererBanquesDisponible();
}
public async Task<string> getPassword(string email)
{
Inscrit inscrit = await Pers.RecupererInscrit(email);
return inscrit.Mdp;
}
public async void createUser(string mail)
{
User = await Pers.RecupererInscrit(mail);
}
}
}

Loading…
Cancel
Save