/******************************************************************************* * /// Static Methods *******************************************************************************/ public static AbstractFormObject FromTextract(TextractDocument doc, FormType formType) { // Here we'll Determine the type of object (timesheet or mileage form) and then // return the correct type. // Grab the first page and make sure it is the front if (doc.PageCount() < 2) { throw new ArgumentException(); } AbstractFormObject form; switch (formType) { case FormType.OR526_ATTENDANT: case FormType.OR507_RELIEF: form = new TimesheetForm(); break; case FormType.OR004_MILEAGE: form = new MileageForm(); break; default: throw new ArgumentException(); } // Do a silly assignment because C# won't let me assign the variable in the foreach loop instead // and there is no default constructor Page frontpage = doc.GetPage(0); bool frontfound = false; List <Page> backpages = new List <Page>(); // Improve front page detection foreach (var page in doc.Pages) { if (!frontfound) { // Search for Service Delivered On: foreach (var line in page.GetLines()) { // Ever form has "Service Delivered On:" on the front page, so we use // this to determine if this is the front or back. frontfound = line.ToString().Contains("vice Delivered O"); if (frontfound) { break; } } if (frontfound) { frontpage = page; } else { backpages.Add(page); } } else { backpages.Add(page); } } if (!frontfound) { throw new ArgumentException(); } var formitems = frontpage.GetFormItems(); // Top Form Information form.clientName = formitems[0].Value.ToString().Trim(); // Customer Name form.prime = formitems[1].Value.ToString().Trim(); // Prime form.providerName = formitems[2].Value.ToString().Trim(); // Provider Name form.providerNum = formitems[3].Value.ToString().Trim(); // Provider Num form.brokerage = formitems[4].Value.ToString().Trim(); // CM Organization form.scpaName = formitems[5].Value.ToString().Trim(); // SC/PA Name form.serviceAuthorized = formitems[6].Value.ToString().Trim(); // Service // Table var tables = frontpage.GetTables(); if (tables.Count == 0) { Console.WriteLine("No Table Information"); return(form); } form.AddTables(tables); // Populate back form objects form.AddBackForm(backpages[0]); return(form); }