public async Task <IActionResult> Get(long fileId) { try { var file = await getFileService.GetById(fileId); if (file == null) { return(NotFound()); } return(Ok(new { file = file.Adapt <ClaimFileDto>() })); } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, new { message = ex.Message })); } }
public async Task <byte[]> GetFile(List <long> claimIds, List <long> documentsIds, List <long> claimFileIds) { if (claimIds == null) { throw new ArgumentException("Claims null"); } if (documentsIds == null) { throw new ArgumentException("Documents null"); } var htmlTemplates = await getHtmlTemplatesService.GetHtmlTemplates(); if (htmlTemplates == null || !htmlTemplates.Any()) { throw new ArgumentException("No hay templates configurados."); } List <byte[]> files = new List <byte[]>(); List <Claim> claims = new List <Claim>(); foreach (var claimId in claimIds) { var claim = await getClaimService.GetById(claimId); if (claim == null) { continue; } claims.Add(claim); var documents = await ReplaceHtmlTags(htmlTemplates, claim); if (documents == null || !documents.Any()) { throw new ArgumentException("No hay templates configurados."); } foreach (var document in documents) { if (documentsIds.Contains(document.Id)) { if (await IsCover(document.Id)) { continue; } var pdf = await htmlToPdfHelperService.GetFile(document.HtmlTemplate); if (await CanAdd(pdf)) { files.Add(pdf); } } } } foreach (var claimfileId in claimFileIds) { var file = await getFileService.GetById(claimfileId); if (file != null) { if (file.FileName.ToLower().Contains(".pdf")) { //Si es pdf lo agrego directamente byte[] bFile = Convert.FromBase64String(file.Base64); if (await CanAdd(bFile)) { files.Add(bFile); } } else { //sino debe crear una nueva pagina de pdf a partir del archivo imagen, y luego la agrego byte[] bFile = Convert.FromBase64String(file.Base64); byte[] bFileFromImage = pdfMerge.CreatePdfFromFile(bFile); if (await CanAdd(bFileFromImage)) { files.Add(bFileFromImage); } } } } if (documentsIds.Contains(1)) { var cover = await GenerateCover(claims, htmlTemplates.Where(x => x.Id == 1).FirstOrDefault(), ""); if (await CanAdd(cover)) { files.Add(cover); } } if (!files.Any()) { throw new ApplicationException("No se han podido generar los documentos solicitados"); } //aqui deberian llegar solo archivos pdf var result = await pdfMerge.MergeFiles(files); return(result); }