private List <Redesim_RegistroStruct> Read_Registro(string _path) { int _linha = 1; Redesim_bll redesimRepository = new Redesim_bll(_connection); List <Redesim_natureza_juridica> _listaNatJuridica = redesimRepository.Lista_Natureza_Juridica(); List <Redesim_evento> _listaEvento = redesimRepository.Lista_Evento(); List <Redesim_porte_empresa> _listaPorte = redesimRepository.Lista_Porte_Empresa(); List <Redesim_forma_atuacao> _listaForma = redesimRepository.Lista_Forma_Atuacao(); List <Redesim_RegistroStruct> _listaRegistro = new List <Redesim_RegistroStruct>(); StreamReader reader = new StreamReader(@_path, Encoding.Default); while (!reader.EndOfStream) { string line = reader.ReadLine(); char _delimeter = line.Contains(";") ? ';' : ','; if (!string.IsNullOrWhiteSpace(line)) { if (_linha > 1) { string[] values = line.Split(_delimeter); Redesim_RegistroStruct _linhaReg; if (values[14] == "Sim" || values[14] == "Não") { _linhaReg = new Redesim_RegistroStruct() { Protocolo = values[0], Cnpj = values[1], Evento = values[2].Split(','), NomeEmpresarial = values[3], MatrizFilial = values[4], DataAberturaEstabelecimento = values[5], DataAberturaEmpresa = values[6], Logradouro = values[7], Numero = values[8], Complementos = values[9], Bairro = values[10], Cep = values[11], Municipio = values[12], Referencia = values[13], EmpresaEstabelecida = values[14], NaturezaJuridica = values[15], OrgaoRegistro = values[16], NumeroOrgaoRegistro = values[17], CapitalSocial = values[18], CpfResponsavel = values[19], NomeResponsavel = values[20], QualificacaoResponsavel = values[21], TelefoneResponsavel = values[22], EmailResponsavel = values[23], PorteEmpresa = values[24], CnaePrincipal = values[25], CnaeSecundaria = values[26].Split(','), AtividadeAuxiliar = values[27], TipoUnidade = values[28], FormaAtuacao = values[29].Split(','), Qsa = values[30], CpfRepresentante = values[31], NomeRepresentante = values[32] }; } else { //Criado para corrigir um erro no arquivo, onde alguns registros vem com posição errada _linhaReg = new Redesim_RegistroStruct() { Protocolo = values[0], Cnpj = values[1], Evento = values[2].Split(','), NomeEmpresarial = values[3], MatrizFilial = values[4], DataAberturaEstabelecimento = values[5], DataAberturaEmpresa = values[6], Logradouro = values[7], Numero = values[8], Complementos = values[9], Bairro = values[10], Cep = values[11], Municipio = values[12], Referencia = "", EmpresaEstabelecida = values[15], NaturezaJuridica = values[16], OrgaoRegistro = values[17], NumeroOrgaoRegistro = values[18], CapitalSocial = values[19], CpfResponsavel = values[20], NomeResponsavel = values[21], QualificacaoResponsavel = values[22], TelefoneResponsavel = values[23], EmailResponsavel = values[24], PorteEmpresa = values[25], CnaePrincipal = values[26], CnaeSecundaria = values[27].Split(','), AtividadeAuxiliar = values[28], TipoUnidade = values[29], FormaAtuacao = values[30].Split(','), Qsa = values[31], CpfRepresentante = values[32], NomeRepresentante = values[33] }; } //Natureza Juridica int _codigo = 0; foreach (Redesim_natureza_juridica item in _listaNatJuridica) { if (item.Nome == _linhaReg.NaturezaJuridica) { _codigo = item.Codigo; break; } } if (_codigo == 0) { _codigo = redesimRepository.Incluir_Natureza_Juridica(_linhaReg.NaturezaJuridica); _listaNatJuridica.Add(new Redesim_natureza_juridica() { Codigo = _codigo, Nome = _linhaReg.NaturezaJuridica }); } _linhaReg.NaturezaJuridicaCodigo = _codigo; //Evento _codigo = 0; int[] _listaCod = new int[_linhaReg.Evento.Length]; int _indexEvento = 0; foreach (string ev in _linhaReg.Evento) { foreach (Redesim_evento item in _listaEvento) { if (item.Nome == ev) { _codigo = item.Codigo; break; } } if (_codigo == 0) { _codigo = redesimRepository.Incluir_Evento(ev); _listaEvento.Add(new Redesim_evento() { Codigo = _codigo, Nome = ev }); } _listaCod[_indexEvento] = _codigo; _indexEvento++; } _linhaReg.EventoCodigo = _listaCod; redesimRepository.Incluir_Registro_Evento(_linhaReg.Protocolo, _listaCod); //Porte Empresa _codigo = 0; foreach (Redesim_porte_empresa item in _listaPorte) { if (item.Nome == _linhaReg.PorteEmpresa) { _codigo = item.Codigo; break; } } if (_codigo == 0) { _codigo = redesimRepository.Incluir_Porte_Empresa(_linhaReg.PorteEmpresa); _listaPorte.Add(new Redesim_porte_empresa() { Codigo = _codigo, Nome = _linhaReg.PorteEmpresa }); } _linhaReg.PorteEmpresaCodigo = _codigo; //Forma Atuação _codigo = 0; int[] _listaFormaCod = new int[_linhaReg.FormaAtuacao.Length]; int _indexForma = 0; foreach (string ev in _linhaReg.FormaAtuacao) { foreach (Redesim_forma_atuacao item in _listaForma) { if (item.Nome == ev) { _codigo = item.Codigo; break; } } if (_codigo == 0) { _codigo = redesimRepository.Incluir_Forma_Atuacao(ev); _listaForma.Add(new Redesim_forma_atuacao() { Codigo = _codigo, Nome = ev }); } _listaFormaCod[_indexForma] = _codigo; _indexForma++; } _linhaReg.FormaAtuacaoCodigo = _listaFormaCod; redesimRepository.Incluir_Registro_Forma_Atuacao(_linhaReg.Protocolo, _listaFormaCod); //Cnae Secundária //int _size = _linhaReg.CnaeSecundaria.Length; //if (_size > 0) { // string[] _listaCnae = new string[_size]; // int _indexCnae = 0; // foreach (string ev in _linhaReg.CnaeSecundaria) { // _listaCnae[_indexCnae] = ev; // _indexCnae++; // } // redesimRepository.Incluir_Cnae(_linhaReg.Protocolo, _listaCnae); //} _listaRegistro.Add(_linhaReg); } } _linha++; } return(_listaRegistro); }