Ajout d'une fonctionnalité d'import/export CSV + amélioration de l'écran de démarrage

This commit is contained in:
2021-01-01 00:54:03 +01:00
parent d68c6b0f8a
commit e81b0b000a
7 changed files with 408 additions and 17 deletions

View File

@@ -200,7 +200,7 @@ namespace Hermes {
}
if(mails.Count > 0) {
if(noMail) {
MessageBox.Show("Certains des citoyens sélectionnés ne disposent pas d'une adresse E-Mail. Voulez-vous continuer ?", "Envoi de courriel", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
result = MessageBox.Show("Certains des citoyens sélectionnés ne disposent pas d'une adresse E-Mail. Voulez-vous continuer ?", "Envoi de courriel", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
if(result == MessageBoxResult.No) {
return;
}
@@ -255,10 +255,10 @@ namespace Hermes {
string villeSecondaire = citoyen.AdresseSecondaireVille == null ? "" : citoyen.AdresseSecondaireVille;
sb.AppendLine($"\"{civilite}\";\"{nom}\";\"{nomNaissance}\";\"{prenom}\";\"{profession}\";\"{typeResidence}\";\"{mail}\";\"{tel}\";\"{telPort}\";\"{quartier}\";\"{batiment}\";\"{numeroBatiment}\";\"{adresseLocale}\";\"{cpLocal}\";{villeLocale};\"{adressePrincipale}\";\"{cpPrincipal}\";\"{villePrincipale}\";\"{adresseSecondaire}\";\"{cpSecondaire}\";\"{villeSecondaire}\"");
File.WriteAllText(csvPath, sb.ToString(), Encoding.GetEncoding("ISO-8859-1"));
}
File.WriteAllText(csvPath, sb.ToString(), Encoding.GetEncoding("ISO-8859-1"));
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Document World|*.doc;*.docx;*.dotx|Tous les ficiers|*.*";
@@ -276,10 +276,56 @@ namespace Hermes {
private void Importer_Click(object sender, RoutedEventArgs e) {
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Classeur Excel|*.xls;*.xlsx;*.xlsm|Tous les ficiers|*.*";
ofd.Filter = "Fichiers de données|*.xls;*.xlsx;*.xlsm;*.csv";
if(ofd.ShowDialog() == true) {
ImportWindow importWindow = new ImportWindow(this, ofd.FileName);
importWindow.ShowDialog();
if(Path.GetExtension(ofd.FileName).ToLower().Equals(".csv")) {
try {
StreamReader reader = File.OpenText(ofd.FileName);
string csvHeader = reader.ReadLine();
if(csvHeader == null) {
return;
}
string[] fields = CitoyensSerializer.ParseHeader(csvHeader);
CitoyensSerializer serializer = new CitoyensSerializer(fields);
while(!reader.EndOfStream) {
string line = reader.ReadLine();
Citoyen citoyen = serializer.Deserialize(line);
if(citoyen != null) {
dbContext.CitoyenSet.Add(citoyen);
dbContext.SaveChanges();
}
}
} catch(Exception ex) {
MessageBox.Show("Erreur lors de l'import des données", "Importer", MessageBoxButton.OK, MessageBoxImage.Error);
}
} else {
ImportWindow importWindow = new ImportWindow(this, ofd.FileName);
importWindow.ShowDialog();
}
}
}
private void Exporter_Click(object sender, RoutedEventArgs e) {
if(dgCitoyens.SelectedItems.Count == 0) {
MessageBox.Show("Aucun citoyen sélectionné.", "Exporter", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Fichier CSV|*.csv";
sfd.OverwritePrompt = true;
if(sfd.ShowDialog() == true) {
try {
StreamWriter s = File.CreateText(sfd.FileName);
CitoyensSerializer serializer = new CitoyensSerializer();
s.WriteLine(serializer.GetCsvHeader());
foreach(Citoyen citoyen in dgCitoyens.SelectedItems) {
s.WriteLine(serializer.Serialize(citoyen));
}
s.Close();
} catch(Exception) {
MessageBox.Show("Erreur lors de l'export des données", "Exporter", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}