コード例 #1
0
    /// <summary>
    /// Obtiene la última posicion de las unidades pedidas, version para Zeek Transporte, considera funcionalidad de combustible.
    /// </summary>
    /// <param name="unidades">Arreglo de identificadores de las unidades</param>
    /// <returns></returns>
    public static List<Ubicacion> UltimaUbicacionTransporteDebug(List<string> unidades, string cliente)
    {
        //query con notificacion geocercas
        string query = "select p.unidad, fecha, velocidad, latitud, longitud, evento, VolumenCombustibleGlobal, VolumenesCombustible, VolumenesCombustibleCrudos, NivelesCombustible, r.accion, r.fechahora, r.geocerca " +
                       "from PosicionActualcombustible p " +
                       "left outer join reportegeocercaactual r " +
                       "on p.unidad=r.unidad " +
                       "where p.unidad in (";

        //concatenar las unidades en el query
        foreach (string unidad in unidades)
            query += "'" + unidad + "', ";
        //quitar la última coma y espacio
        query = query.Remove(query.Length - 2);
        //agregar los dos paréntesis finales.
        query += ")";

        Ubicacion ubicacion;
        List<Ubicacion> listaUbicaciones = new List<Ubicacion>();
        List<Geocerca> NombresGeocercas = GeocercasBD.getGeocercasNombre(cliente);
        using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringBD"].ConnectionString))
        {
            sqlConnection.Open();
            using (SqlCommand sqlCommand = new SqlCommand(query, sqlConnection))
            {
                using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
                {
                    while (sqlDataReader.Read())
                    {
                        ubicacion = new Ubicacion();
                        ubicacion.Unidad = (string)sqlDataReader["Unidad"];
                        ubicacion.Fecha = (DateTime)sqlDataReader["Fecha"];
                        ubicacion.Velocidad = (int)((double)sqlDataReader["Velocidad"]);

                        int latitud = (int)sqlDataReader["Latitud"];
                        int longitud = (int)sqlDataReader["Longitud"];
                        System.Drawing.PointF p = GPSInfo.ParseLatitudLongitud(latitud, longitud);
                        ubicacion.Latitud = p.Y;
                        ubicacion.Longitud = p.X;
                        ubicacion.Evento = (byte)((int)sqlDataReader["Evento"]);

                        // Combustible
                        ubicacion.CombustibleGlobal = ((int)sqlDataReader["VolumenCombustibleGlobal"]);

                        // Transformamos el string de 1,1,1,1 a una lista de enteros para asignarla a la ubicacion
                        string volumenesFlat = (string)sqlDataReader["VolumenesCombustible"];
                        ubicacion.VolumenesCombustible = comasToLista(volumenesFlat);

                        string crudosFlat = (string)sqlDataReader["VolumenesCombustibleCrudos"];
                        ubicacion.VolumenesCombustibleCrudos = comasToLista(crudosFlat);

                        string nivelesFlat = (string)sqlDataReader["NivelesCombustible"];
                        ubicacion.NivelesCombustible = comasToLista(nivelesFlat);

                        //datos de geocerca
                        if (!DBNull.Value.Equals(sqlDataReader["geocerca"]))
                        {

                            string geoID = (string)sqlDataReader["geocerca"];
                            //Verificamos si se tiene un nombre de la geocerca. De lo contrario no guardar
                            if (NombresGeocercas.Find(x => x.GeocercaID == geoID) != null)
                            {
                                ReporteGeocerca reporte = new ReporteGeocerca();
                                reporte.GeocercaID = geoID;
                                string nombre = NombresGeocercas.Find(x => x.GeocercaID == reporte.GeocercaID).Nombre;
                                reporte.GeocercaNombre = (!string.IsNullOrEmpty(nombre)) ? nombre : "";
                                reporte.FechaHora = (DateTime)sqlDataReader["fechahora"];
                                reporte.Accion = (int)sqlDataReader["accion"];//accion 0 - entrada. accion 1 = salida
                                ubicacion.DatosGeocerca = reporte;
                            }
                        }
                        listaUbicaciones.Add(ubicacion);
                    }
                }
            }
        }

        return listaUbicaciones;
    }
