public async Task <IActionResult> DirectDownloadAsync(int id, CancellationToken cancellationToken) { var item = await _downloadProcessService.GetByIdAsync(id, cancellationToken); if (item == null) { throw new EntityNotFoundException(nameof(UserInfo), id); } var filePath = _uriComposer.ComposeDownloadPath(item.FileName); var fileExtension = Path.GetExtension(filePath).ToLower(); var mimeType = $"application/{fileExtension}"; if (fileExtension == "pdf") { mimeType = "application/pdf"; } else if (fileExtension == "xlsx") { mimeType = "application/xlsx"; } var fileName = $"download{fileExtension}"; byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); return(File(fileBytes, mimeType, fileName)); }
public async Task <IActionResult> DownloadDataAsync( [FromQuery] Dictionary <string, Dictionary <string, List <string> > > filter = default, [FromQuery] Dictionary <string, int> sorting = default, [FromQuery] Dictionary <string, int> exact = default, CancellationToken cancellationToken = default) { InitUserInfo(); if (!AllowDownload) { return(ValidationProblem()); } CleanFilter(filter); Dictionary <string, List <string> > filterParams = new Dictionary <string, List <string> >(); foreach (string fieldName in filter.Keys) { if (filter[fieldName].Count <= 0) { continue; } filterParams.Add(fieldName, new List <string>()); foreach (var itemValue in filter[fieldName][""]) { filterParams[fieldName].Add(itemValue); } } int? id = (filterParams.ContainsKey("id") ? int.Parse(filterParams["id"][0]) : null); List <string> poNumber = (filterParams.ContainsKey("poNumber") ? filterParams["poNumber"] : null); DateTime? poDateFrom = (filterParams.ContainsKey("poDateFrom") ? DateTime.Parse(filterParams["poDateFrom"][0]) : null); DateTime? poDateTo = (filterParams.ContainsKey("poDateTo") ? DateTime.Parse(filterParams["poDateTo"][0]) : null); List <string> remarks = (filterParams.ContainsKey("remarks") ? filterParams["remarks"] : null); string fileName = Guid.NewGuid().ToString() + ".xlsx"; var excelFile = _uriComposer.ComposeDownloadPath(fileName); string key = await _purchaseOrderService.GenerateExcelBackgroundProcess(excelFile, id, poNumber, poDateFrom, poDateTo, remarks, exact, cancellationToken); Dictionary <string, string> result = new Dictionary <string, string>() { { "id", key } }; return(Ok(result)); /* * string generatedFilename = await _purchaseOrderService.GenerateExcel(excelFile, null, * id, poNumber, poDateFrom, poDateTo, remarks, * exact, cancellationToken); * fileName = "PurchaseOrder.xlsx"; * byte[] fileBytes = System.IO.File.ReadAllBytes(generatedFilename); * return File(fileBytes, "application/xlsx", fileName); */ }
public async Task <IActionResult> DownloadDataAsync( [FromQuery] Dictionary <string, Dictionary <string, List <string> > > filter = default, [FromQuery] Dictionary <string, int> sorting = default, [FromQuery] Dictionary <string, int> exact = default, CancellationToken cancellationToken = default) { InitUserInfo(); if (!AllowDownload) { return(ValidationProblem()); } CleanFilter(filter); Dictionary <string, List <string> > filterParams = new Dictionary <string, List <string> >(); foreach (string fieldName in filter.Keys) { if (filter[fieldName].Count <= 0) { continue; } filterParams.Add(fieldName, new List <string>()); foreach (var itemValue in filter[fieldName][""]) { filterParams[fieldName].Add(itemValue); } } string id = (filterParams.ContainsKey("id") ? filterParams["id"][0] : string.Empty); List <string> partName = (filterParams.ContainsKey("partName") ? filterParams["partName"] : null); List <string> description = (filterParams.ContainsKey("description") ? filterParams["description"] : null); string fileName = Guid.NewGuid().ToString() + ".xlsx"; var excelFile = _uriComposer.ComposeDownloadPath(fileName); string key = await _partService.GenerateExcelBackgroundProcess(excelFile, id, partName, description, exact, cancellationToken); Dictionary <string, string> result = new Dictionary <string, string>() { { "id", key } }; return(Ok(result)); /* * string generatedFilename = await _partService.GenerateExcel(excelFile, null, * id, partName, description, * exact, cancellationToken); * fileName = "Part.xlsx"; * byte[] fileBytes = System.IO.File.ReadAllBytes(generatedFilename); * return File(fileBytes, "application/xlsx", fileName); */ }
public string GeneratePdf(PurchaseOrder entity, CancellationToken cancellationToken = default) { if (entity == null) { throw new ArgumentNullException(nameof(entity)); } cancellationToken.ThrowIfCancellationRequested(); // read template string templateFile = _uriComposer.ComposeTemplatePath("purchase_order.html"); string htmlContent = File.ReadAllText(templateFile); htmlContent = MapTemplateValue(htmlContent, entity); // prepare destination pdf string pdfFileName = DateTime.Now.ToString("yyyyMMdd_hhmmss_") + Guid.NewGuid().ToString() + ".pdf"; string fullPdfFileName = _uriComposer.ComposeDownloadPath(pdfFileName); ConverterProperties converterProperties = new ConverterProperties(); HtmlConverter.ConvertToPdf(htmlContent, new FileStream(fullPdfFileName, FileMode.Create), converterProperties); return(fullPdfFileName); }
public async Task <IActionResult> DownloadDataAsync( [FromQuery] Dictionary <string, Dictionary <string, List <string> > > filter = default, [FromQuery] Dictionary <string, int> sorting = default, [FromQuery] Dictionary <string, int> exact = default, CancellationToken cancellationToken = default) { InitUserInfo(); if (!AllowDownload) { return(ValidationProblem()); } CleanFilter(filter); Dictionary <string, List <string> > filterParams = new Dictionary <string, List <string> >(); foreach (string fieldName in filter.Keys) { if (filter[fieldName].Count <= 0) { continue; } filterParams.Add(fieldName, new List <string>()); foreach (var itemValue in filter[fieldName][""]) { filterParams[fieldName].Add(itemValue); } } int? id = (filterParams.ContainsKey("id") ? int.Parse(filterParams["id"][0]) : null); List <int> purchaseRequestId = null; if (filterParams.ContainsKey("purchaseRequestId")) { purchaseRequestId = new List <int>(); foreach (var item in filterParams["purchaseRequestId"]) { var data = int.Parse(item); purchaseRequestId.Add(data); } } List <string> partId = (filterParams.ContainsKey("partId") ? filterParams["partId"] : null); List <int> qty = null; if (filterParams.ContainsKey("qty")) { qty = new List <int>(); foreach (var item in filterParams["qty"]) { var data = int.Parse(item); qty.Add(data); } } DateTime?requestDateFrom = (filterParams.ContainsKey("requestDateFrom") ? DateTime.Parse(filterParams["requestDateFrom"][0]) : null); DateTime?requestDateTo = (filterParams.ContainsKey("requestDateTo") ? DateTime.Parse(filterParams["requestDateTo"][0]) : null); string fileName = Guid.NewGuid().ToString() + ".xlsx"; var excelFile = _uriComposer.ComposeDownloadPath(fileName); /* * string key = await _purchaseRequestDetailService.GenerateExcelBackgroundProcess(excelFile, * id, purchaseRequestId, partId, qty, requestDateFrom, requestDateTo, * exact, cancellationToken); * Dictionary<string, string> result = new Dictionary<string, string>() { {"id", key} }; * return Ok(result); */ string generatedFilename = await _purchaseRequestDetailService.GenerateExcel(excelFile, null, id, purchaseRequestId, partId, qty, requestDateFrom, requestDateTo, exact, cancellationToken); fileName = "PurchaseRequestDetail.xlsx"; byte[] fileBytes = System.IO.File.ReadAllBytes(generatedFilename); return(File(fileBytes, "application/xlsx", fileName)); }