Exemplo n.º 1
0
        public static string parse_to_billing_provider(string filename)
        {
            string returnmessage   = "";
            string isa_segment     = "";
            string iea_segment     = "";
            string gs_segment      = "";
            string ge_segment      = "";
            string se_segment      = "";
            string st_segment      = "";
            string transaction_set = "";
            string line            = "";
            string segment_type    = "";
            bool   is835           = true;
            bool   fatal           = false;
            bool   first           = true;

            string[] output   = new string[1000];
            string[] provider = new string[1000];
            int      i        = 0;

            DelimitedFileReader remittance = new DelimitedFileReader(filename, "~\n");

            try
            {
                line = remittance.Read();

                if (line[0] == 'I')
                {
                    do
                    {
                        string[] segment = line.Replace("~", "*").Split("*".ToCharArray());
                        segment_type = segment.GetValue(0).ToString();
                        switch (segment_type)
                        {
                        case "BPR":
                            if (is835 == true)
                            {
                                if (first == false)
                                {
                                    i += 1;
                                }

                                first      = false;
                                output[i] += line.ToString();
                            }
                            break;

                        case "GE":
                            ge_segment = line.ToString();
                            break;

                        case "GS":
                            gs_segment = line.ToString();
                            break;

                        case "IEA":
                            iea_segment = line.ToString();
                            for (int ii = 0; ii <= i; ii++)
                            {
                                if (output.GetValue(ii).ToString().Contains("ISA*00") == false)
                                {
                                    output[ii] = isa_segment + gs_segment + output.GetValue(ii).ToString() + ge_segment + iea_segment;
                                }
                            }
                            break;

                        case "ISA":
                            isa_segment = line.ToString();
                            break;

                        case "N1":
                            if (is835 == true)
                            {
                                switch (segment.GetValue(1).ToString())
                                {
                                case "PE":
                                    provider[i] = segment.GetValue(2).ToString();
                                    break;

                                default:
                                    break;
                                }
                                output[i] += line.ToString();
                            }
                            break;

                        case "SE":
                            if (is835 == true)
                            {
                                se_segment = line.ToString();
                                for (int ii = 0; ii <= i; ii++)
                                {
                                    if (output.GetValue(ii).ToString().Contains("ST*835") == false)
                                    {
                                        output[ii] = st_segment + output.GetValue(ii).ToString() + se_segment;
                                    }
                                }
                            }
                            is835 = true;
                            break;

                        case "ST":
                            if (segment.GetValue(1).ToString() != "835")
                            {
                                is835 = false;
                            }
                            else
                            {
                                transaction_set = segment.GetValue(3).ToString();
                                st_segment      = line.ToString();
                            }
                            break;

                        default:
                            if (is835 == true)
                            {
                                if (line.ToString().Length > 0)
                                {
                                    output[i] += line.ToString();
                                }
                            }
                            break;
                        }
                    }while ((line = remittance.Read()) != "" && fatal == false);

                    int iii = WriteFile(output, provider, filename);

                    if (iii > 0)
                    {
                        returnmessage += "File Processed, " + iii.ToString() + " files created.";
                    }
                    else
                    {
                        returnmessage += "There has been a problem.";
                    }
                }
                else
                {
                    returnmessage += "This is not an X12 5010 file.";
                }
            }
            catch (Exception ex)
            {
                returnmessage = ex.ToString();
                remittance.Close();
            }
            finally
            {
                remittance.Close();
            }
            return(returnmessage);
        }
        public static string parse_to_billing_provider(string filename)
        {
            string returnmessage = "";
            string isa_segment = "";
            string iea_segment = "";
            string gs_segment = "";
            string ge_segment = "";
            string se_segment = "";
            string st_segment = "";
            string transaction_set = "";
            string line = "";
            string segment_type = "";
            bool is835 = true;
            bool fatal = false;
            bool first = true;
            string[] output = new string[1000];
            string[] provider = new string[1000];
            int i = 0;

            DelimitedFileReader remittance = new DelimitedFileReader(filename, "~\n");

            try
            {
                line = remittance.Read();

                if (line[0] == 'I')
                {
                    do
                    {
                        string[] segment = line.Replace("~", "*").Split("*".ToCharArray());
                        segment_type = segment.GetValue(0).ToString();
                        switch (segment_type)
                        {
                            case "BPR":
                                if (is835 == true)
                                {
                                    if (first == false)
                                        i += 1;

                                    first = false;
                                    output[i] += line.ToString();
                                }
                                break;
                            case "GE":
                                ge_segment = line.ToString();
                                break;
                            case "GS":
                                gs_segment = line.ToString();
                                break;
                            case "IEA":
                                iea_segment = line.ToString();
                                for (int ii = 0; ii <= i; ii++)
                                {
                                    if (output.GetValue(ii).ToString().Contains("ISA*00") == false)
                                        output[ii] = isa_segment + gs_segment + output.GetValue(ii).ToString() + ge_segment + iea_segment;
                                }
                                break;
                            case "ISA":
                                isa_segment = line.ToString();
                                break;
                            case "N1":
                                if (is835 == true)
                                {
                                    switch (segment.GetValue(1).ToString())
                                    {
                                        case "PE":
                                            provider[i] = segment.GetValue(2).ToString();
                                            break;
                                        default:
                                            break;
                                    }
                                    output[i] += line.ToString();
                                }
                                break;
                            case "SE":
                                if (is835 == true)
                                {
                                    se_segment = line.ToString();
                                    for (int ii = 0; ii <= i; ii++)
                                    {
                                        if (output.GetValue(ii).ToString().Contains("ST*835") == false)
                                            output[ii] = st_segment + output.GetValue(ii).ToString() + se_segment;
                                    }
                                }
                                is835 = true;
                                break;
                            case "ST":
                                if (segment.GetValue(1).ToString() != "835")
                                {
                                    is835 = false;
                                }
                                else
                                {
                                    transaction_set = segment.GetValue(3).ToString();
                                    st_segment = line.ToString();
                                }
                                break;
                            default:
                                if (is835 == true)
                                {
                                    if (line.ToString().Length > 0)
                                        output[i] += line.ToString();
                                }
                                break;
                        }
                    }
                    while ((line = remittance.Read()) != "" && fatal == false);

                    int iii = WriteFile(output, provider, filename);

                    if (iii > 0)
                        returnmessage += "File Processed, " + iii.ToString() + " files created.";
                    else
                        returnmessage += "There has been a problem.";
                }
                else
                {
                    returnmessage += "This is not an X12 5010 file.";
                }
            }
            catch (Exception ex)
            {
                returnmessage = ex.ToString();
                remittance.Close();
            }
            finally
            {
                remittance.Close();
            }
            return returnmessage;
        }