コード例 #2
0
    /// <summary>
    /// Obtiene la última posicion de las unidades pedidas, version para Zeek Transporte, considera funcionalidad de combustible.
    /// </summary>
    /// <param name="unidades">Arreglo de identificadores de las unidades</param>
    /// <returns></returns>
    public static List<Ubicacion> UltimaUbicacionTransporte(List<string> unidades, string cliente)
    {
        //query con notificacion geocercas
        // p.unidad, fecha, velocidad, latitud, longitud, evento, VolumenCombustibleGlobal, VolumenesCombustible, r.accion, r.fechahora, r.geocerca
        string query = "select * " +
                       "from posicionactualCombustible p " +
                       "left outer join reportegeocercaactual r " +
                       "on p.unidad=r.unidad " +
                       "where p.unidad in (";

        //concatenar las unidades en el query
        foreach (string unidad in unidades)
            query += "'" + unidad + "', ";
        //quitar la última coma y espacio
        query = query.Remove(query.Length - 2);
        //agregar los dos paréntesis finales.
        query += ")";

        Ubicacion ubicacion;
        List<Ubicacion> listaUbicaciones = new List<Ubicacion>();
        List<Geocerca> NombresGeocercas = GeocercasBD.getGeocercasNombre(cliente);
        using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringBD"].ConnectionString))
        {
            sqlConnection.Open();
            using (SqlCommand sqlCommand = new SqlCommand(query, sqlConnection))
            {
                using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
                {
                    while (sqlDataReader.Read())
                    {
                        ubicacion = new Ubicacion();
                        ubicacion.Unidad = (string)sqlDataReader["Unidad"];
                        ubicacion.Fecha = (DateTime)sqlDataReader["Fecha"];
                        ubicacion.Velocidad = (int)((double)sqlDataReader["Velocidad"]);

                        int latitud = (int)sqlDataReader["Latitud"];
                        int longitud = (int)sqlDataReader["Longitud"];
                        System.Drawing.PointF p = GPSInfo.ParseLatitudLongitud(latitud, longitud);
                        ubicacion.Latitud = p.Y;
                        ubicacion.Longitud = p.X;
                        ubicacion.Evento = (byte)((int)sqlDataReader["Evento"]);

                        //ubicacion.odometro = (int)sqlDataReader["uodo"];
                        //ubicacion.orientacion = (int)sqlDataReader["uori"];

                        // Combustible
                        if (DataRecordExtensions.HasColumn(sqlDataReader, "VolumenCombustibleGlobal"))
                        {
                            if (!DBNull.Value.Equals(sqlDataReader["VolumenCombustibleGlobal"]))
                            {
                                ubicacion.CombustibleGlobal = ((int)sqlDataReader["VolumenCombustibleGlobal"]);

                                // Transformamos el string de 1,1,1,1 a una lista de enteros para asignarla a la ubicacion
                                string volumenesFlat = (string)sqlDataReader["VolumenesCombustible"];
                                List<string> volumenesString = volumenesFlat.Split(',').ToList();
                                List<int> volumenes = new List<int>();
                                foreach (string v in volumenesString)
                                {
                                    volumenes.Add(int.Parse(v));
                                }
                                ubicacion.VolumenesCombustible = volumenes;
                            }
                        }

                        if (DataRecordExtensions.HasColumn(sqlDataReader, "ubat"))
                        {
                            if (!DBNull.Value.Equals(sqlDataReader["ubat"]))
                            {
                                ubicacion.porcentajeBateria = (int)sqlDataReader["ubat"];
                            }
                        }

                       	// Valor artificial para ser no desplegado, nunca deberian llegar a el, estan en el infierno...
                        ubicacion.temperatura = 666;
                        ubicacion.sensoresTemperatura = new List<double>();
                       	// Si tiene campos de TPV
                        if (DataRecordExtensions.HasColumn(sqlDataReader, "temperatura") && DataRecordExtensions.HasColumn(sqlDataReader, "presion"))
                        {
                            if (!DBNull.Value.Equals(sqlDataReader["temperatura"]))
                            {
                                ubicacion.temperatura = (double)sqlDataReader["temperatura"];
                            }
                        }

                        if (DataRecordExtensions.HasColumn(sqlDataReader, "temperaturas"))
                        {
                            if (!DBNull.Value.Equals(sqlDataReader["temperaturas"]))
                            {
                                ubicacion.sensoresTemperatura = extraerTemperaturas((string)sqlDataReader["temperaturas"]);
                            }
                            if (!DBNull.Value.Equals(sqlDataReader["EstadoThermo"]))
                            {
                                ubicacion.estatusTermo = Int32.Parse((string)sqlDataReader["EstadoThermo"]);
                            }
                        }

                        //datos de geocerca
                        if (!DBNull.Value.Equals(sqlDataReader["geocerca"]))
                        {

                            string geoID = (string)sqlDataReader["geocerca"];
                            //Verificamos si se tiene un nombre de la geocerca. De lo contrario no guardar
                            if (NombresGeocercas.Find(x => x.GeocercaID == geoID) != null)
                            {
                                ReporteGeocerca reporte = new ReporteGeocerca();
                                reporte.GeocercaID = geoID;
                                string nombre = NombresGeocercas.Find(x => x.GeocercaID == reporte.GeocercaID).Nombre;
                                reporte.GeocercaNombre = (!string.IsNullOrEmpty(nombre)) ? nombre : "";
                                reporte.FechaHora = (DateTime)sqlDataReader["fechahora"];
                                reporte.Accion = (int)sqlDataReader["accion"];//accion 0 - entrada. accion 1 = salida
                                ubicacion.DatosGeocerca = reporte;
                            }
                        }
                        listaUbicaciones.Add(ubicacion);
                    }
                }
            }
        }

        return listaUbicaciones;
    }