示例#1
0
        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 }));
            }
        }
示例#2
0
        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);
        }