private async Task <List <ClaimFilePage> > GenerateAllDocumentation(Claim claim) { List <ClaimFilePage> claimFilePages = new List <ClaimFilePage>(); if (claim.StateId != (long)ClaimState.eId.Pendiente_de_Presentación) { return(null); } var claimFiles = await getFileService.GetByClaimId(claim.Id, true); if (claimFiles == null) { return(null); } var filesToPrint = claimFiles.Where(file => !file.Printed).ToList(); foreach (var file in filesToPrint) { if (file.FileTypeId == (long)FileType.eId.reclamo) { continue; } 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)) { ClaimFilePage claimDocPage = new ClaimFilePage(); claimDocPage.Page = bFile; claimDocPage.ClaimId = claim.Id; claimFilePages.Add(claimDocPage); } } 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)) { ClaimFilePage claimDocPage = new ClaimFilePage(); claimDocPage.Page = bFileFromImage; claimDocPage.ClaimId = claim.Id; claimFilePages.Add(claimDocPage); } } } } await updateFileService.MarkAsPrinted(filesToPrint); return(claimFilePages); }
private async Task <ClaimFilePage> GenerateReconsideration(Claim claim, string htmlTemplate) { if (claim.StateId != (long)ClaimState.eId.Ofrecimiento_Rechazado) { return(null); } ClaimFilePage claimDocPage = new ClaimFilePage(); var template = await ReemplaceTags(htmlTemplate, claim); var pdf = await htmlToPdfHelperService.GetFile(template); if (await CanAdd(pdf)) { claimDocPage.Page = pdf; claimDocPage.ClaimId = claim.Id; } return(claimDocPage); }
private async Task <List <ClaimFilePage> > GenerateConvenioFirmado(Claim claim, string userName) { List <ClaimFilePage> claimFilePages = new List <ClaimFilePage>(); if (claim.StateId != (long)ClaimState.eId.Convenio_Firmado) { return(null); } var claimFiles = await getFileService.GetByClaimId(claim.Id, true); if (claimFiles == null) { return(null); } var filesToPrint = claimFiles.Where(file => file.FileTypeId == (long)FileType.eId.ConvenioFirmado).ToList(); if (filesToPrint == null) { return(null); } foreach (var file in filesToPrint) { ClaimFilePage claimDocPage = new ClaimFilePage(); byte[] bFile = Convert.FromBase64String(file.Base64); if (await CanAdd(bFile)) { claimDocPage.Page = bFile; claimDocPage.ClaimId = claim.Id; claimFilePages.Add(claimDocPage); } } await changeClaimStateService.ChangeState(claim, (long)ClaimState.eId.Pendiente_de_Pago, userName); await updateFileService.MarkAsPrinted(filesToPrint); return(claimFilePages); }
private async Task <ClaimFilePage> GenerateClaimPage(Claim claim, string htmlTemplate, string userName) { if (claim.StateId != (long)ClaimState.eId.Pendiente_de_Presentación) { return(null); } ClaimFilePage claimDocPage = new ClaimFilePage(); //Change state await changeClaimStateService.ChangeState(claim, (long)ClaimState.eId.Presentado, userName); var template = await ReemplaceTags(htmlTemplate, claim); var pdf = await htmlToPdfHelperService.GetFile(template); if (await CanAdd(pdf)) { claimDocPage.Page = pdf; claimDocPage.ClaimId = claim.Id; } return(claimDocPage); }
public async Task <byte[]> GetFileByInsuranceCompany(List <InsuranceCompany> insuranceCompanies, string userName) { var htmlTemplates = await getHtmlTemplatesService.GetHtmlTemplates(); if (htmlTemplates == null || !htmlTemplates.Any()) { throw new ArgumentException("No hay templates configurados."); } List <ClaimFilePage> claimFilePages = new List <ClaimFilePage>(); foreach (var company in insuranceCompanies) { ClaimFilePage claimFilePage = new ClaimFilePage(); var claims = await getClaimService.GetClaimByInsuranceCompany(company.Id); if (claims == null) { continue; } var cover = await GenerateCover(claims, htmlTemplates.Where(x => x.Id == 1).FirstOrDefault(), company.Name); if (await CanAdd(cover)) { claimFilePage.Page = cover; claimFilePages.Add(claimFilePage); } foreach (var claim in claims) { var allDoc = await GenerateAllDocumentation(claim); if (allDoc != null && allDoc.Any()) { claimFilePages.AddRange(allDoc); } if (claim.StateId == (long)ClaimState.eId.Pendiente_de_Presentación || !claim.Printed) { var claimDoc = htmlTemplates.Where(x => x.Id == 2).FirstOrDefault(); var claimDocPage = await GenerateClaimPage(claim, claimDoc.HtmlTemplate, userName); if (claimDocPage != null) { claimFilePages.Add(claimDocPage); } } var convenio = await GenerateConvenioFirmado(claim, userName); if (convenio != null && convenio.Any()) { claimFilePages.AddRange(convenio); } var reconsideration = htmlTemplates.Where(x => x.Id == 3).FirstOrDefault(); var reconsiderationPage = await GenerateReconsideration(claim, reconsideration.HtmlTemplate); if (reconsiderationPage != null) { claimFilePages.Add(reconsiderationPage); } //no estoy tan seguro de esto.. pero el cambio de estado estaba cuando se generaba el documento reclamo por primera vez y eso estaba incorrecto //await changeClaimStateService.ChangeState(claim, (long)ClaimState.eId.Presentado); } await updateClaimService.MarkAsPrinted(claims); } var result = await pdfMerge.MergeFiles(claimFilePages); return(result); }