public void AddExportedCsv(ExportedCsv entry) { ExportLog.Add(entry); }
private bool Export2Csv() { try { var fileName = App.Locator.Import.Document.Name + ".csv"; var filePath = Path.Combine(App.Locator.Settings.Settings.CsvFilesDirectory, fileName); var allowedFields = App.Locator.Import.ExportRules .Where(r => r.Rule != null && r.Rule != App.Locator.Import.NullRule && r.Sheet != null) .Select(er => er.Rule) .SelectMany(r => r.ConvertionData) .Where(cd => cd.Blocks != null && cd.Blocks.Blocks.Count > 0) .Select(cd => cd.PropertyId) .Distinct() .ToArray(); var props = OutputRow.ColumnOrder .Join(allowedFields, i => i.Value, a => a, (i, a) => i) .OrderBy(i => i.Key) .Select(i => i.Value) .ToArray(); string headerLine = (props.Length > 0) ? props.Select(p => $"\"{p}\"").Aggregate((s0, s1) => $"{s0};{s1}") : string.Empty; var rows = RowsToExport.Select(r => r.ToCsvString(props)).ToArray(); var allLines = string.IsNullOrEmpty(headerLine) ? rows : new[] { headerLine }.Union(rows).ToArray(); File.WriteAllLines(filePath, allLines, defaultEncoding); var exportedCsv = new ExportedCsv { ExportDate = DateTime.Now, FileName = fileName, Path = filePath, Id = Guid.NewGuid() }; App.Locator.ExportLog.AddExportedCsv(exportedCsv); return true; } catch { System.Windows.MessageBox.Show(@"Произошла ошибка, проверьте еще раз правило, корректность загрузки сетки, правильность пути к папке с файлами и попробуйте снова...", "Ошибка", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Information); } return false; }