// ************************************************************ // METHODES // ************************************************************ /// <summary> /// Insère la clé étrangère dans la classe Commune /// </summary> /// <param name="com">La commune</param> /// <param name="dept">Le département auquel appartient la commune</param> /// <returns></returns> public void insertionCleEtrangereCommune(Departement dept, short numDept, string libelleDepartement) { if (this.code_de_la_commune == "") { this.code_de_la_commune = "vide"; } Departement queryDepartement; //Si le département existait déjà, alors il a été mis à 0 if (dept.code_du_departement == 0) { using (var context = new electionEDM()) { //On va donc aller chercher dans la BDD le numdept gardé en mémoire depuis le fichier csv. Si il existe dans la bdd //on attribut la valeur du code departement en clé étrangère de la commune try { queryDepartement = (from dpt in context.Departement where dpt.code_du_departement == numDept select dpt).Single(); this.Departement = null; //On annule l'objet Département afin qu'entity n'essaie pas de l'insérer une nouvelle fois //dans la BDD this.code_du_departement = queryDepartement.code_du_departement; } catch { this.Departement = null; this.code_du_departement = numDept; } } } //Si le code_du_département n'est pas égal à 0, c'est qu'il n'était pas entré dans la bdd else { using (var context = new electionEDM()) { try { //par sécurité, on s'assure qu'il n'existait pas déjà quand même queryDepartement = (from dpt in context.Departement where dpt.code_du_departement == numDept select dpt).Single(); this.Departement = null; this.code_du_departement = queryDepartement.code_du_departement; } //Si il n'existait pas, on assigne en clé étrangère de la commune, le numéro de département gardé en mémoire //lors de la récupération des données dans le fichier csv catch { this.Departement = null; this.code_du_departement = numDept; } } } }
/// <summary> /// Insertion Données de la commune /// </summary> /// <param name="com"></param> public void insertionDonneesCommune(Departement dept) { using (var context = new electionEDM()) { context.Configuration.LazyLoadingEnabled = false; string query; //On effectue une requête pour voir si la commune n'existe pas déjà dans la bdd try { query = (from comm in context.Commune where comm.insee == this.insee select this.insee).Single(); } //Si elle n'était pas présente dans la bdd, on l'insère catch (InvalidOperationException e) { context.Commune.Add(this); //On insère la commune dans la base de données try { context.SaveChanges(); } catch (System.Data.Entity.Validation.DbEntityValidationException a) { foreach (var eve in a.EntityValidationErrors) { MessageBox.Show("L'insertion de la commune dans la base de données a rencontré une erreur"); } throw; } } } }
/// <summary> /// Permet de récupérer toutes les données issues du fichier csv election_municipale_2014 /// </summary> public static void recuperationDesDonnees(MainWindow pagePrincipale) { Candidat[] candidat = new Candidat[5]; Departement dept = new Departement(); Commune comm = new Commune(); stats_election stat = new stats_election(); Parti[] parti = new Parti[5]; Liste[] list = new Liste[5]; calcul_sieges[] csieges = new calcul_sieges[5]; election[] elect = new election[5]; bool leDepartementExiste; AnneeElection year = new AnneeElection(); year.annee = 2014; year.insertionAnnee(); string[][] allData = lireToutesLesDonnees(); //Lire toutes les données depuis le fichier csv et les stocker dans allData for (int i = 1; i < allData.Length; i++) { reinitialisationTableauDeDonnees(candidat, parti, list, csieges, elect); comm.reinitialisationCommune(); dept.reinitialisationDepartement(); stat.reinitialisationStatsElection(); for (int colonne = 0; colonne < 75; colonne++) { //La première ligne i = 0 n'est pas insérée car c'est le titre des colonnes if (i > 0) { switch (colonne) { //code du département case 1: //Si le département n'existe pas, on modifie la classe Departement leDepartementExiste = leDepartementExisteDeja(Convert.ToSByte(allData[i][colonne])); if (!leDepartementExiste) { dept.code_du_departement = Convert.ToSByte(allData[i][colonne]); } //comm.Departement = new Departement(); //comm.Departement.code_du_departement = Convert.ToSByte(allData[i][colonne]); ; break; //type du scrutin case 2: break; //libelle_du_departement case 3: leDepartementExiste = leDepartementExisteDeja(Convert.ToSByte(allData[i][1])); if (!leDepartementExiste) { dept.libelle_du_departement = allData[i][colonne]; } //comm.Departement.libelle_du_departement = allData[i][colonne]; break; //code de la commune case 4: if (allData[i][colonne] == "") { comm.code_de_la_commune = "vide"; } comm.code_de_la_commune = allData[i][colonne]; break; //libelle_de_la_commune case 5: comm.libelle_de_la_commune = allData[i][colonne]; break; //insee case 6: comm.insee = allData[i][colonne]; break; //geo_point_2 case 7: comm.geo_point_2d = allData[i][colonne]; break; //geo_shape case 8: comm.geo_shape = allData[i][colonne]; break; //inscrits case 9: stat.inscrits = Convert.ToInt32(allData[i][colonne]); break; //abstentions case 10: stat.abstentions = Convert.ToInt32(allData[i][colonne]); break; //votants case 12: stat.votants = Convert.ToInt32(allData[i][colonne]); break; //blancs_et_nuls case 14: stat.blancs_et_nuls = Convert.ToInt32(allData[i][colonne]); break; //exprimes case 17: stat.exprimes = Convert.ToInt32(allData[i][colonne]); break; //code_nuance case 20: parti[0].code_nuance = allData[i][colonne]; break; //sexe_01 case 21: candidat[0].sexe = allData[i][colonne]; break; //nom_01 case 22: candidat[0].nom = allData[i][colonne]; break; //prenom_01 case 23: candidat[0].prenom = allData[i][colonne]; break; //liste_01 case 24: list[0].nomListe = allData[i][colonne]; break; //sieges_elu_01 case 25: csieges[0].sieges_elus = Convert.ToSByte(allData[i][colonne]); break; //sieges_secteur_01 case 26: csieges[0].sieges_secteurs = Convert.ToSByte(allData[i][colonne]); break; //sieges_cc_01 case 27: csieges[0].sieges_cc = Convert.ToSByte(allData[i][colonne]); break; //voix_01 case 28: elect[0].voix = Convert.ToInt32(allData[i][colonne]); break; //code_nuance_02 case 31: parti[1].code_nuance = allData[i][colonne]; break; //sexe_02 case 32: candidat[1].sexe = allData[i][colonne]; break; //nom_02 case 33: candidat[1].nom = allData[i][colonne]; break; //prenom_02 case 34: candidat[1].prenom = allData[i][colonne]; break; //liste_02 case 35: list[1].nomListe = allData[i][colonne]; break; //sieges_elu_02 case 36: csieges[1].sieges_elus = Convert.ToSByte(allData[i][colonne]); break; //sieges_secteur_02 case 37: csieges[1].sieges_secteurs = Convert.ToSByte(allData[i][colonne]); break; //sieges_cc_02 case 38: csieges[1].sieges_cc = Convert.ToSByte(allData[i][colonne]); break; //voix_02 case 39: elect[1].voix = Convert.ToInt32(allData[i][colonne]); break; // code nuance_03 case 42: if (allData[i][colonne] != "") { parti[2].code_nuance = allData[i][colonne]; } break; //sexe_03 case 43: if (allData[i][colonne] != "") { candidat[2].sexe = allData[i][colonne]; } break; //nom_03 case 44: if (allData[i][colonne] != "") { candidat[2].nom = allData[i][colonne]; } break; //prenom_03 case 45: if (allData[i][colonne] != "") { candidat[2].prenom = allData[i][colonne]; } break; //liste_03 case 46: if (allData[i][colonne] != "") { list[2].nomListe = allData[i][colonne]; } break; //sieges_elu_03 case 47: if (allData[i][colonne] != "") { csieges[2].sieges_elus = Convert.ToSByte(allData[i][colonne]); } break; //sieges_secteur_03 case 48: if (allData[i][colonne] != "") { csieges[2].sieges_secteurs = Convert.ToSByte(allData[i][colonne]); } break; //sieges_cc_03 case 49: if (allData[i][colonne] != "") { csieges[2].sieges_cc = Convert.ToSByte(allData[i][colonne]); } break; //voix_03 case 50: if (allData[i][colonne] != "") { elect[2].voix = Convert.ToInt32(allData[i][colonne]); } break; // code nuance_04 case 53: if (allData[i][colonne] != "") { parti[3].code_nuance = allData[i][colonne]; } break; //sexe_04 case 54: if (allData[i][colonne] != "") { candidat[3].sexe = allData[i][colonne]; } break; //nom_04 case 55: if (allData[i][colonne] != "") { candidat[3].nom = allData[i][colonne]; } break; //prenom_04 case 56: if (allData[i][colonne] != "") { candidat[3].prenom = allData[i][colonne]; } break; //liste_04 case 57: if (allData[i][colonne] != "") { list[3].nomListe = allData[i][colonne]; } break; //sieges_elus_04 case 58: if (allData[i][colonne] != "") { csieges[3].sieges_elus = Convert.ToSByte(allData[i][colonne]); } break; //sieges_secteur_04 case 59: if (allData[i][colonne] != "") { csieges[3].sieges_secteurs = Convert.ToSByte(allData[i][colonne]); } break; //sieges_cc_04 case 60: if (allData[i][colonne] != "") { csieges[3].sieges_cc = Convert.ToSByte(allData[i][colonne]); } break; //voix_04 case 61: if (allData[i][colonne] != "") { elect[3].voix = Convert.ToInt32(allData[i][colonne]); } break; // code_nuance_05 case 64: if (allData[i][colonne] != "") { parti[4].code_nuance = allData[i][colonne]; } break; //sexe_05 case 65: if (allData[i][colonne] != "") { candidat[4].sexe = allData[i][colonne]; } break; //nom_05 case 66: if (allData[i][colonne] != "") { candidat[4].nom = allData[i][colonne]; } break; //prenom_05 case 67: if (allData[i][colonne] != "") { candidat[4].prenom = allData[i][colonne]; } break; //liste_05 case 68: if (allData[i][colonne] != "") { list[4].nomListe = allData[i][colonne]; } break; //sieges_elu_05 case 69: if (allData[i][colonne] != "") { csieges[4].sieges_elus = Convert.ToSByte(allData[i][colonne]); } break; //sieges_secteur_05 case 70: if (allData[i][colonne] != "") { csieges[4].sieges_secteurs = Convert.ToSByte(allData[i][colonne]); } break; //sieges_cc_05 case 71: if (allData[i][colonne] != "") { csieges[4].sieges_cc = Convert.ToSByte(allData[i][colonne]); } break; //voix_05 case 72: if (allData[i][colonne] != "") { elect[4].voix = Convert.ToInt32(allData[i][colonne]); } break; } //Fin du switch if (colonne == 74) { using (var context = new electionEDM()) { dept.insertionDonneesDepartement(); parti[0].insertionDonneesParti(parti); comm.insertionCleEtrangereCommune(dept, Convert.ToSByte(allData[i][1]), allData[i][3]); comm.insertionDonneesCommune(dept); list[0].insertionCleEtrangereListe(list, parti); list[0].insertionDonneesListe(list); candidat[0].insertionCleEtrangereCandidat(candidat, list); candidat[0].insertionDonneesCandidat(candidat); elect[0].insertionCleEtrangereElection(elect, year, candidat, comm); elect[0].insertionDonneesElection(elect); stat.insertionCleEtrangereStatsElection(year, comm); stat.insertionDonneesStatElection(year, comm); csieges[0].insertionCleEtrangereCalculSieges(csieges, comm, year, list); csieges[0].insertionDonneesCalculSieges(csieges, comm, year, list); } } } //Fin du if(i>0) } //Fin du for des colonnes pagePrincipale.modificationLabelInsertionLignes(i); } //Fin du for pour les lignes }