예제 #1
0
        public ActionResult LoadCidades()
        {
            //Apago os registos das cidades
            using (Repositorio <Cidade> rcid = new Repositorio <Cidade>())
            {
                rcid.Deletar(e => e.uf != string.Empty);
                rcid.Commit();
            }

            //Apago os registos das ufs
            using (Repositorio <UF> ruf = new Repositorio <UF>())
            {
                ruf.Deletar(e => e.uf != string.Empty);
                ruf.Commit();
            }

            dynamic loaded = "";

            try
            {
                int      cUF = 0;
                string[] linha;

                string filepath = Server.MapPath("~/App_Data/ScriptsBD/Municipios.csv");

                List <UF>     ufs = new List <UF>();
                UF            uf  = new UF();
                List <Cidade> mun = new List <Cidade>();

                var linhas = System.IO.File.ReadAllLines(filepath);

                bool primeiraLinha = true;
                int  contador      = 0;

                foreach (var linhaArq in linhas)
                {
                    linha = linhaArq.Split(';');

                    if (primeiraLinha)
                    {
                        cUF     = Convert.ToInt32(linha[0]);
                        uf.cuf  = cUF;
                        uf.uf   = UtilDB.getUF(cUF.ToString(), "s");
                        uf.nome = UtilDB.getUF(cUF.ToString(), "u");
                    }


                    if (linha != null)
                    {
                        if (cUF > 0 && (cUF.ToString() != linha[0]))
                        {
                            using (Repositorio <UF> rup = new Repositorio <UF>())
                            {
                                rup.Adicionar(uf);
                                rup.Commit();
                            }

                            uf      = new UF();
                            cUF     = Convert.ToInt32(linha[0]);
                            uf.cuf  = cUF;
                            uf.uf   = UtilDB.getUF(cUF.ToString(), "s");
                            uf.nome = UtilDB.getUF(cUF.ToString(), "u");

                            using (Repositorio <Cidade> rcid = new Repositorio <Cidade>())
                            {
                                rcid.AdicionarRange(mun);
                                rcid.Commit();
                            }

                            mun.Clear();
                        }

                        if (cUF > 0 && cUF.ToString() == linha[0])
                        {
                            mun.Add(new Cidade {
                                uf = uf.uf, cMun = linha[2], xMun = linha[3], cep = ""
                            });
                            contador++;

                            //última linha lida
                            if (contador == linhas.Length)
                            {
                                uf      = new UF();
                                uf.cuf  = cUF;
                                uf.uf   = UtilDB.getUF(cUF.ToString(), "s");
                                uf.nome = UtilDB.getUF(cUF.ToString(), "u");

                                using (Repositorio <UF> rup = new Repositorio <UF>())
                                {
                                    rup.Adicionar(uf);
                                    rup.Commit();
                                }

                                using (Repositorio <Cidade> rcid = new Repositorio <Cidade>())
                                {
                                    rcid.AdicionarRange(mun);
                                    rcid.Commit();
                                }
                            }
                        }
                    }
                    primeiraLinha = false;
                }

                loaded = new { Registros = "OK", Qtd = contador };
            }
            catch (Exception e)
            {
                loaded = new { Registros = "Erro ao gravar no BD", Qtd = 0, Motivo = e.InnerException };
            }

            return(Json(loaded, JsonRequestBehavior.AllowGet));
        }