/// <summary>
        /// Parse byte array to json
        /// </summary>
        /// <param name="rawdata"></param>
        /// <returns></returns>
        public static CreditReportBase Data(string rawdata)
        {
            CreditReportBase cbase = new CreditReportBase();

            string filePath = string.Empty;
            string reportBolb = string.Empty;
            filePath = Path.Combine(ConfigurationManager.AppSettings["ReportPhysicalPath"], rawdata);
            using (StreamReader sr = System.IO.File.OpenText(filePath))
            {
                reportBolb = sr.ReadToEnd();
            }
            cbase = CreateJsonActual(reportBolb);
            return cbase;
        }
        public static CreditReportBase GenerateJson(string jsonData)
        {
            CreditReportBase cbase = new CreditReportBase();
            Individual ind = new Individual();
            Company com = new Company();

            var sr = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);

            //  var sr = Newtonsoft.Json.JsonConvert.DeserializeObject(compJson);//
            JObject obj = (JObject)sr;

            var baseToken = obj.SelectToken("c").SelectToken("DCR");
            var individualToken = baseToken.SelectToken("Individuo");
            var securityToken = baseToken.SelectToken("Seguridad");
            var creditAnalysisToken = baseToken.SelectToken("AnalisisCrediticio");
            var breakDownCreditsToken = baseToken.SelectToken("DesgloseCreditos");
            //var contactsToken = baseToken.SelectToken("PersonasRelacionadas");
            var addressesToken = baseToken.SelectToken("Direcciones");
            var telephonesToken = baseToken.SelectToken("Telefonos");
            var productToken = breakDownCreditsToken.SelectToken("Producto");
            //  var accountToken = productToken.SelectToken("Cuenta");
            var companyToken = baseToken.SelectToken("Empresa");
            var personRelationToken = baseToken.SelectToken("PersonasRelacionadas");
            var errorHandling = baseToken.SelectToken("ErrorHandling");
            //var foto = baseToken.SelectToken("Foto");
            cbase.Photo = baseToken.SelectToken("Foto").ToObject<string>();
            cbase.Security = securityToken.ToObject<Security>();

            if (errorHandling != null)
            {
                cbase.ErrorHandling = errorHandling.ToObject<ErrorHandling>();
            }

            if (individualToken != null)
            {
                cbase.Individual = individualToken.ToObject<Individual>();
            }
            if (companyToken != null)
            {
                cbase.Company = companyToken.ToObject<Company>();
            }

            if (creditAnalysisToken != null)
            {
                cbase.creditAnalysis = new CreditAnalysis();

                var cantidadTotalCuentasToken = creditAnalysisToken.SelectToken("CantidadTotalCuentas");
                if (cantidadTotalCuentasToken != null)
                {
                    var moneda = cantidadTotalCuentasToken.SelectToken("Moneda");

                    TotalAmountAccounts totalAmtAcc = new TotalAmountAccounts();

                    if (moneda != null)
                    {
                        if (moneda.Type == JTokenType.Array)
                            totalAmtAcc.Currencies = moneda.ToObject<List<TotalAmountAccounts.Currency>>();
                        else
                        {
                            totalAmtAcc.Currencies = new List<TotalAmountAccounts.Currency>() { moneda.ToObject<TotalAmountAccounts.Currency>() };
                        }
                    }
                    var jTotSale = cantidadTotalCuentasToken.SelectToken("Totales");
                    if (jTotSale != null)
                        totalAmtAcc.Totals = jTotSale.ToObject<Totales>();

                    cbase.creditAnalysis.TotalAmountAccount = totalAmtAcc;

                }
            }

            if (productToken != null)
            {
                List<Product> prodList = new List<Product>();
                List<JToken> productList;
                if (productToken.Type == JTokenType.Array)
                {
                    productList = productToken.ToList();
                    foreach (var item in productList)
                    {
                        var pro = ParseProduct(item);
                        if (pro != null)
                        {
                            prodList.Add(pro);
                        }
                    }
                }
                else
                {
                    var pro = ParseProduct(productToken);
                    if (pro != null)
                    {
                        prodList.Add(pro);
                    }
                }

                cbase.Products = prodList;
                cbase.CurrencyWiseProducts = GetCurrencyWiseProducts(prodList);
            }

            if (telephonesToken != null)
            {
                var teldData = telephonesToken.SelectToken("Tel");
                if (teldData != null)
                {
                    if (teldData.Type == JTokenType.Array)
                        cbase.Telphones = teldData.ToObject<List<Telephone>>();
                    else
                        cbase.Telphones = new List<Telephone>() { teldData.ToObject<Telephone>() };

                }
            }

            if (addressesToken != null)
            {
                var jDir = addressesToken.SelectToken("Dir");
                if (jDir.Type == JTokenType.Array)
                    cbase.Addresses = jDir.ToObject<List<Addresses>>();
                else
                    cbase.Addresses = new List<Addresses>() { jDir.ToObject<Addresses>() };
            }

            if (personRelationToken != null)
            {
                var personRelationList = personRelationToken.SelectToken("Persona");
                if (personRelationList != null)
                {
                    if (personRelationList.Type == JTokenType.Array)
                    {
                        cbase.Persons = personRelationList.ToObject<List<PersonRelation>>();
                    }
                    else
                    {
                        cbase.Persons = new List<PersonRelation> {
                            personRelationList.ToObject<PersonRelation>() };
                    }
                }
            }
            return cbase;
        }
 public static CreditReportBase CreateJsonActual(string jsondata)
 {
     CreditReportBase cbase = new CreditReportBase();
     cbase = GenerateJson(jsondata);
     return cbase;
 }