async Task GenerateFile() { var postResponse = await HttpClient.PostAsJsonAsync(_apiPostFileUrl, _options); postResponse.EnsureSuccessStatusCode(); var json = await postResponse.Content.ReadAsStringAsync(); ExportResult = JsonConvert.DeserializeObject <ExportResultViewModel>(json); ShowExportResultDialog = true; }
public async Task <ActionResult <ExportResultViewModel> > ExportReferential(ExportOptionsViewModel options) { IList <ExchangeDataRow> models = new List <ExchangeDataRow>(); var exportResult = new ExportResultViewModel(); if (options.IncludeFamily) { await ExportFamilies(models, options, exportResult); } if (options.IncludeCategory) { await ExportCategories(models, options, exportResult); } using var memo = new MemoryStream(); switch (options.FileType) { case ".xlsx": { using var xlsxWriter = new XlsWriter <ExchangeDataRow>(options, models, memo); xlsxWriter.Write(); exportResult.FileMimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; } case ".csv": { using var stmWriter = new StreamWriter(memo); using var csvWriter = new CsvWriter <ExchangeDataRow>(options, models, stmWriter); exportResult.FileMimeType = "text/csv"; csvWriter.Write(); stmWriter.Close(); break; } case ".xml": { using var stmWriter = new StreamWriter(memo); using var xmlWriter = new XmlWriter <ExchangeDataRow>(options, models, stmWriter); exportResult.FileMimeType = "application/xml"; xmlWriter.Write(); stmWriter.Close(); break; } } exportResult.FileContent = memo.ToArray(); return(Ok(exportResult)); }
private async Task ExportCategories(IList <ExchangeDataRow> models, ExportOptionsViewModel options, ExportResultViewModel exportResult) { List <AdsCategoryViewModel> categories = new List <AdsCategoryViewModel>(); if (!string.IsNullOrEmpty(options.Category)) { categories.AddRange(await _adsUnitOfWork.CategoriesRepository.FilterByIds(options.Category.Split(';').Select(i => Guid.Parse(i)).ToList())); } else { if (!string.IsNullOrEmpty(options.Family)) { categories.AddRange(await _adsUnitOfWork.CategoriesRepository.GetByFamily(Guid.Parse(options.Family))); } else { categories.AddRange(await _adsUnitOfWork.CategoriesRepository.GetAll()); } } exportResult.CategoriesExported = categories.Count; foreach (var category in categories) { ParseCategory(category, models); } }
private async Task ExportFamilies(IList <ExchangeDataRow> models, ExportOptionsViewModel options, ExportResultViewModel exportResult) { List <AdsFamilyViewModel> families = new List <AdsFamilyViewModel>(); if (!string.IsNullOrEmpty(options.Family)) { var family = await _adsUnitOfWork.FamiliesRepository.Get(Guid.Parse(options.Family)); families.Add(family); } else { families.AddRange(await _adsUnitOfWork.FamiliesRepository.GetAll()); } exportResult.FamiliesExported = families.Count; foreach (var family in families) { await ParseFamily(family, models); } }