コード例 #1
0
        /// <summary>
        /// Retourne une liste de mouvement
        /// </summary>
        /// <param name="idCompte">l'id du compte dont on cherche les mouvements</param>
        /// <param name="page">info pour la limit</param>
        /// <param name="nbOccurences">info pour le nombre d'occurences à retourner</param>
        /// <param name="dateLimiteSoldeCompte">la date limite de récupération des mouvements</param>
        /// <param name="listeRajout">Une liste de mouvements à rajouter à la liste</param>
        /// <returns>la liste de mouvements</returns>
        public async Task <List <Mouvement> > GetListeMouvement(int idCompte, int page, int nbOccurences, DateTime dateLimiteSoldeCompte, List <Mouvement> listeRajout)
        {
            var devise    = DeviseUtils.GetDiminutifDevise((await Bdd.Connection.Table <Compte>().Where(x => x.Id == idCompte).FirstOrDefaultAsync()).IdDevise);
            var resultBdd = await Bdd.Connection.Table <Mouvement>().Where(x => x.IdCompte == idCompte && x.Date <= dateLimiteSoldeCompte).OrderBy(x => x.Date).ToListAsync();

            if (listeRajout != null && listeRajout.Any())
            {
                resultBdd.AddRange(listeRajout);
            }
            var retour =
                resultBdd.Where(x => x.IdCompte == idCompte && x.Date <= dateLimiteSoldeCompte)
                .OrderBy(x => x.Date)
                .Skip((page - 1) * nbOccurences)
                .Take(nbOccurences)
                .ToList();

            foreach (var mouv in retour)
            {
                mouv.MouvementChiffre = ((mouv.Credit > 0) ? "+" + mouv.Credit : "-" + mouv.Debit) + " " + devise;
                mouv.Type             =
                    ContexteAppli.ListeCategoriesMouvement.SelectMany(
                        varA =>
                        varA.SousCategorieList.Where(
                            varB => varB.Id == mouv.IdType && varB.IsSousCategPerso == mouv.IsTypePerso))
                    .FirstOrDefault();
            }
            resultBdd.Clear();
            return(retour);
        }
コード例 #2
0
 /// <summary>
 /// Converti les propriétés mmonaieA en monnaieB avec les devises de sélectionnées
 /// </summary>
 public void Convert()
 {
     if (MonnaieA != null)
     {
         MonnaieB = DeviseUtils.ConvertisseurMonnaie(SelectedDeviseA.Id, SelectedDeviseB.Id, MonnaieA.Value);
     }
 }
コード例 #3
0
        /// <summary>
        /// Retourne un compte de la base à partir de son id
        /// </summary>
        /// <param name="idCompte">l'id du compte</param>
        /// <returns>le compte</returns>
        public async Task <Compte> GetCompte(int idCompte)
        {
            var compte = await Bdd.Connection.Table <Compte>().Where(x => x.Id == idCompte).FirstOrDefaultAsync();

            compte.DeviseToAffiche = DeviseUtils.GetDiminutifDevise(compte.IdDevise);
            compte.Solde           = Math.Round(compte.Solde, 2);
            return(compte);
        }
コード例 #4
0
 private void Page_Loaded(object sender, RoutedEventArgs e)
 {
     if (_info.Mode == ModeOuvertureGestionCompteBanqueEnum.OuvertureAjouterBanque)
     {
         PaysComboBox.SelectedItem    = DeviseUtils.GetPays("FR");
         DeviseComboBox.SelectedIndex = 0;
     }
 }
コード例 #5
0
        /// <summary>
        /// Retourne la devise d'un compte
        /// </summary>
        /// <param name="idCompte">l'id du compte</param>
        /// <returns>la devise</returns>
        public static async Task <string> GetDevise(int idCompte)
        {
            await DemarrageRoaming();

            var t = DeviseUtils.GetDiminutifDevise(_roamingCompte.ListeBanque.SelectMany(
                                                       banque => banque.ListeCompte.Where(compte => compte.Id == idCompte)).FirstOrDefault().IdDevise);

            return(t);
        }
コード例 #6
0
        /// <summary>
        /// Change la langue de l'application
        /// </summary>
        /// <param name="langue">la nouvelle langue</param>
        public async Task ChangeLangueApplication(ListeLangues.LanguesStruct langue)
        {
            Strings.ListeLangues.ChangeLangueAppli(langue);
            await _applicationBusiness.ChangeIdLangue(langue);

            DeviseUtils.GeneratePays();
            DeviseUtils.GenerateDevise();
            await ContexteAppli.GenerateCategorieMouvement();
        }
