public static List <BillingInfo> ReadFile(string fileName)
        {
            try
            {
                BillingInfo        billingInfo       = new BillingInfo();
                BillingInfoHeader  billingInfoHeader = new BillingInfoHeader();
                BillingInfoFooter  billingInfoFooter = new BillingInfoFooter();
                List <BillingInfo> listBillingInfo   = new List <BillingInfo>();

                string[] lines = System.IO.File.ReadAllLines(fileName);
                foreach (var line in lines)
                {
                    billingInfo = new BillingInfo();
                    //string result = Regex.Replace(line, @"\s", "");
                    string result = string.Empty;
                    if (line.Trim().Length == 18)
                    {
                        ReadFileHeader(line);
                    }
                    else if (line.Trim().Length > 80)
                    {
                        billingInfo.DETAILRECORD    = line.Substring(Constants.POS_BASE, 4);
                        billingInfo.PANNO           = line.Substring(Constants.POS_1, 19);
                        billingInfo.PROCESSING_CODE = line.Substring(Constants.POS_2, 6);
                        billingInfo.AMOUNT          = line.Substring(Constants.POS_3, 12);
                        billingInfo.TRACE_NUMBER    = line.Substring(Constants.POS_4, 6);
                        billingInfo.TRANS_TIME      = line.Substring(Constants.POS_5, 6);
                        billingInfo.TRANS_DATE      = line.Substring(Constants.POS_6, 4);
                        billingInfo.PAYMENT_DATE    = line.Substring(Constants.POS_7, 4);
                        billingInfo.DEVICE_TYPE     = line.Substring(Constants.POS_8, 4);
                        billingInfo.BANK_CODE       = line.Substring(Constants.POS_9, 8);
                        billingInfo.AUTH_NUMBER     = line.Substring(Constants.POS_10, 6);
                        billingInfo.DEVICE_CODE     = line.Substring(Constants.POS_11, 8);
                        billingInfo.CCY             = line.Substring(Constants.POS_12, 3);
                        billingInfo.FROM_ACC        = line.Substring(Constants.POS_13, 20);
                        billingInfo.TO_ACC          = line.Substring(Constants.POS_14, 20);
                        billingInfo.MTI             = line.Substring(Constants.POS_15, 4);
                        billingInfo.STATUS          = line.Substring(Constants.POS_16, 4);
                        billingInfo.CHECKSUM        = line.Substring(Constants.POS_17, 32);

                        listBillingInfo.Add(billingInfo);
                    }
                    else
                    {
                        // Read Footer
                        ReadFileFooter(line);
                    }
                }
                return(listBillingInfo);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static BillingInfoHeader ReadFileHeader(string line)
        {
            try
            {
                BillingInfoHeader billingInfoHeader = new BillingInfoHeader();
                //if (line.Length == 18)
                //{
                // Read Header
                billingInfoHeader.HeaderTypeRecord = line.Substring(Constants.POS_BASE, 4);
                billingInfoHeader.BIN    = line.Substring(4, 8);
                billingInfoHeader.TxDate = line.Substring(12, 6);
                //}

                return(billingInfoHeader);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }