Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }