コード例 #1
0
        private static string ImportPdfData(ParseOutput parseOutput, string pdfFileName)
        {
            var storedDocumentGuid = string.Empty;

            if (parseOutput.CSVFileName != string.Empty)
            {
                var statementGuid  = Guid.NewGuid().ToString();
                var simpleFileName = FileHelper.GetFileNameFromPath(pdfFileName) + ".pdf";

                // Import PDF Document
                storedDocumentGuid = StorePDF(statementGuid, pdfFileName, parseOutput);

                if (storedDocumentGuid != string.Empty)
                {
                    // Import data in CSV file
                    CsvImporter.ImportCsvFile(storedDocumentGuid, Settings.CsvOutputFolderPath + parseOutput.CSVFileName, pdfFileName, parseOutput.IsMiscDeposit, parseOutput.IsBonusStatement);
                }

                // Archive CSV File
                var archiveFolderPath = Settings.ImportArchiveFolderPath + simpleFileName + "\\";
                FileHelper.WipeDirectory(archiveFolderPath);
                FileHelper.MoveFile(Settings.CsvOutputFolderPath + parseOutput.CSVFileName, archiveFolderPath + parseOutput.CSVFileName);
            }

            return(storedDocumentGuid);
        }
コード例 #2
0
        private static void InterpretParameterPrime(ParseOutput ret, ParseOutput lhs, ParseOutput pprime)
        {
            /* Convert LHS PPRIME to either:
             *
             * if PPRIME.Children == 0:     LHS
             * else                   :     Expression(LHS, PPRIME.Children)
             */

            if (pprime.Children.Count == 0)
            {
                ret.Children.Add(lhs);
            }
            else
            {
                ParseOutput expression = new ParseOutput {
                    Type = ParseOutput.OutputType.Expression
                };
                expression.Children.Add(lhs);

                foreach (ParseOutput pprime_child in pprime.Children)
                {
                    // If its a Parameter with a solitary child, use that instead
                    if ((pprime_child.Type == ParseOutput.OutputType.Parameter) && (pprime_child.Children.Count == 1))
                    {
                        expression.Children.Add(pprime_child.Children[0]);
                    }
                    else
                    {
                        expression.Children.Add(pprime_child);
                    }
                }

                ret.Children.Add(expression);
            }
        }
コード例 #3
0
        internal static ParseOutput ParseParameterPrime(IList <Tokenizer.TokenDefinition> input, ref int i, bool is_directive)
        {
            // ParameterPrime: num_op parameter | empty (empty also consumes, but does not output, ',', and if(is_directive), ':')
            ParseOutput ret = new ParseOutput {
                Type = ParseOutput.OutputType.ParameterPrime
            };
            int start_i = i;

            // Try and match numop
            ParseOutput numop = ParseNumOp(input, ref i);

            if (numop != null)
            {
                ParseOutput param = ParseParameter(input, ref i, is_directive);
                if (param != null)
                {
                    ret.Children.Add(numop);
                    ret.Children.Add(param);
                    return(ret);
                }
                else
                {
                    // Rewind and fail
                    i = start_i;
                    return(null);
                }
            }

            // Else, consume commas and possibly colons
            while (MatchString(input, ",", ref i) || (is_directive && MatchString(input, ":", ref i)))
            {
                ;
            }
            return(ret);
        }
コード例 #4
0
        protected static string StorePDF(string statementGuid, string pdfFileName, ParseOutput parseOutput)
        {
            // Convert PDF to Base64 string
            var bytes             = File.ReadAllBytes(pdfFileName);
            var base64FileContent = Convert.ToBase64String(bytes);

            // Use Import Service to store the Base64 File content
            var importService = new PremiumTransactionServiceSoapClient();

            return(importService.StorePDF(Settings.AgencyId, parseOutput.CarrierName, statementGuid, base64FileContent, pdfFileName, false));
        }
コード例 #5
0
        internal override bool TryParse(ParseState state, ParseOutput output)
        {
            output.Add(new HtmlStartTag("p"));
            state.StartRun();
            var ch = state.ReadInlineOrCharacter(output);

            while (ch != Symbols.EndOfFile)
            {
                ch = state.ReadInlineOrCharacter(output);
            }
            output.Add(state.EndRun());
            output.Add(new HtmlEndTag("p"));
            return(true);
        }
コード例 #6
0
        internal static ParseOutput ParseBlock(IList <Tokenizer.TokenDefinition> input, ref int i)
        {
            // Match Line*
            ParseOutput ret = new ParseOutput {
                Type = ParseOutput.OutputType.Block
            };
            ParseOutput cur_line;

            while ((cur_line = ParseLine(input, ref i)) != null)
            {
                ret.Children.Add(cur_line);
            }
            return(ret);
        }
コード例 #7
0
        public static void WriteParseOutput(ParseOutput parseOutput)
        {
            var csvOutPut = new StringBuilder();

            csvOutPut.Append(
                $"{Settings.AgencyId}, {parseOutput.CarrierName}, {parseOutput.PdfFileName}, {parseOutput.ConverterName}, {parseOutput.StartTime}, {parseOutput.EndTime}, {parseOutput.Duration}, {parseOutput.CSVRowCount}\r\n");
            lock (_myLock)
            {
                if (parseOutput.CSVRowCount == 0)
                {
                    File.AppendAllText(@"c:\temp\PDFExtractEmptyFiles.csv", csvOutPut.ToString());
                }
                else
                {
                    File.AppendAllText(@"c:\temp\PDFExtract.csv", csvOutPut.ToString());
                }
            }
        }
コード例 #8
0
        internal override bool TryParse(ParseState state, ParseOutput output)
        {
            if (state.Peek() != _marker)
            {
                return(false);
            }

            var start = state.Index;

            state.ReadCharacter(); // consume _marker
            var ch = state.ReadCharacter();

            if (ch != _marker)
            {
                state.Index = start;
                return(false);
            }
            ch = state.ReadCharacter();
            if (ch == _marker)
            {
                state.Index = start;
                return(false);
            }

            state.StartRun(start + 2);
            while (ch != Symbols.EndOfFile)
            {
                if (ch == _marker)
                {
                    var next = state.ReadCharacter();
                    ch = next == _marker ? Symbols.EndOfFile : next;
                }
                else
                {
                    ch = state.ReadInlineOrCharacter(output);
                }
            }

            output.Add(new HtmlStartTag(_tag));
            output.Add(state.EndRun(-2));
            output.Add(new HtmlEndTag(_tag));
            return(true);
        }
コード例 #9
0
        internal static ParseOutput ParseDirective(IList <Tokenizer.TokenDefinition> input, ref int i)
        {
            // Directive: directive | '[' directive ']' | '%' directive
            int    start_i = i;
            string str;

            if (((str = MatchString(input, directives, ref i)) != null) || ((MatchString(input, "[", ref i)) &&
                                                                            ((str = MatchString(input, sq_bracket_directives, ref i)) != null) && (MatchString(input, "]", ref i))) ||
                ((MatchString(input, "%", ref i)) && ((str = MatchString(input, percent_directives, ref i)) != null)))
            {
                ParseOutput ret = new ParseOutput {
                    Type = ParseOutput.OutputType.Directive, Name = str
                };
                return(ret);
            }

            // Rewind and fail
            i = start_i;
            return(null);
        }
コード例 #10
0
        internal static ParseOutput ParseContentsOf(IList <Tokenizer.TokenDefinition> input, ref int i, bool is_directive)
        {
            // ContentsOf: '[' Parameter ']'
            ParseOutput ret = new ParseOutput {
                Type = ParseOutput.OutputType.ContentsOf
            };
            int start_i = i;

            // Try and match
            ParseOutput param;

            if (MatchString(input, "[", ref i) && ((param = ParseParameter(input, ref i, is_directive)) != null) && MatchString(input, "]", ref i))
            {
                ret.Children.Add(param);
                return(ret);
            }

            // Else rewind and fail
            i = start_i;
            return(null);
        }
