private void ParsearCsvEscuelas(HttpPostedFileBase file, Tag gestion) { var tags = Database.GetCollection<Tag>("Tag"); var query = Query<Tag>.EQ(e => e.Valor, "Inicial"); var inicial = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Primario"); var primario = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Secundario"); var medio = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Superior"); var superior = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Otros"); var otras = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Tecnico"); var tecnico = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Especial"); var especial = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Comun"); var comun = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Adultos"); var adultos = tags.FindOne(query); query = Query<Tag>.EQ(e => e.Valor, "Artistico"); var artistico = tags.FindOne(query); var establecimientos = Database.GetCollection<Establecimiento>("Establecimiento"); using (var readFile = new StreamReader(file.InputStream)) { var csvReader = new CsvReader(readFile); //Comeinzo a iterar sobre los datos while (csvReader.Read()) { //Creo la nueva escuela var escuela = new Establecimiento(); escuela.Direccion = csvReader.GetField(0); //Domicilio Edificio //csvReader.GetField(1); Domicilio entre calles escuela.Nombre = csvReader.GetField(2).Replace("ş",""); //Nombre del Establecimiento escuela.Codigo = csvReader.GetField(3); //Nombre abreviado escuela.Telefonos = csvReader.GetField(4); //Telefonos escuela.Email = csvReader.GetField(5); //correo_web //csvReader.GetField(6); Nivel y Tipo //csvReader.GetField(7); Dependencia Funcional escuela.Longitud = Convert.ToDouble(csvReader.GetField(8), CultureInfo.InvariantCulture); //Longitud escuela.Latitud = Convert.ToDouble(csvReader.GetField(9), CultureInfo.InvariantCulture); //Latitud escuela.GeoJson = csvReader.GetField(10); //GeoJson //Añado los Tags Correspondientes escuela.Gestion = gestion; if (csvReader.GetField<string>(7).Trim() == "Educ. Tecnica") escuela.Titulo = tecnico; //Itero sobre la lista de nivelesTipos separada por "-" var nivelesTipos = csvReader.GetField(6).Split('-'); foreach (var nivelTipoString in nivelesTipos) { var nivelTipoTrim = nivelTipoString.Trim(); if (String.IsNullOrWhiteSpace(nivelTipoTrim)) continue; var nivelTipo = new NivelTipo(); if (nivelTipoTrim == "Otras") { nivelTipo.NivelEducativo = otras; } else { //Busco el nivel correspondiente var nivel = nivelTipoTrim.Substring(0, 3); switch (nivel) { case "Ini": nivelTipo.NivelEducativo = inicial; break; case "Pri": nivelTipo.NivelEducativo = primario; break; case "Med": nivelTipo.NivelEducativo = medio; break; case "SNU": nivelTipo.NivelEducativo = superior; break; default: throw new DataException("no hay un nivel valido"); } //Busco el Tipo de escuela correspondiente var tipo = nivelTipoTrim.Substring(3, 3); switch (tipo) { case "Com": nivelTipo.TipoDeEstablecimiento = comun; break; case "Esp": nivelTipo.TipoDeEstablecimiento = especial; break; case "Adu": nivelTipo.TipoDeEstablecimiento = adultos; break; case "Art": nivelTipo.TipoDeEstablecimiento = artistico; break; default: throw new DataException("no hay un tipo valido"); } } escuela.NivelTipo.Add(nivelTipo); } establecimientos.Insert(escuela); } } }
protected Venue BuscarAgregarEstablecimiento(Establecimiento establecimiento) { var listaNiveles = new List<string> { "Inicial", "Primario", "Secundario" }; Venue fourSquareVenue = null; var sharpSquare = (SharpSquare)Session["SharpSquare"]; if (establecimiento.FourSquareVenueId == null) { var latitudLongitud = establecimiento.Latitud.ToString(CultureInfo.InvariantCulture.NumberFormat) + "," + establecimiento.Longitud.ToString(CultureInfo.InvariantCulture.NumberFormat); var parametros = new Dictionary<string, string>(); parametros.Add("ll", latitudLongitud); parametros.Add("intent", "match"); var nombreReducido = establecimiento.Nombre.ToLower() .Replace("inst.", "") .Replace("instituto", "") .Replace("colegio", "") .Replace("coleg.", "") .Replace("priv.", "") .Replace("integral", "") .Replace("escuela", "") .Replace("educ.", "") .Replace("fund.", "") .Replace("fundacion", "") .Replace("secundaria", "") .Replace("primaria", "") .Replace("infantil", "") .Replace("jardin", "") .Replace("jardin de infantes", "") .Replace("maternal", "") .Replace("parroquial", "") .Trim(); parametros.Add("query", nombreReducido); var categorias = new List<string>(); //categorias.Add("4bf58dd8d48988d131941735"); //Centro Espiritual if (establecimiento.NivelTipo.Any(x => listaNiveles.Contains(x.NivelEducativo.Valor))) { categorias.Add("4bf58dd8d48988d13b941735"); //Colegio } else { if (establecimiento.NivelTipo.Any(x => x.NivelEducativo.Valor == "Otros")) { categorias.Add("4bf58dd8d48988d1f2931735"); //Lugar de Artes interpretativas } else { categorias.Add("4d4b7105d754a06372d81259"); //Facultades y Universidades } } parametros.Add("categoryId", String.Join(",", categorias)); Logger.Error("Hago un Search Venues"); var listaDeLugares = sharpSquare.SearchVenues(parametros); Venue lugar = null; //Busco el Id de FourSquare lugar = listaDeLugares.OrderBy(x => Math.Abs(x.location.lat - establecimiento.Latitud) + Math.Abs(x.location.lng - establecimiento.Longitud) ).FirstOrDefault(); if (lugar == null) { var venue = new Dictionary<string, string>(); venue.Add("name", establecimiento.Nombre); venue.Add("address", establecimiento.Direccion); venue.Add("city", "Buenos Aires"); venue.Add("state", "Buenos Aires"); //venue.Add("phone", establecimiento.Telefonos); //Tira error por ser una string y no un numero venue.Add("ll", establecimiento.Latitud.ToString(CultureInfo.InvariantCulture.NumberFormat) + "," + establecimiento.Longitud.ToString(CultureInfo.InvariantCulture.NumberFormat)); if (establecimiento.NivelTipo.Any(x => listaNiveles.Contains(x.NivelEducativo.Valor))) { venue.Add("primaryCategoryId", "4bf58dd8d48988d13b941735"); //Colegios } else { if (establecimiento.NivelTipo.Any(x => x.NivelEducativo.Valor == "Otros")) { venue.Add("primaryCategoryId", "4bf58dd8d48988d1f2931735"); //Artes Interpretativas } else { venue.Add("primaryCategoryId", "4bf58dd8d48988d198941735"); //Edificio Universitario } } Logger.Error("Agrego un Venue"); fourSquareVenue = sharpSquare.AddVenue(venue); fourSquareVenue = sharpSquare.GetVenue(fourSquareVenue.id); return fourSquareVenue; } Logger.Error("Hago un getvenue por Id"); fourSquareVenue = sharpSquare.GetVenue(lugar.id); return fourSquareVenue; } Logger.Error("Hago un getvenue por Id que ya tengo guardada"); fourSquareVenue = sharpSquare.GetVenue(establecimiento.FourSquareVenueId); return fourSquareVenue; }