/// <summary> /// Recalcul la solde d'un compte après l'ajout ou la modification d'un mouvement /// </summary> /// <param name="mouvement">le mouvement (null pour une suppresion de mouvement)</param> /// <param name="oldMouvement">l'ancien mouvement (null si ajout)</param> /// <returns>la task</returns> private async Task CalculerSolde(Mouvement mouvement, Mouvement oldMouvement) { var idCompte = mouvement?.IdCompte ?? oldMouvement.IdCompte; var compte = (await Bdd.Connection.Table <Compte>().Where(x => x.Id == idCompte).FirstOrDefaultAsync()); //si c'est une modification, on efface la prise en compte de l'ancienne valeur if (oldMouvement != null) { if (oldMouvement.Credit > 0) { compte.Solde -= oldMouvement.Credit; } else { compte.Solde += oldMouvement.Debit; } } if (mouvement != null) { //ajout de la nouvelle valeur if (mouvement.Credit > 0) { compte.Solde += mouvement.Credit; } else { compte.Solde -= mouvement.Debit; } } await Bdd.UpdateDonnee(compte); await RoamingCompteBusiness.ModifierCompte(compte); }
/// <summary> /// Carge la liste des compte pour un virement /// </summary> /// <returns>la task</returns> private async Task GenereComptesVirement() { var tmp = new List <GroupInfoList <Compte> >(); _listeCompte = (App.ModeApp == AppareilEnum.ModeAppareilPrincipal) ? await _banqueBusiness.GetListeBanqueCompteVirement(Compte.Id) : await RoamingCompteBusiness.GetListeBanqueCompteVirement(Compte.Id); var groupeb = new GroupInfoList <Compte> { Key = ResourceLoader.GetForCurrentView().GetString("AucunText") }; groupeb.Add(new Compte { Id = 0, Nom = ResourceLoader.GetForCurrentView().GetString("AucunText") }); tmp.Add(groupeb); foreach (var banque in _listeCompte) { var groupe = new GroupInfoList <Compte> { Key = banque.Nom }; groupe.AddRange(banque.ListeCompte); if (groupe.Count > 0) { tmp.Add(groupe); } } ListeCompteVirement.Source = tmp; }
/// <summary> /// Et à jour le solde du compte affiché /// </summary> /// <returns></returns> public async Task UpdateSoldeCompte() { if (App.ModeApp == AppareilEnum.ModeAppareilPrincipal) { Compte = await _compteBusiness.GetCompte(Compte.Id); } else { Compte = await RoamingCompteBusiness.GetCompte(Compte.Id); } }
/// <summary> /// Met à jour le nom et la devise d'un compte /// </summary> /// <param name="compte">le compte à mettre à jour</param> /// <returns>la task</returns> public async Task ModifierCompte(Compte compte) { //mise à jour du compte var res = await Bdd.Connection.Table <Compte>().Where(x => x.Id == compte.Id).FirstOrDefaultAsync(); res.IdDevise = compte.IdDevise; res.Nom = compte.Nom; await Bdd.UpdateDonnee(res); await RoamingCompteBusiness.ModifierCompte(compte); }
/// <summary> /// Réinitialise l'application et fait retourner sur la page d'acceuil /// </summary> /// <param name="reinitRoaming">indique si les données roaming doivent être effacé</param> public async Task ReinitAppli(bool reinitRoaming) { await _applicationBusiness.DeleteDatabase(); if (reinitRoaming) { await RoamingCompteBusiness.DeleteRoaming(); await RoamingMouvementBusiness.DeleteRoaming(); } App.OpenDemarrageView(); }
/// <summary> /// Recalcul les infos d'espace pour le romaing /// </summary> private async Task CalculerEspaceDispo() { var espaceTotal = await RoamingUtils.GetEspaceRoamingOccupePourcent(); EspaceDispoTextBlock.Text = ResourceLoader.GetForCurrentView().GetString("EspaceDispo") + " " + espaceTotal + " %"; EspaceDispoTextBlock.Foreground = espaceTotal >= ContexteStatic.EspaceMaxAutoriseRoaming ? new SolidColorBrush(Color.FromArgb(255, 255, 0, 0)) : new SolidColorBrush(Color.FromArgb(255, 0, 0, 0)); EspaceCompteOccupe.Text = await RoamingCompteBusiness.GetEspaceFichierOccupePourcent() + " %"; EspaceMouvementOccupe.Text = await RoamingMouvementBusiness.GetEspaceFichierOccupePourcent() + " %"; EcheancierCheckBox.Content = await RoamingEcheancierBusiness.GetEspaceFichierOccupePourcent() + " %"; CategorieCheckBox.Content = await RoamingCategorieBusiness.GetEspaceFichierOccupePourcent() + " %"; }
/// <summary> /// Ajoute un compte en base /// </summary> /// <param name="compte">le compte à ajouter</param> /// <returns>la task</returns> public async Task <int> AjouterCompte(Compte compte) { var compteId = await Bdd.Connection.Table <Compte>().OrderByDescending(x => x.Id).FirstOrDefaultAsync(); var id = 1; if (compteId != null) { id = compteId.Id + 1; } compte.Id = id; await Bdd.AjouterDonnee(compte); await RoamingCompteBusiness.AjouterCompte(compte); return(compte.Id); }
/// <summary> /// Supprime une banque de la base de donnée et du roaming /// </summary> /// <param name="banque">la banque à supprimer</param> /// <returns>la task</returns> public async Task SupprimerBanque(Banque banque) { var comptes = await Bdd.Connection.Table <Compte>().Where(x => x.IdBanque == banque.Id).ToListAsync(); var compteBusiness = new CompteBusiness(); await compteBusiness.Initialization; foreach (var compte in comptes) { await compteBusiness.SupprimerCompte(compte); } if (await Bdd.DeleteDonnee(banque) > 0) { await RoamingCompteBusiness.SupprimerBanque(banque); } }
/// <summary> /// Ajoute une banque en base /// </summary> /// <param name="banque">la banque à ajouter</param> /// <returns>la task</returns> public async Task <Banque> AjouterBanque(Banque banque) { var banqueId = await Bdd.Connection.Table <Banque>().OrderByDescending(x => x.Id).FirstOrDefaultAsync(); var id = 1; if (banqueId != null) { id = banqueId.Id + 1; } banque.Id = id; await Bdd.AjouterDonnee(banque); await RoamingCompteBusiness.AjouterBanque(banque); return(banque); }
/// <summary> /// Supprimer un compte de la base puis du roaming /// </summary> /// <param name="compte">le compte à supprimer</param> /// <returns>la task</returns> public async Task SupprimerCompte(Compte compte) { if (await Bdd.DeleteDonnee(compte) > 0) { //supression du compte await SupprimerMouvementsCompte(compte.Id); //supression des échéanciers lié au compte var echeancierBusiness = new EcheancierBusiness(); await echeancierBusiness.Initialization; var listeEcheancier = await Bdd.Connection.Table <Echeancier>() .Where(x => x.IdCompte == compte.Id || x.IdCompteVirement == compte.Id).ToListAsync(); await echeancierBusiness.SupprimerEcheancier(listeEcheancier); //supression en roaming await RoamingCompteBusiness.SupprimerCompte(compte); } }
/// <summary> /// Recalcul le solde de chaques comptes /// </summary> /// <param name="listeIdMouvement">la liste des mouvements pour le recalcul</param> /// <returns>la task</returns> public async Task RecalculSoldesComptes(List <int> listeIdMouvement) { foreach (var idMouvement in listeIdMouvement) { var mouvement = await Bdd.Connection.Table <Mouvement>().Where(x => x.Id == idMouvement).FirstOrDefaultAsync(); var compte = (await Bdd.Connection.Table <Compte>().Where(x => x.Id == mouvement.IdCompte).FirstOrDefaultAsync()); if (mouvement.Credit > 0) { compte.Solde += mouvement.Credit; } else { compte.Solde -= mouvement.Debit; } await Bdd.UpdateDonnee(compte); await RoamingCompteBusiness.ModifierCompte(compte); } }
/// <summary> /// Modifie une banque en base et en romaing ainsi que la liste des comptes pour les devises /// </summary> /// <param name="banque">la banque à modifier</param> /// <returns>la task</returns> public async Task ModifierBanque(Banque banque) { //mise à jour de la banque var res = await Bdd.Connection.Table <Banque>().Where(x => x.Id == banque.Id).FirstOrDefaultAsync(); res.IdDevise = banque.IdDevise; res.Nom = banque.Nom; await Bdd.UpdateDonnee(res); await RoamingCompteBusiness.ModifierBanque(banque); //mise à jour de la devise de chaque comptes var resCompte = await Bdd.Connection.Table <Compte>().Where(x => x.IdBanque == banque.Id).ToListAsync(); foreach (var compte in resCompte) { compte.IdDevise = banque.IdDevise; await Bdd.UpdateDonnee(compte); await RoamingCompteBusiness.ModifierCompte(compte); } }
/// <summary> /// Efface toute les données devant être restauré /// </summary> /// <returns>la task</returns> public async Task DeleteForRestauration() { await Bdd.Connection.DropTableAsync <Banque>(); await Bdd.Connection.DropTableAsync <Compte>(); await Bdd.Connection.DropTableAsync <Echeancier>(); await Bdd.Connection.DropTableAsync <Mouvement>(); await Bdd.Connection.DropTableAsync <Categorie>(); await Bdd.Connection.DropTableAsync <SousCategorie>(); await Bdd.Connection.DropTableAsync <SoldeInitial>(); await Bdd.Connection.CreateTableAsync <Banque>(); await Bdd.Connection.CreateTableAsync <Compte>(); await Bdd.Connection.CreateTableAsync <Echeancier>(); await Bdd.Connection.CreateTableAsync <Mouvement>(); await Bdd.Connection.CreateTableAsync <Categorie>(); await Bdd.Connection.CreateTableAsync <SousCategorie>(); await Bdd.Connection.CreateTableAsync <SoldeInitial>(); await RoamingCategorieBusiness.DeleteRoaming(); await RoamingCompteBusiness.DeleteRoaming(); await RoamingEcheancierBusiness.DeleteRoaming(); await RoamingMouvementBusiness.DeleteRoaming(); }
public sealed override async Task InitializeAsync() { _compteBusiness = new CompteBusiness(); await _compteBusiness.Initialization; _banqueBusiness = new BanqueBusiness(); await _banqueBusiness.Initialization; ListeBanque = (App.ModeApp.Equals(AppareilEnum.ModeAppareilPrincipal))? await _compteBusiness.GetResumeCompte(): await RoamingCompteBusiness.GetListeBanques(); //calcul des sommes de chaque banque et du total foreach (var banque in ListeBanque) { var somme = banque.ListeCompte.Sum(compte => compte.Solde); banque.SoldeBanque = StringUtils.SeparerNombreEspace(somme.ToString(CultureInfo.InvariantCulture)) + " " + DeviseUtils.GetDevise(banque.IdDevise).Signe; } Visible = App.ModeApp.Equals(AppareilEnum.ModeAppareilPrincipal); }
/// <summary> /// Ajoute un compte provenant des données de restauration /// </summary> /// <param name="compte">le compte à ajouter</param> /// <returns>la task</returns> public async Task AjouterCompteFmRestauration(Compte compte) { await Bdd.AjouterDonnee(compte); await RoamingCompteBusiness.AjouterCompte(compte); }
/// <summary> /// Vérifie si des comptes existent déjà /// </summary> /// <returns></returns> public async Task <bool> VerifCompteExistant() { return((await RoamingCompteBusiness.GetListeBanques()).Count > 0); }
/// <summary> /// Ajoute une banque en base /// </summary> /// <param name="banque">la banque à ajouter</param> /// <returns>la task</returns> public async Task AjouterBanqueFmRestauration(Banque banque) { await Bdd.AjouterDonnee(banque); await RoamingCompteBusiness.AjouterBanque(banque); }
/// <summary> /// Créer la base de donnée à partir des données présentes dans le fihier Roaming /// </summary> /// <returns>las task</returns> public async Task CreerBaseDeDonneeFromRoaming(AppareilEnum appareil) { //creer la base await CreerBase(appareil); if (appareil == AppareilEnum.ModeAppareilPrincipal) { //ajout des banques et des comptes var listeBanques = await RoamingCompteBusiness.GetListeBanques(); foreach (var banque in listeBanques) { // ajout de la banque var banqueId = await Bdd.Connection.Table <Banque>().OrderByDescending(x => x.Id).FirstOrDefaultAsync(); var idbanque = 1; if (banqueId != null) { idbanque = banqueId.Id + 1; } banque.Id = idbanque; await Bdd.AjouterDonnee(banque); //ajout des comtpes foreach (var compte in banque.ListeCompte) { var compteId = await Bdd.Connection.Table <Compte>().OrderByDescending(x => x.Id).FirstOrDefaultAsync(); var id = 1; if (compteId != null) { id = compteId.Id + 1; } compte.Id = id; compte.IdBanque = banque.Id; await Bdd.AjouterDonnee(compte); } } //Ajout des échéanciers var listeEcheancier = await RoamingEcheancierBusiness.GetAllEcheancier(); foreach (var echeancier in listeEcheancier) { await Bdd.AjouterDonnee(echeancier); } //ajout des catégories perso var listeCategorie = await RoamingCategorieBusiness.GetCategorieRoaming(); foreach (var category in listeCategorie) { await Bdd.AjouterDonnee(category); } var listeSousCategorie = await RoamingCategorieBusiness.GetSousCategorieRoaming(); foreach (var sousCategory in listeSousCategorie) { await Bdd.AjouterDonnee(sousCategory); } } }