コード例 #11
0
        internal override bool TryParse(ParseState state, ParseOutput output)
        {
            var start     = state.Index;
            var ch        = state.ReadCharacter();
            var inBracket = false;

            if (_allowBracket && ch == '[')
            {
                inBracket = true;
                ch        = state.ReadCharacter();
            }

            // Bail if current character is not the marker
            // -or- current character is marker and the previous character was
            // neither a bracket or whitespace
            if (ch != _marker ||
                (!inBracket && start > 0 && !char.IsWhiteSpace(state[start - 1])))
            {
                return(state.Reset(start));
            }

            ch = state.ReadCharacter();
            if (ch == _marker)
            {
                return(state.Reset(start));
            }
            state.StartRun(start + (inBracket ? 2 : 1));

            while (ch != Symbols.EndOfFile)
            {
                if (ch == _marker)
                {
                    if (inBracket)
                    {
                        var next = state.ReadCharacter();
                        ch = next == ']' ? Symbols.EndOfFile : next;
                    }
                    else
                    {
                        var next = state.ReadCharacter();
                        if (char.IsWhiteSpace(ch))
                        {
                            ch = Symbols.EndOfFile;
                            state.Index--;
                        }
                        else
                        {
                            ch = next;
                        }
                    }
                }
                else
                {
                    ch = state.ReadInlineOrCharacter(output);
                }
            }

            output.Add(new HtmlStartTag(_tag));
            output.Add(state.EndRun(inBracket ? -2 : -1));
            output.Add(new HtmlEndTag(_tag));
            return(true);
        }
コード例 #12
0
        private static ParseOutput ParsePdf(string pdfFileName)
        {
            var parseOutput = new ParseOutput();

            if (pdfFileName.Contains("Protective"))
            {
                parseOutput             = ProtectivePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Protective";
            }
            else if (pdfFileName.Contains("Principal"))
            {
                parseOutput             = PrincipalPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Principal";
            }
            else if (pdfFileName.Contains("Prudential"))
            {
                parseOutput             = PrudentialPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Prudential";
            }
            else if (pdfFileName.Contains("Genworth"))
            {
                parseOutput             = GenworthPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Genworth";
            }
            else if (pdfFileName.Contains("Brighthouse"))
            {
                parseOutput             = BrightHousePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Brighthouse";
            }
            else if (pdfFileName.Contains("Hancock"))
            {
                parseOutput             = JohnHancockPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "John Hancock";
            }
            else if (pdfFileName.Contains("Lincoln"))
            {
                parseOutput             = LincolnPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Lincoln";
            }
            else if (pdfFileName.Contains("Transamerica"))
            {
                parseOutput             = TransamericaPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Transamerica";
            }
            else if (pdfFileName.Contains("Omaha"))
            {
                parseOutput             = MutualOfOmahaPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Mutual Of Omaha";
            }
            else if (pdfFileName.Contains("American National"))
            {
                parseOutput             = AmericanNationalPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "American National";
            }
            else if (pdfFileName.Contains("American General"))
            {
                parseOutput             = AmericanGeneralPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "American General";
            }
            else if (pdfFileName.Contains("Penn Mutual"))
            {
                parseOutput             = PennMutualPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Penn Mutual";
            }
            else if (pdfFileName.Contains("VOYA"))
            {
                parseOutput             = VoyaPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Voya";
            }
            else if (pdfFileName.Contains("Symetra"))
            {
                parseOutput             = SymetraPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Symetra";
            }
            else if (pdfFileName.Contains("Zurich"))
            {
                parseOutput             = ZurichPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Zurich";
            }
            else if (pdfFileName.Contains("Reliance Standard"))
            {
                parseOutput             = RelianceStandardPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Reliance Standard";
            }
            else if (pdfFileName.Contains("Nationwide"))
            {
                parseOutput             = NationwidePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Nationwide";
            }
            else if (pdfFileName.Contains("North American"))
            {
                parseOutput             = NorthAmericanPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "North American";
            }
            else if (pdfFileName.Contains("William Penn"))
            {
                parseOutput             = WilliamPennPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "William Penn";
            }
            else if (pdfFileName.Contains("Assurity"))
            {
                parseOutput             = AssurityPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Assurity";
            }
            else if (pdfFileName.Contains("Hartford"))
            {
                parseOutput             = HartfordPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Hartford";
            }
            else if (pdfFileName.Contains("Mass Mutual"))
            {
                parseOutput             = MassMutualPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Mass Mutual";
            }
            else if (pdfFileName.Contains("MetLife"))
            {
                parseOutput             = MetLifePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "MetLife";
            }
            else if (pdfFileName.Contains("Standard -"))
            {
                parseOutput             = StandardPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Standard";
            }
            else if (pdfFileName.Contains("AXA"))
            {
                parseOutput             = AxaPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "AXA";
            }
            else if (pdfFileName.Contains("Banner"))
            {
                parseOutput             = BannerPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Banner";
            }
            else if (pdfFileName.Contains("Minnesota"))
            {
                parseOutput             = MinnesotaLifePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Minnesota Life";
            }
            else if (pdfFileName.Contains("Pacific"))
            {
                parseOutput             = PacificLifePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Pacific Life";
            }
            else if (pdfFileName.Contains("Allstate"))
            {
                parseOutput             = AllstatePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Allstate";
            }
            else if (pdfFileName.Contains("Athene"))
            {
                parseOutput             = AthenePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Athene";
            }
            else if (pdfFileName.Contains("Foresters"))
            {
                parseOutput             = ForestersPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Foresters";
            }
            else if (pdfFileName.Contains("Equitable"))
            {
                parseOutput             = EquitablePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Equitable";
            }
            else if (pdfFileName.Contains("National Life"))
            {
                parseOutput             = NationalLifePdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "National Life";
            }
            else if (pdfFileName.Contains("NBC National"))
            {
                parseOutput             = NBCPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "NBC Marketing";
            }
            else if (pdfFileName.Contains("Legacy Marketing"))
            {
                parseOutput             = LegacyPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Ameritas";
            }
            else if (pdfFileName.Contains("Guggenheim"))
            {
                parseOutput             = GuggenheimPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Guggenheim";
            }
            else if (pdfFileName.Contains("Security Mutual"))
            {
                parseOutput             = SecurityMutualPdfParser.ParsePdf(pdfFileName);
                parseOutput.CarrierName = "Security Mutual";
            }
            return(parseOutput);
        }