コード例 #7
0
        /// <summary>
        /// Retourne un compte contenu en roaming à partir de son id
        /// </summary>
        /// <param name="idCompte">l'id du compte</param>
        /// <returns>le compte</returns>

        public static async Task <Compte> GetCompte(int idCompte)
        {
            await DemarrageRoaming();

            var compteRetour = _roamingCompte.ListeBanque.SelectMany(
                banque => banque.ListeCompte.Where(compte => compte.Id == idCompte)).FirstOrDefault();

            compteRetour.DeviseToAffiche = DeviseUtils.GetDiminutifDevise(compteRetour.IdDevise);
            return(compteRetour);
        }
コード例 #8
0
        /// <summary>
        /// Retourne la liste des banques
        /// </summary>
        /// <returns></returns>
        public static async Task <List <Banque> > GetListeBanques()
        {
            await DemarrageRoaming();

            foreach (var compte in _roamingCompte.ListeBanque.SelectMany(banque => banque.ListeCompte))
            {
                compte.DeviseToAffiche = DeviseUtils.GetDiminutifDevise(compte.IdDevise);
            }

            return(_roamingCompte.ListeBanque);
        }
コード例 #9
0
 public override async sealed Task InitializeAsync()
 {
     ListePaysA      = new ObservableCollection <Pays>(DeviseUtils.ListePays);
     ListePaysB      = new ObservableCollection <Pays>(DeviseUtils.ListePays);
     SelectedPaysA   = DeviseUtils.GetPays("FR");
     SelectedPaysB   = DeviseUtils.GetPays("FR");
     ListeDeviseA    = new ObservableCollection <Devise>(SelectedPaysA.Devises);
     ListeDeviseB    = new ObservableCollection <Devise>(SelectedPaysB.Devises);
     SelectedDeviseA = SelectedPaysA.Devises[0];
     SelectedDeviseB = SelectedPaysA.Devises[0];
     MonnaieA        = 0.0;
     MonnaieB        = 0.0;
 }
コード例 #10
0
        public override sealed async Task InitializeAsync()
        {
            _compteBusiness = new CompteBusiness();
            await _compteBusiness.Initialization;

            _banqueBusiness = new BanqueBusiness();
            await _banqueBusiness.Initialization;

            ListeDevise    = new ObservableCollection <Devise>(DeviseUtils.ListeDevises);
            ListePays      = new ObservableCollection <Pays>(DeviseUtils.ListePays);
            SelectedPays   = DeviseUtils.GetPays("FR");
            SelectedDevise = DeviseUtils.GetDevise(DeviseUtils.IdEuro);
        }
コード例 #11
0
        /// <summary>
        /// Permet d'obtenir un résumé des comptes de chaque banque pour la page d'acceuil
        /// </summary>
        public async Task <List <Banque> > GetResumeCompte()
        {
            var listeBanque = await Bdd.Connection.Table <Banque>().ToListAsync();

            foreach (var banque in listeBanque)
            {
                banque.ListeCompte = await Bdd.Connection.Table <Compte>().Where(x => x.IdBanque == banque.Id).ToListAsync();

                foreach (var compte in banque.ListeCompte)
                {
                    compte.DeviseToAffiche = DeviseUtils.GetDiminutifDevise(compte.IdDevise);
                }
            }
            return(listeBanque);
        }
コード例 #12
0
        /// <summary>
        /// Invoked when the application is launched normally by the end user.  Other entry points
        /// will be used such as when the application is launched to open a specific file.
        /// </summary>
        /// <param name="e">Details about the launch request and process.</param>
        protected override async void OnLaunched(LaunchActivatedEventArgs e)
        {
#if DEBUG
            if (System.Diagnostics.Debugger.IsAttached)
            {
                DebugSettings.EnableFrameRateCounter = true;
            }
#endif
            var rootFrame = Window.Current.Content as Frame;

            if (rootFrame == null)
            {
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;
                rootFrame.Navigated        += OnNavigated;
                Window.Current.Content      = rootFrame;
            }

            SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;

            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
                rootFrame.CanGoBack ?
                AppViewBackButtonVisibility.Visible :
                AppViewBackButtonVisibility.Collapsed;

            if (rootFrame.Content == null)
            {
                //Controle de l'éxistence de la base de donnée pour choisir quel mode de démarrage
                var sqlite = await ComSqlite.GetComSqlite();

                var dbExist = await sqlite.CheckDbExist();

                //Génération des données Utils
                DeviseUtils.GeneratePays();
                DeviseUtils.GenerateDevise();

                if (dbExist)
                {
                    OpenShell();
                }
                else
                {
                    OpenDemarrageView();
                }
            }
            Window.Current.Activate();
        }
