Ejemplo n.º 1
0
        public static async Task Run([BlobTrigger("parseddocuments/w2/{name}", Connection = "Documents")] CloudBlockBlob parsedBlob,
                                     [Blob("parseddocuments", Connection = "Documents")] CloudBlobContainer blobDirectory,
                                     [Blob("rawdocuments/{name}", FileAccess.Read)] Stream originalImage,
                                     [Blob("parseddocuments/markedup/{name}", FileAccess.ReadWrite)] CloudBlockBlob markedUpImage,
                                     ILogger log, Microsoft.Azure.WebJobs.ExecutionContext context, CancellationToken cancellationToken)
        {
            try
            {
                MortgageApplicationDocument mortgageApplicationDocument = new MortgageApplicationDocument();
                mortgageApplicationDocument.PopuplateFromBlobProperties(parsedBlob);
                mortgageApplicationDocument.HasParsedResults = true;
                mortgageApplicationDocument.DocumentType     = "w2";

                string jsonContents = await parsedBlob.DownloadTextAsync();

                ProcessedDocument document = JsonConvert.DeserializeObject <ProcessedDocument>(jsonContents);

                CloudBlockBlob finalBlob = blobDirectory.GetBlockBlobReference(parsedBlob.Name.Replace("w2/", "final/"));
                mortgageApplicationDocument.Status        = MortgageApplicationStatus.Processed;
                mortgageApplicationDocument.DateProcessed = DateTimeOffset.UtcNow;
                mortgageApplicationDocument.SetBlobProperties(finalBlob);

                FindDataLine(document, "SSN", "Social Security Number", mortgageApplicationDocument, "a. Employee's social security number", "social security number", "Employee's soc. sec. number", "Employee's social security number");
                FindMoneyLine(document, "Wages", "Total Wages", mortgageApplicationDocument, "Wages");
                FindMoneyLine(document, "FedTax", "Federal Tax Witholding", mortgageApplicationDocument, "2. Federal income tax", "Federal income tax withheld");
                FindDataLine(document, "CopyType", "Copy Type", mortgageApplicationDocument, "Copy");
                FindMoneyLine(document, "SocialSecurityWage", "Social Security Wage", mortgageApplicationDocument, "Social security wages");
                FindMoneyLine(document, "SocialSecurityTax", "Social Security Tax", mortgageApplicationDocument, "Social security tax withheld");
                FindMoneyLine(document, "MedicareWage", "Medicare Wage", mortgageApplicationDocument, "Medicare wages and tips");
                FindMoneyLine(document, "MedicareTax", "Medicare Tax", mortgageApplicationDocument, "Medicare tax withheld");
                FindMoneyLine(document, "SocialSecurityTips", "Social Security Tips", mortgageApplicationDocument, "Social security tips");
                FindDataLine(document, "EmployerDetails", "Employer Details", mortgageApplicationDocument, "Employer's name, address, and ZIP code");
                FindDataLine(document, "EmployeeDetails", "Employee Details", mortgageApplicationDocument, "Employee's first name and initial", "Last name", "Employee's name, address, and ZIP code", "Employee's name (first, middle indial, last)");

                await finalBlob.UploadTextAsync(JsonConvert.SerializeObject(mortgageApplicationDocument));

                await MarkupService.HighlightHits(document, originalImage, markedUpImage);
            }
            catch (Exception ex)
            {
                log.LogError(ex, "W2 Processor Failed");
            }
        }