예제 #1
0
        // chargement des données de la base dans les différentes collections statique de la classe Globale
        // dans cette méthode pas de bloc try catch car aucune erreur imprévisible en production ne doit se produire
        // en cas d'erreur en développement il faut laisser faire le debogueur de VS qui va signaler la ligne en erreur
        static public void chargerDonnees()
        {
            cnx.Open();

            // Chargement des objets Motifs
            MySqlCommand cmd = new MySqlCommand()
            {
                Connection  = cnx,
                CommandText = "getLesMotifs",
                CommandType = CommandType.StoredProcedure
            };
            var curseur = cmd.ExecuteReader();

            while (curseur.Read())
            {
                int    id        = (Int32)curseur["id"];
                string unLibelle = (string)curseur["libelle"];
                // création de l'objet et ajout dans donnees
                Motif unMotif = new Motif(id, unLibelle);
                Globale.LesMotifs.Add(unMotif);
            }
            curseur.Close();

            // Chargement des objets TypePraticien : on utilise le même objet Command on change juste le nom de la procédure stockée à exécuter

            cmd.CommandText = "getLesTypes";
            curseur         = cmd.ExecuteReader();
            while (curseur.Read())
            {
                string id        = curseur["id"].ToString();
                string unLibelle = curseur["libelle"].ToString();
                // création de l'objet et ajout dans donnees
                TypePraticien unType = new TypePraticien(id, unLibelle);
                Globale.LesTypes.Add(unType);
            }
            curseur.Close();


            // Chargement des objets Specialite
            cmd.CommandText = "getLesSpecialites";
            curseur         = cmd.ExecuteReader();
            while (curseur.Read())
            {
                string id        = curseur["id"].ToString();
                string unLibelle = curseur["libelle"].ToString();
                // création de l'objet et ajout dans donnees
                Specialite uneSpecialite = new Specialite(id, unLibelle);
                Globale.LesSpecialites.Add(uneSpecialite);
            }
            curseur.Close();

            // Chargement des objets Famille
            cmd.CommandText = "getLesFamilles";
            curseur         = cmd.ExecuteReader();
            while (curseur.Read())
            {
                string id        = (string)curseur["id"];
                string unLibelle = (string)curseur["libelle"];
                // création de l'objet et ajout dans donnees
                Famille uneFamille = new Famille(id, unLibelle);
                Globale.LesFamilles.Add(id, uneFamille);
            }
            curseur.Close();

            // chargement des objets médicaments
            cmd.CommandText = "getLesMedicaments";
            curseur         = cmd.ExecuteReader();
            while (curseur.Read())
            {
                string id               = (string)curseur["id"];
                string nom              = (string)curseur["nom"];
                string composition      = (string)curseur["composition"];
                string effet            = (string)curseur["effets"];
                string contreIndication = (string)curseur["contreIndication"];
                string idFamille        = (string)curseur["idFamille"];
                // récupération de l'objet Famille
                Famille uneFamille = Globale.LesFamilles[idFamille];
                // création de l'objet et ajout dans donnees
                Medicament unMedicament = new Medicament(id, nom, composition, effet, contreIndication, uneFamille);
                Globale.LesMedicaments.Add(unMedicament);
            }
            curseur.Close();

            // chargement des praticiens
            cmd.CommandText = "getLesPraticiens";
            cmd.Parameters.AddWithValue("idVisiteur", Globale.LeVisiteur.Id);
            curseur = cmd.ExecuteReader();
            while (curseur.Read())
            {
                int    id           = (Int32)curseur["id"];
                string nom          = (string)curseur["nom"];
                string prenom       = (string)curseur["prenom"];
                string rue          = (string)curseur["rue"];
                string codePostal   = (string)curseur["codePostal"];
                string ville        = (string)curseur["ville"];
                string email        = (string)curseur["email"];
                string telephone    = (string)curseur["telephone"];
                string idType       = (string)curseur["idType"];
                string idSpecialite = curseur.IsDBNull(9) ? null : (string)curseur["idSpecialite"];
                // création de l'objet et ajout dans l'objet db.LeVisiteur
                TypePraticien unType        = Globale.LesTypes.Find(x => x.Id == idType);
                Specialite    uneSpecialite = null;
                if (idSpecialite != null)
                {
                    uneSpecialite = Globale.LesSpecialites.Find(x => x.Id == idSpecialite);
                }

                Praticien unPraticien = new Praticien(id, nom, prenom, rue, codePostal, ville, email, telephone, unType, uneSpecialite);
                Globale.LeVisiteur.ajouterPraticien(unPraticien);
            }
            curseur.Close();


            // chargement des visites du visiteur connecté
            cmd.CommandText = "getLesVisites";
            // pas de changement au niveau des paramètres à transmettre : on garde l'id du visiteur avec la même valeur
            curseur = cmd.ExecuteReader();
            while (curseur.Read())
            {
                int idVisite    = (Int32)curseur["id"];
                int idPraticien = (Int32)curseur["idPraticien"];
                int idMotif     = (Int32)curseur["idMotif"];

                DateTime dateEtHeure = curseur.GetDateTime(1);
                // récupération des objets liés
                Motif     unMotif     = Globale.LesMotifs.Find(x => x.Id == idMotif);
                Praticien unPraticien = Globale.LeVisiteur.getPraticien(idPraticien);
                // création de l'objet visite qui est automatiquement ajouté dans la collection des visites du visiteur
                Visite uneVisite = new Visite(idVisite, unPraticien, unMotif, dateEtHeure, Globale.LeVisiteur);
                // si le bilan est enregistré
                if (!curseur.IsDBNull(4))
                {
                    // initialisation du bilan et du premierMedicament
                    string     bilan        = curseur["bilan"].ToString();
                    string     idMedicament = curseur["premierMedicament"].ToString();
                    Medicament premier      = Globale.LesMedicaments.Find(x => x.Id == idMedicament);
                    Medicament second       = null;
                    // initialisation éventuelle du second médicament s'il est renseigné
                    if (!curseur.IsDBNull(6))
                    {
                        idMedicament = curseur["secondMedicament"].ToString();
                        second       = Globale.LesMedicaments.Find(x => x.Id == idMedicament);
                    }
                    uneVisite.enregistrerBilan(bilan, premier, second);
                    // le chargement des échantillons s'effetue globalement à la fin
                }
            }
            curseur.Close();

            // chargement de la synthèse des échantillons distribués par le visiteur
            cmd.CommandText = "getLesEchantillons";
            // pas de changement au niveau des paramètres à transmettre : on garde l'id du visiteur avec la même valeur
            curseur = cmd.ExecuteReader();
            while (curseur.Read())
            {
                string idMedicament = curseur["idMedicament"].ToString();
                int    quantite     = (Int32)curseur["quantite"];
                int    idVisite     = (Int32)curseur["idVisite"];
                //trouver la visite correspondante
                Medicament unMedicament = Globale.LesMedicaments.Find(x => x.Id == idMedicament);
                Visite     uneVisite    = Globale.LeVisiteur.getLaVisite(idVisite);
                uneVisite.ajouterEchantillon(unMedicament, quantite);
            }
            // chargement des villes du département du visiteur pour la mise en place de l'auto complétion sur l'ajout d'un praticien
            // [ à compléter]
            cnx.Close();
        }