예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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;
        }