private void OnSelectDirectoryDialogMessage(SelectDirectoryDialogMessage msg) { var dialog = new FolderBrowserDialog(); var result = dialog.ShowDialog(); msg.Path = dialog.SelectedPath; }
public Task ExportAsync(IEnumerable <AnonymousStudent> students) { var msg = new SelectDirectoryDialogMessage(); messenger.Send(msg); if (string.IsNullOrEmpty(msg.Path)) { messenger.Send(new DialogMessage { Title = "Vorgang abgebrochen", Header = "Export abgebrochen", Text = "Es wurden keine Daten exportiert." }); return(Task.CompletedTask); } return(Task.Run(() => { var grades = students.Select(s => s.Grade).Distinct().ToList(); var i = 0; foreach (var grade in grades) { OnRaiseProgressChangedEvent(new ProgressChangedEventArgs(i, grades.Count, $"Exportiere CSV-Dateien ({i + 1}/{grades.Count})...")); var path = Path.Combine(msg.Path, string.Format(FileFormat, grade)); var studentsInGrade = students.Where(s => s.Grade == grade).ToList(); using (var writer = new StreamWriter(path, false, Encoding.UTF8)) { using (var csv = new CsvWriter(writer)) { csv.WriteRecords(studentsInGrade); } } i++; } })); }