コード例 #13
0
        private async void ButtonAppPrincipal_Click(object sender, RoutedEventArgs e)
        {
            ButtonAppPrincipal.IsEnabled  = false;
            ButtonAppSecondaire.IsEnabled = false;
            if (!await ViewModel.VerifCompteExistant())
            {
                PaysComboBox.SelectedItem    = DeviseUtils.GetPays("FR");
                DeviseComboBox.SelectedIndex = 0;
                ChoixAppareilGrid.Visibility = Visibility.Collapsed;
                DonneesBanques.Visibility    = Visibility.Visible;
            }
            else
            {
                await ViewModel.CreerAppareilPrincipal(false);

                App.OpenShell();
            }
        }
コード例 #14
0
        /// <summary>
        /// Permet d'obtenir la liste des échéancier en base
        /// </summary>
        /// <returns>la liste des échéancier</returns>
        public async Task <List <Echeancier> > GetEcheancier()
        {
            var list = await Bdd.Connection.Table <Echeancier>().ToListAsync();

            foreach (var echeancier in list)
            {
                var devise = DeviseUtils.GetDiminutifDevise((await Bdd.Connection.Table <Compte>().Where(x => x.Id == echeancier.IdCompte).FirstOrDefaultAsync()).IdDevise);
                echeancier.MouvementChiffre = ((echeancier.Credit > 0) ? "+" + echeancier.Credit : "-" + echeancier.Debit) + " " + devise;
                echeancier.Type             =
                    ContexteAppli.ListeCategoriesMouvement.SelectMany(
                        varA =>
                        varA.SousCategorieList.Where(
                            varB => varB.Id == echeancier.IdType && varB.IsSousCategPerso == echeancier.IsTypePerso))
                    .FirstOrDefault();
            }

            return(list);
        }
コード例 #15
0
        /// <summary>
        /// Sauvegarde un virement
        /// </summary>
        /// <param name="mouvement">le mouvement d'origine du virement</param>
        /// <param name="idCompte">l'id du compte sur lequel s'effectue sur le virement</param>
        /// <returns>la task</returns>
        public static async Task SaveVirement(Mouvement mouvement, int idCompte)
        {
            await DemarrageRoaming();

            var       create = mouvement.Id == 0;
            Mouvement mouvementA;
            Mouvement mouvementB;

            //mise à jour
            if (!create)
            {
                await SupprimerMouvementRoaming(mouvement.Id);

                mouvement.Id = 0;
            }
            mouvementA = mouvement;

            var idA = await AjouterMouvementRoaming(mouvementA);

            var idDeviseA = (await RoamingCompteBusiness.GetCompte(mouvementA.IdCompte)).IdDevise;
            var idDeviseB = (await RoamingCompteBusiness.GetCompte(idCompte)).IdDevise;

            mouvementB = new Mouvement
            {
                Id                  = 0,
                Commentaire         = mouvementA.Commentaire,
                Credit              = DeviseUtils.ConvertisseurMonnaie(idDeviseA, idDeviseB, mouvementA.Debit),
                Debit               = DeviseUtils.ConvertisseurMonnaie(idDeviseA, idDeviseB, mouvementA.Credit),
                Date                = mouvementA.Date,
                IdCompte            = idCompte,
                ModeMouvement       = mouvementA.ModeMouvement,
                Numero              = mouvementA.Numero,
                IdType              = mouvementA.IdType,
                IsTypePerso         = mouvementA.IsTypePerso,
                IdMouvementVirement = idA
            };

            var idB = await AjouterMouvementRoaming(mouvementB);

            mouvementA.Id = idA;
            mouvementA.IdMouvementVirement = idB;
            await ModifierMouvementRoaming(mouvementA);
        }