コード例 #13
0
ファイル: BaseState.cs プロジェクト: w8w8w8/Lumisoft.Net.Core
 internal abstract bool TryParse(ParseState state, ParseOutput output);
コード例 #14
0
        internal static ParseOutput ParseParameter(IList <Tokenizer.TokenDefinition> input, ref int i, bool is_directive)
        {
            // Parameter: register P' | label P' | number P' | '[' P ']' P'
            int         start_i = i;
            ParseOutput ret     = new ParseOutput {
                Type = ParseOutput.OutputType.Parameter
            };

            // Try and match a register
            ParseOutput reg = ParseRegister(input, ref i);
            ParseOutput pprime;

            if (reg != null)
            {
                // Match PPrime
                pprime = ParseParameterPrime(input, ref i, is_directive);
                if (pprime != null)
                {
                    InterpretParameterPrime(ret, reg, pprime);
                    return(ret);
                }
                else
                {
                    // Rewind and fail
                    i = start_i;
                    return(null);
                }
            }

            // Rewind and try and match a label
            i = start_i;
            ParseOutput label = ParseLabel(input, ref i);

            if (label != null)
            {
                // Match PPrime
                pprime = ParseParameterPrime(input, ref i, is_directive);
                if (pprime != null)
                {
                    InterpretParameterPrime(ret, label, pprime);
                    return(ret);
                }
                else
                {
                    // Rewind and fail
                    i = start_i;
                    return(null);
                }
            }

            // Rewind and try and match a number
            i = start_i;
            ParseOutput number = ParseNumber(input, ref i);

            if (number != null)
            {
                // Match PPrime
                pprime = ParseParameterPrime(input, ref i, is_directive);
                if (pprime != null)
                {
                    InterpretParameterPrime(ret, number, pprime);
                    return(ret);
                }
                else
                {
                    // Rewind and fail
                    i = start_i;
                    return(null);
                }
            }

            // Rewind and try and match a 'ContentsOf'
            i = start_i;
            ParseOutput cof = ParseContentsOf(input, ref i, is_directive);

            if (cof != null)
            {
                // Match PPrime
                pprime = ParseParameterPrime(input, ref i, is_directive);
                if (pprime != null)
                {
                    InterpretParameterPrime(ret, cof, pprime);
                    return(ret);
                }
                else
                {
                    // Rewind and fail
                    i = start_i;
                    return(null);
                }
            }

            // Else rewind and fail
            i = start_i;
            return(null);
        }
