private void OnSelectDirectoryDialogMessage(SelectDirectoryDialogMessage msg)
        {
            var dialog = new FolderBrowserDialog();
            var result = dialog.ShowDialog();

            msg.Path = dialog.SelectedPath;
        }
Esempio n. 2
0
        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++;
                }
            }));
        }