コード例 #16
0
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            TitreGrid.Background = App.AppShell.GetCouleur();

            var param = (PassageInfoGestionCompteBanque)e.Parameter;

            ViewModel = new GestionCompteBanqueViewModel(param.Mode);
            await ViewModel.Initialization;


            if (param.Mode == ModeOuvertureGestionCompteBanqueEnum.OuvertureAjouterBanque)
            {
                InfoPageTextBlock.Text    = ResourceLoader.GetForCurrentView().GetString("AjouterBanqueText");
                ValiderButton.Content     = ResourceLoader.GetForCurrentView().GetString("AjouterText");
                TitreTextBlock.Text       = ResourceLoader.GetForCurrentView().GetString("AjouterBanqueText");
                SoldeTextBlock.Visibility = Visibility.Collapsed;
                SoldeGrid.Visibility      = Visibility.Collapsed;
            }

            if (param.Mode == ModeOuvertureGestionCompteBanqueEnum.OuvertureModifierBanque)
            {
                InfoPageTextBlock.Text     = ResourceLoader.GetForCurrentView().GetString("ModifierBanqueText");
                TitreTextBlock.Text        = ResourceLoader.GetForCurrentView().GetString("ModifierBanqueText");
                ValiderButton.Content      = ResourceLoader.GetForCurrentView().GetString("ModifierText");
                ViewModel.Nom              = param.BanqueInfo.Nom;
                ViewModel.IdElement        = param.BanqueInfo.Id;
                SoldeTextBlock.Visibility  = Visibility.Collapsed;
                SoldeGrid.Visibility       = Visibility.Collapsed;
                DeviseTextBlock.Visibility = Visibility.Collapsed;
                DeviseComboBox.Visibility  = Visibility.Collapsed;
                PaysComboBox.Visibility    = Visibility.Collapsed;
                PaysTextBlock.Visibility   = Visibility.Collapsed;
                ViewModel.SelectedDevise   = DeviseUtils.GetDevise(param.BanqueInfo.IdDevise);
            }

            if (param.Mode == ModeOuvertureGestionCompteBanqueEnum.OuvertureAjouterCompte)
            {
                InfoPageTextBlock.Text     = ResourceLoader.GetForCurrentView().GetString("AjouterCompteText");
                TitreTextBlock.Text        = ResourceLoader.GetForCurrentView().GetString("AjouterCompteText");
                ValiderButton.Content      = ResourceLoader.GetForCurrentView().GetString("AjouterText");
                DeviseTextBlock.Visibility = Visibility.Collapsed;
                DeviseComboBox.Visibility  = Visibility.Collapsed;
                PaysComboBox.Visibility    = Visibility.Collapsed;
                PaysTextBlock.Visibility   = Visibility.Collapsed;
                ViewModel.IdParent         = param.BanqueInfo.Id;
                ViewModel.SelectedDevise   = DeviseUtils.GetDevise(param.BanqueInfo.IdDevise);
            }

            if (param.Mode == ModeOuvertureGestionCompteBanqueEnum.OuvertureModifierCompte)
            {
                InfoPageTextBlock.Text     = ResourceLoader.GetForCurrentView().GetString("ModifierCompteText");
                TitreTextBlock.Text        = ResourceLoader.GetForCurrentView().GetString("ModifierCompteText");
                ValiderButton.Content      = ResourceLoader.GetForCurrentView().GetString("ModifierText");
                DeviseTextBlock.Visibility = Visibility.Collapsed;
                DeviseComboBox.Visibility  = Visibility.Collapsed;
                PaysComboBox.Visibility    = Visibility.Collapsed;
                PaysTextBlock.Visibility   = Visibility.Collapsed;
                SoldeTextBlock.Visibility  = Visibility.Collapsed;
                SoldeGrid.Visibility       = Visibility.Collapsed;
                ViewModel.Nom            = param.CompteInfo.Nom;
                ViewModel.IdElement      = param.CompteInfo.Id;
                ViewModel.IdParent       = param.CompteInfo.IdBanque;
                ViewModel.SelectedDevise = DeviseUtils.GetDevise(param.CompteInfo.IdDevise);
            }

            _info   = param;
            _isLoad = true;
        }