コード例 #15
0
        internal static ParseOutput ParseCommand(IList <Tokenizer.TokenDefinition> input, ref int i)
        {
            // Command: Directive Parameters* NewLine | Prefix* Operation Parameters* NewLine
            int         start_i = i;
            ParseOutput ret     = new ParseOutput {
                Type = ParseOutput.OutputType.OpCommand
            };

            ParseOutput dir;
            ParseOutput param;

            if ((dir = ParseDirective(input, ref i)) != null)
            {
                ret.Children.Add(dir);

                // Match Parameters

                while ((param = ParseParameter(input, ref i, true)) != null)
                {
                    ret.Children.Add(param);
                }

                // Match NewLine
                if (MatchNewLine(input, ref i))
                {
                    ret.Type = ParseOutput.OutputType.DirectiveCommand;
                    return(ret);
                }
                else
                {
                    // Rewind and fail
                    i = start_i;
                    return(null);
                }
            }

            // Else try and match prefixes
            ParseOutput prefix;

            while ((prefix = ParsePrefix(input, ref i)) != null)
            {
                ret.Children.Add(prefix);
            }

            // Match Operation
            ParseOutput op = ParseOperation(input, ref i);

            if (op == null)
            {
                // Rewind and fail
                i = start_i;
                return(null);
            }
            ret.Children.Add(op);

            // Match parameters
            while ((param = ParseParameter(input, ref i, false)) != null)
            {
                ret.Children.Add(param);
            }

            // Match NewLine
            if (MatchNewLine(input, ref i))
            {
                return(ret);
            }
            else
            {
                // Rewind and fail
                i = start_i;
                return(null);
            }
        }
コード例 #16
0
        internal static ParseOutput ParseLine(IList <Tokenizer.TokenDefinition> input, ref int i)
        {
            // Line : EndOfInput | NewLine | Command | Label NewLine | Label ':' NewLine | Label ':' Command
            ParseOutput ret = new ParseOutput {
                Type = ParseOutput.OutputType.Line
            };

            // Match EndOfInput
            if (i >= input.Count)
            {
                return(null);
            }

            int start_i = i;

            // Try and match NewLine
            if (MatchNewLine(input, ref i))
            {
                return(ret);
            }

            // Try and match Command
            ParseOutput cmd = ParseCommand(input, ref i);

            if (cmd != null)
            {
                ret.Children.Add(cmd);
                return(ret);
            }

            // Else rewind and try and match label
            i = start_i;
            ParseOutput label = ParseLabel(input, ref i);

            if (label != null)
            {
                // Try and match ':'
                if (MatchString(input, ":", ref i))
                {
                    // Try and match newline
                    if (MatchNewLine(input, ref i))
                    {
                        ret.Children.Add(label);
                        return(ret);
                    }
                    else if ((cmd = ParseCommand(input, ref i)) != null)
                    {
                        ret.Children.Add(label);
                        ret.Children.Add(cmd);
                        return(ret);
                    }
                    else
                    {
                        // Rewind and fail
                        i = start_i;
                        return(null);
                    }
                }
                else if (MatchNewLine(input, ref i))
                {
                    ret.Children.Add(label);
                    return(ret);
                }
                else
                {
                    // Rewind and fail
                    i = start_i;
                    return(null);
                }
            }

            // Else rewind and fail
            i = start_i;
            return(null);
        }