ManagerRefactoring #139

Merged
hugo.livet merged 10 commits from ManagerRefactoring into master 2 years ago

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

@ -13,121 +13,127 @@ namespace Data
// /!\ et ne doit en aucun cas manipuler la mémoire ! // /!\ et ne doit en aucun cas manipuler la mémoire !
//actions sur les inscrits //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(); List<Inscrit> inscrits = await ClientAPI.GetInscritAsync(mail);
if(inscrits.Count >= 1) 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) if (inscrits.Count >= 1)
{ {
return false; return true;
} }
return true; return false;
} }
//actions sur les banques //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 //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 //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 //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 //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 //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*/ 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 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); private static NpgsqlConnection dbAccess = new NpgsqlConnection(connexionBDD);
@ -100,8 +99,7 @@ namespace LinqToPgSQL
public async void ChangePasswordBdd(string mail, string newMdp) 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); var conn = new NpgsqlConnection(connexionBDD);
Console.Out.WriteLine("Ouverture de la connection"); Console.Out.WriteLine("Ouverture de la connection");
try try
@ -151,7 +149,7 @@ namespace LinqToPgSQL
public async void CreateInscrit(Inscrit inscrit) public async void CreateInscrit(Inscrit inscrit)
{ {
string mdpHash = hash.CreateHashCode(inscrit.Mdp); string mdpHash = Hash.CreateHashCode(inscrit.Mdp);
Console.WriteLine("AAAAAA"+mdpHash.Length); Console.WriteLine("AAAAAA"+mdpHash.Length);
var conn = new NpgsqlConnection(connexionBDD); var conn = new NpgsqlConnection(connexionBDD);
conn.Open(); conn.Open();

@ -2,9 +2,9 @@
namespace Data 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() public PersStub()
{ {
@ -63,10 +63,7 @@ namespace Data
public void CreateInscrit(Inscrit inscrit){ public void CreateInscrit(Inscrit inscrit){
lesInscrits.Add(inscrit); lesInscrits.Add(inscrit);
} }
/*public string LastInscrit()
{
return lesInscrits[lesInscrits.Count - 1].Id;
}*/
public bool ExistEmail(string mail) public bool ExistEmail(string mail)
{ {
foreach(Inscrit i in lesInscrits) foreach(Inscrit i in lesInscrits)
@ -90,12 +87,11 @@ namespace Data
} }
public string RecupMdpBdd(string mail) public string RecupMdpBdd(string mail)
{ {
Hash hash = new Hash();
foreach(Inscrit i in lesInscrits) foreach(Inscrit i in lesInscrits)
{ {
if(i.Mail == mail) if(i.Mail == mail)
{ {
return hash.CreateHashCode(i.Mdp); return Hash.CreateHashCode(i.Mdp);
} }
} }
return "inexistant"; return "inexistant";
@ -157,6 +153,120 @@ namespace Data
public List<Banque> LoadBanqueId(int id) 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(); throw new NotImplementedException();
} }
@ -164,4 +274,3 @@ namespace Data
} }

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

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

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

@ -11,7 +11,7 @@ public partial class AjoutBanques : ContentPage
{ {
InitializeComponent(); InitializeComponent();
BindingContext = Mgr; BindingContext = Mgr;
//Mgr.importBanques(); Mgr.LoadBanques();
if (OperatingSystem.IsIOS()) if (OperatingSystem.IsIOS())
{ {
boutonRetour.IsVisible = true; boutonRetour.IsVisible = true;
@ -29,12 +29,16 @@ public partial class AjoutBanques : ContentPage
{ {
if (result.FileName.EndsWith("ofx", StringComparison.OrdinalIgnoreCase)) if (result.FileName.EndsWith("ofx", StringComparison.OrdinalIgnoreCase))
{ {
//IList<Compte> lesComptes = Mgr.getCompteFromOFX(result.FullPath); IList<Compte> lesComptes = Mgr.Pers.GetDataFromOFX(result.FullPath);
/*Debug.WriteLine(lesComptes.Count); Debug.WriteLine(lesComptes.Count);
foreach(Compte compte in lesComptes) 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(); 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 else
{ {
//Mgr.changePasswordBdd(MailUser, EntryNewMdp.Text); Mgr.Pers.ModifierMdpInscrit(MailUser, EntryNewMdp.Text);
AffichError("mdp changé", "mot de passe bien changé", "ok"); AffichError("mdp changé", "mot de passe bien changé", "ok");
NavigateTo("../.."); NavigateTo("../..");
} }

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

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

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

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

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

@ -18,7 +18,7 @@
<Image Source="{AppThemeBinding Light=logo_sans_fond_black.png, Dark=logo_sans_fond.png}" <Image Source="{AppThemeBinding Light=logo_sans_fond_black.png, Dark=logo_sans_fond.png}"
HorizontalOptions="Center" HeightRequest="200"/> HorizontalOptions="Center" HeightRequest="200"/>
<Border StrokeShape="RoundRectangle 20" BackgroundColor="White" Padding="7"> <Border StrokeShape="RoundRectangle 20" BackgroundColor="White" Padding="7">
<Entry BackgroundColor="{StaticResource White}" <Entry BackgroundColor="{StaticResource White}"
TextColor="{StaticResource Black}" TextColor="{StaticResource Black}"
@ -36,26 +36,26 @@
Placeholder="Mot de passe" Placeholder="Mot de passe"
IsPassword="True" IsPassword="True"
x:Name="EntryPassworld"/> x:Name="EntryPassworld"/>
</Border> </Border>
<Button <Button
x:Name="ConnexionButton" x:Name="ConnexionButton"
Text="Se connecter" Text="Se connecter"
Clicked="ConnectionOnClicked" Clicked="ConnectionOnClicked"
HorizontalOptions="Center" /> HorizontalOptions="Center" />
<Label <Label
Text="Mot de passe oublié ?" Text="Mot de passe oublié ?"
TextColor="{StaticResource Primary}" TextColor="{StaticResource Primary}"
Margin="5,0,0,0" Margin="5,0,0,0"
TextDecorations="Underline" TextDecorations="Underline"
HorizontalOptions="Center"> HorizontalOptions="Center">
<Label.GestureRecognizers> <Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}" <TapGestureRecognizer Command="{Binding TapCommand}"
CommandParameter="ForgetPassword"/> CommandParameter="ForgetPassword"/>
</Label.GestureRecognizers> </Label.GestureRecognizers>
</Label> </Label>
<HorizontalStackLayout HorizontalOptions="Center"> <HorizontalStackLayout HorizontalOptions="Center">
@ -74,7 +74,7 @@
</Label.GestureRecognizers> </Label.GestureRecognizers>
</Label> </Label>
</HorizontalStackLayout> </HorizontalStackLayout>
</VerticalStackLayout> </VerticalStackLayout>
</ScrollView> </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) if (EntryMail.Text == null || EntryPassworld.Text == null)
{ {
AffichError("Champ invalide", "Veuillez compléter tout les champs", "OK"); AffichError("Champ invalide", "Veuillez compléter tout les champs", "OK");
} }
else { 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); Mgr.createUser(EntryMail.Text);
ConnexionValide(); await Navigation.PopModalAsync();
} }
else else
{ {
@ -36,16 +36,10 @@ namespace IHM.Mobile
else else
{ {
AffichError("Compte inexistant", "Email ou mot de passe invalide", "OK"); 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) private async void AffichError(string s, string s1, string s2)
{ {
await DisplayAlert(s, s1, 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)); 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" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="IHM.Mobile.Operations"> x:Class="IHM.Mobile.Operations">
<VerticalStackLayout> <VerticalStackLayout>
<CollectionView Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding User.LesBanques[0].ListeDesComptes[0].LesOpe}"> <ListView Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding User.LesBanques[0].ListeDesComptes[0].LesOpe}">
<CollectionView.ItemTemplate> <ListView.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid Padding="10" > <Grid Padding="10" >
<Grid.RowDefinitions> <Grid.RowDefinitions>
@ -34,7 +34,7 @@
FontAttributes="Bold"/> FontAttributes="Bold"/>
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</CollectionView.ItemTemplate> </ListView.ItemTemplate>
</CollectionView> </ListView>
</VerticalStackLayout> </VerticalStackLayout>
</ContentPage> </ContentPage>

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

@ -36,11 +36,8 @@ namespace Model
UrlLogo = urlLogo; 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; ListeDesComptes = lescomptes;
} }

@ -7,9 +7,9 @@ using System.Text;
namespace Model namespace Model
{ {
public class Hash public static class Hash
{ {
public string CreateHashCode(string mdp) public static string CreateHashCode(string mdp)
{ {
string hashString = ""; string hashString = "";
@ -25,21 +25,10 @@ namespace Model
return hashString; 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); 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 // /!\ Toutes les méthodes ici permettent d'uniquement manipuler une stratégie de persistance
// /!\ et ne doit en aucun cas manipuler la mémoire ! // /!\ et ne doit en aucun cas manipuler la mémoire !
//actions sur les inscrits //actions sur les inscrits
bool AjouterInscrit(Inscrit inscrit); Task<bool> AjouterInscrit(Inscrit inscrit);
bool SupprimerInscrit(Inscrit inscrit); Task<bool> SupprimerInscrit(Inscrit inscrit);
bool ModifierMdpInscrit(string mail, string nouveauMdp); Task<bool> ModifierMdpInscrit(string mail, string nouveauMdp);
Inscrit RecupererInscrit(string mail); Task<Inscrit> RecupererInscrit(string mail);
bool EmailDisponible(string mail); Task<bool> EmailDisponible(string mail);
//actions sur les banques //actions sur les banques
bool AjouterBanque(Banque banque, Inscrit inscrit); Task<bool> AjouterBanque(Banque banque, Inscrit inscrit);
bool SupprimerBanque(Banque banque, Inscrit inscrit); Task<bool> SupprimerBanque(Banque banque, Inscrit inscrit);
IList<Banque> RecupererBanques(Inscrit inscrit); Task<IList<Banque>> RecupererBanques(Inscrit inscrit);
IList<Banque> RecupererBanquesDisponible(); Task<IList<Banque>> RecupererBanquesDisponible();
//actions sur les comptes //actions sur les comptes
bool AjouterCompte(Compte compte, Inscrit inscrit); Task<bool> AjouterCompte(Compte compte, Inscrit inscrit);
bool SupprimerCompte(Compte compte, Inscrit inscrit); Task<bool> SupprimerCompte(Compte compte, Inscrit inscrit);
IList<Compte> RecupererCompte(Banque banque, Inscrit inscrit); Task<IList<Compte>> RecupererCompte(Banque banque, Inscrit inscrit);
//actions sur les Opérations //actions sur les Opérations
bool AjouterOperation(Compte compte, Operation operation); Task<bool> AjouterOperation(Compte compte, Operation operation);
bool SupprimerOperation(Compte compte, Operation operation); Task<bool> SupprimerOperation(Compte compte, Operation operation);
IList<Operation> RecupererOperation(Compte compte); Task<IList<Operation>> RecupererOperation(Compte compte);
//actions sur les Planifications //actions sur les Planifications
bool AjouterPlanification(Compte compte, Planification planification); Task<bool> AjouterPlanification(Compte compte, Planification planification);
bool SupprimerPlanification(Compte compte, Planification planification); Task<bool> SupprimerPlanification(Compte compte, Planification planification);
IList<Planification> RecupererPlanification(Compte compte); Task<IList<Planification>> RecupererPlanification(Compte compte);
//actions sur les Echéances //actions sur les Echéances
bool AjouterEcheance(Compte compte, Echeance echeance); Task<bool> AjouterEcheance(Compte compte, Echeance echeance);
bool SupprimerEcheance(Compte compte, Echeance echeance); Task<bool> SupprimerEcheance(Compte compte, Echeance echeance);
IList<Echeance> RecupererEcheance(Compte compte); Task<IList<Echeance>> RecupererEcheance(Compte compte);
//actions utilitaire //actions utilitaire
bool TestConnexion(); Task<bool> TestConnexion();
IList<Compte> GetDataFromOFX(string path);
} }
} }

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

@ -9,25 +9,6 @@ namespace Model
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;
public IPersistanceManager Pers { get; private set; } 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; private Inscrit user;
public Inscrit User public Inscrit User
{ {
@ -58,7 +39,7 @@ namespace Model
} }
} }
private Banque selectedBanque; private Banque selectedBanque;
public List<Banque> BanquesDisponibleInApp public IList<Banque> BanquesDisponibleInApp
{ {
get => banquesDisponibleInApp; get => banquesDisponibleInApp;
set set
@ -70,31 +51,42 @@ namespace Model
} }
} }
} }
private List<Banque> banquesDisponibleInApp; private IList<Banque> banquesDisponibleInApp;
void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public Manager(IPersistanceManager persistance) public Manager(IPersistanceManager persistance)
{ {
Pers = 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() public void deconnexion()
{ {
User = null; 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