using DemoVideo.Nbanque;
using DemoVideo.Ndal;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoVideo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Uniquement pour Module 2.3 , 2.4 , 2.5 création de Table 
            // Nutil.Util.CreateTable();  
            
            // Uniquement Pour Module 2.6  initialisation de Table 
            //Nutil.Util.InitTable(); 

            // Pour Module1 Creation du dao en memoire
             ICompteDao dao = new CompteDao();

            // Pour module 2  et 3 Creation du dao en base
            //   ICompteDao dao = new CompteDaoBD();

            // Recherche d'éléments 
            Compte cpt = dao.GetCompte("101");
            Console.WriteLine(cpt);
            (string numero, float solde) = dao.GetNumeroAndSolde("101");
            Console.WriteLine($"Numero: {numero} Solde : {solde}");
            Tuple<string, float> res = dao.GetNumeroAndSoldeTuple("101");
            Console.WriteLine($"Numero: {res.Item1} Solde : {res.Item2}");
            Console.WriteLine(dao.GetInformationCompte());

            // module 3.2 ajout en base 
            //Compte cpt2 = new Compte("110", DateTime.Now, 100);
            //dao.AjouterCompte(cpt2);
            //Compte cpt3 = dao.GetCompte("110");
            //Console.WriteLine(cpt3);

            //module 3.3 suppression en  base
            //bool resultat = dao.SupprimerCompte("110");
            //if (resultat)
            //    Console.WriteLine("Le compte a été supprimé");

            // module 3.4 modification base 
            //Compte cpt4 = dao.GetCompte("101");
            //dao.ModifierCompte(cpt4, 200);
            //Compte cpt5 = dao.GetCompte("101");
            //Console.WriteLine(cpt5);

            // module 3.5 requetage en sql natif 
            //Compte cpt2 = dao.GetCompteDirectSql("101");
            //Console.WriteLine(cpt2);

            Console.ReadLine();
        }
    }
}













//public static void requetageModeImmediat()
//{
//    List<int> listeEntiers = new List<int>
//                    {  1 , 2 , 3 , 4 , 5 , 3};
//    List<int> listeEntiersPair = (from unEntier in listeEntiers
//                                  where (unEntier % 2 == 0)
//                                  select unEntier).ToList();
//    foreach (int val in listeEntiersPair)
//        Console.Write(val + " ");
//}

//public static void requetageModeDiffere()
//{
//    List<int> listeEntiersPair;
//    List<int> listeEntiers =
//        new List<int> { 1, 2, 3, 4, 5, 3 };
//    var requete = from unEntier in listeEntiers
//                  where unEntier % 2 == 0
//                  select unEntier;
//    int nbrValeurs = requete.Count();
//    if (nbrValeurs == 0)
//        Console.WriteLine("Aucune valeur paire dans la liste");
//    else
//    {
//        listeEntiersPair = requete.ToList();
//        Console.WriteLine("Liste des entiers pair");
//        foreach (int val in listeEntiersPair)
//            Console.Write(val + " ");
//    }
//}


//public static void requetageLambda ()
//{
//    List<int> listeEntiers =
//     new List<int> { 1, 2, 3, 4, 5, 3 };
//    List<int> listeEntiersPair = listeEntiers.
//                        Where(valeur => valeur % 2 == 0)
//                        .ToList();
//    Console.WriteLine("Liste des entiers pair");
//    foreach (int val in listeEntiersPair)
//        Console.Write(val + " ");

//}
