Ejemplo n.º 1
0
 public void AddExportedCsv(ExportedCsv entry)
 {
     ExportLog.Add(entry);
 }
Ejemplo n.º 2
0
        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;
        }