コード例 #1
0
        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);
        }