Пример #1
0
        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));
        }
Пример #2
0
        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);
 */
        }
Пример #3
0
        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);
 */
        }
Пример #4
0
        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);
        }
Пример #5
0
        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));
        }