コード例 #17
0
        /// <summary>
        /// Sauvegarde un virement
        /// </summary>
        /// <param name="mouvement">le mouvement d'origine du virement</param>
        /// <param name="idCompte">l'id du compte sur lequel s'effectue sur le virement</param>
        /// <returns>la task</returns>
        public async Task SaveVirement(Mouvement mouvement, int idCompte)
        {
            var       create = mouvement.Id == 0;
            Mouvement mouvementA;
            Mouvement mouvementB;

            //mise à jour
            if (!create)
            {
                var mouvementAOld =
                    await Bdd.Connection.Table <Mouvement>().Where(x => x.Id == mouvement.Id).FirstOrDefaultAsync();

                var mouvementBOld =
                    await
                    Bdd.Connection.Table <Mouvement>()
                    .Where(x => x.Id == mouvementAOld.IdMouvementVirement)
                    .FirstOrDefaultAsync();

                var idDeviseA =
                    (await
                     Bdd.Connection.Table <Compte>().Where(x => x.Id == mouvementAOld.IdCompte).FirstOrDefaultAsync())
                    .IdDevise;

                var idDeviseB =
                    (await
                     Bdd.Connection.Table <Compte>().Where(x => x.Id == idCompte).FirstOrDefaultAsync())
                    .IdDevise;

                await Bdd.DeleteDonnee(mouvementBOld);
                await CalculerSolde(null, mouvementBOld);

                mouvementA = mouvement;

                mouvementB = new Mouvement
                {
                    Id            = 0,
                    Commentaire   = mouvementA.Commentaire,
                    Credit        = DeviseUtils.ConvertisseurMonnaie(idDeviseA, idDeviseB, mouvementA.Debit),
                    Debit         = DeviseUtils.ConvertisseurMonnaie(idDeviseA, idDeviseB, mouvementA.Credit),
                    Date          = mouvementA.Date,
                    IdCompte      = idCompte,
                    ModeMouvement = mouvementA.ModeMouvement,
                    Numero        = mouvementA.Numero,
                    IdType        = mouvementA.IdType,
                    IsTypePerso   = mouvementA.IsTypePerso
                };

                var idMax  = 0;
                var residR = (await Bdd.Connection.Table <Mouvement>().OrderByDescending(x => x.Id).FirstOrDefaultAsync());
                if (residR != null)
                {
                    idMax = residR.Id;
                }

                var mouvementBId = idMax + 1;
                mouvementA.IdMouvementVirement = mouvementBId;

                mouvementB.Id = mouvementBId;
                mouvementB.IdMouvementVirement = mouvementA.Id;

                await Bdd.UpdateDonnee(mouvementA);
                await CalculerSolde(mouvementA, mouvementAOld);

                await Bdd.AjouterDonnee(mouvementB);
                await CalculerSolde(mouvementB, null);
            }
            else //création
            {
                mouvementA = mouvement;

                var idDeviseA =
                    (await
                     Bdd.Connection.Table <Compte>().Where(x => x.Id == mouvementA.IdCompte).FirstOrDefaultAsync())
                    .IdDevise;

                var idDeviseB =
                    (await
                     Bdd.Connection.Table <Compte>().Where(x => x.Id == idCompte).FirstOrDefaultAsync())
                    .IdDevise;

                mouvementB = new Mouvement
                {
                    Id            = 0,
                    Commentaire   = mouvementA.Commentaire,
                    Credit        = DeviseUtils.ConvertisseurMonnaie(idDeviseA, idDeviseB, mouvementA.Debit),
                    Debit         = DeviseUtils.ConvertisseurMonnaie(idDeviseA, idDeviseB, mouvementA.Credit),
                    Date          = mouvementA.Date,
                    IdCompte      = idCompte,
                    ModeMouvement = mouvementA.ModeMouvement,
                    Numero        = mouvementA.Numero,
                    IdType        = mouvementA.IdType,
                    IsTypePerso   = mouvementA.IsTypePerso
                };

                var idMax  = 0;
                var residR = (await Bdd.Connection.Table <Mouvement>().OrderByDescending(x => x.Id).FirstOrDefaultAsync());
                if (residR != null)
                {
                    idMax = residR.Id;
                }

                var mouvementAId = idMax + 1;
                var mouvementBId = idMax + 2;

                mouvementA.Id = mouvementAId;
                mouvementA.IdMouvementVirement = mouvementBId;

                mouvementB.Id = mouvementBId;
                mouvementB.IdMouvementVirement = mouvementAId;

                await Bdd.AjouterDonnee(mouvementA);
                await CalculerSolde(mouvementA, null);

                await Bdd.AjouterDonnee(mouvementB);
                await CalculerSolde(mouvementB, null);
            }
        }
コード例 #18
0
        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);
        }