/// <summary> /// Modidie un mouvement (prépare les champs /// </summary> /// <param name="mouvement">le mouvement à modifié </param> public async Task ModifierMouvement(Mouvement mouvement) { IsModif = true; IdMouvementSelect = mouvement.Id; IdMouvementVirement = mouvement.IdMouvementVirement; Credit = mouvement.Credit; if (mouvement.Debit != 0) { Debit = mouvement.Debit; } else { Debit = null; } Numero = mouvement.Numero; DateMouvement = mouvement.Date; Commentaire = mouvement.Commentaire; SelectedTypeMouvement = TypeMouvementListe[mouvement.ModeMouvement - 1]; SelectedCategorieFmList = ContexteAppli.ListeCategoriesMouvement.SelectMany(varA => varA.SousCategorieList.Where(varB => varB.Id == mouvement.IdType && varB.IsSousCategPerso == mouvement.IsTypePerso)).FirstOrDefault(); var idCompteMouvb = (App.ModeApp == AppareilEnum.ModeAppareilPrincipal) ? await _mouvementBusiness.GetIdCompteMouvementLieVirement(mouvement.IdMouvementVirement) : await RoamingMouvementBusiness.GetIdCompteMouvementLieVirement(mouvement.IdMouvementVirement); SelectedCompteVirement = _listeCompte.SelectMany(banque => banque.ListeCompte.Where(compte => compte.Id == idCompteMouvb)).FirstOrDefault(); }
/// <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> /// Change l'état passé d'un mouvement /// </summary> /// <param name="mouvement">le mouvement à modifié</param> /// <param name="isPasse">true si le mouvement est passé</param> /// <returns></returns> public async Task ChangePasseMouvement(Mouvement mouvement, bool isPasse) { if (mouvement != null) { if (App.ModeApp == AppareilEnum.ModeAppareilPrincipal) { await _mouvementBusiness.ChangePasseMouvement(mouvement.Id, isPasse); } else { await RoamingMouvementBusiness.ModifierPasseMouvement(mouvement.Id, isPasse); } ListeMouvements.FirstOrDefault(x => x.Id == mouvement.Id).IsPasse = isPasse; } }
/// <summary> /// Supprime un mouvement de la base /// </summary> /// <returns></returns> public async Task SupprimerMouvement() { if (IdMouvementSelect != null) { if (App.ModeApp == AppareilEnum.ModeAppareilPrincipal) { await _mouvementBusiness.SupprimerMouvement(IdMouvementSelect.Value); } else { await RoamingMouvementBusiness.SupprimerMouvementRoaming(IdMouvementSelect.Value); } await RecompterPage(null); await UpdateSoldeCompte(); AnnulerMouvement(); } }
/// <summary> /// Charge en base les mouvements en roaming pui les efface /// </summary> public static async Task ChargerMouvementRoaming() { var listeMouvement = new List <Mouvement>(await RoamingMouvementBusiness.GetAllMouvement()); //si des mouvements sont à charge if (listeMouvement.Count > 0) { var mouvementBusiness = new MouvementBusiness(); await mouvementBusiness.Initialization; var listeIdMouvementAjouter = new List <int>(); var listeIdRoamingIdBdd = new Dictionary <int, int>(); foreach (var mouvement in listeMouvement) { var idRoaming = mouvement.Id; var id = await mouvementBusiness.SaveMouvementFmRoaming(mouvement); await RoamingMouvementBusiness.SupprimerMouvementSimpleRoaming(idRoaming); if (mouvement.IdMouvementVirement > 0 && mouvement.IdMouvementVirement > 0 && listeIdRoamingIdBdd.ContainsKey(mouvement.IdMouvementVirement)) { await mouvementBusiness.AssocierMouvementVirement(listeIdRoamingIdBdd[mouvement.IdMouvementVirement], id); } if (id != 0) { listeIdMouvementAjouter.Add(id); listeIdRoamingIdBdd.Add(idRoaming, id); } } //on recalcul les soldes if (listeIdMouvementAjouter.Count > 0) { await mouvementBusiness.RecalculSoldesComptes(listeIdMouvementAjouter); } } }
/// <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(); }
/// <summary> /// Sauvegarde en base un nouveau mouvement /// </summary> public async Task SaveMouvement() { //on remet en positif si un nombre est négatif if (Credit != null && Credit != 0 && Credit < 0) { Credit *= -1; } if (Debit != null && Debit != 0 && Debit < 0) { Debit *= -1; } //ajout du mouvement var mouvement = new Mouvement { Id = IdMouvementSelect ?? 0, Commentaire = Commentaire, Credit = Credit ?? 0, Debit = Debit ?? 0, Date = DateMouvement, IdCompte = Compte.Id, ModeMouvement = SelectedTypeMouvement.Id, Numero = Numero, IdType = SelectedCategorieFmList?.Id ?? 0, IsTypePerso = SelectedCategorieFmList?.IsSousCategPerso ?? false, IdMouvementVirement = IdMouvementVirement ?? 0, }; if (App.ModeApp == AppareilEnum.ModeAppareilPrincipal) { if (SelectedCompteVirement != null && SelectedCompteVirement.Id != 0 && SelectedTypeMouvement.Id == 3) { await _mouvementBusiness.SaveVirement(mouvement, SelectedCompteVirement.Id); } else { await _mouvementBusiness.SaveMouvement(mouvement); } } else { if (SelectedCompteVirement != null && SelectedCompteVirement.Id != 0 && SelectedTypeMouvement.Id == 3) { await RoamingMouvementBusiness.SaveVirement(mouvement, SelectedCompteVirement.Id); } else { if (IdMouvementSelect == null) { await RoamingMouvementBusiness.AjouterMouvementRoaming(mouvement); } else { await RoamingMouvementBusiness.ModifierMouvementRoaming(mouvement); } } } await RecompterPage(null); await UpdateSoldeCompte(); AnnulerMouvement(); }
/// <summary> /// Permet la navigation entre les pages en chargeant la liste des mouvements d'une page et en modifiant la visibilité des boutons de navigations /// </summary> /// <param name="page">indique la page sur laquelle naviguer (null si aucune)</param> /// <param name="goToPrevious">true pour aller à la page précédente</param> /// <param name="goToNext">true pour aller à la page suivante</param> /// <param name="listeRajout">une liste de mouvement à rajouter en plus des mouvements en base</param> public async Task ChangePage(int?page, bool goToPrevious, bool goToNext, List <Mouvement> listeRajout) { //Changement de la page page en cours if (page != null) { if (page <= NombrePages && page > 0) { PageEnCours = page.Value; } } else { if (goToPrevious) { PageEnCours--; } if (goToNext) { PageEnCours++; } } //Changement de la visibilité IsPreviousEnabled = PageEnCours > 1; IsNextEnabled = PageEnCours < NombrePages; //Chargement de la liste des mouvements ListeMouvements = new ObservableCollection <Mouvement>((App.ModeApp == AppareilEnum.ModeAppareilPrincipal) ? await _mouvementBusiness.GetListeMouvement(Compte.Id, PageEnCours, NbOccurencesMax, DateSoldeCompte, listeRajout) : await RoamingMouvementBusiness.GetMouvementsRoaming(Compte.Id)); }