Option Strict On Option Explicit On Imports System.Data Imports System.IO Imports System.Net Imports Extensiones Imports Microsoft.Reporting.WebForms Imports Newtonsoft.Json.Linq Imports System.Linq Partial Class GPS_RastreoTrayectos Inherits Page #Region "P R O P I E D A D E S" Private Property TrazarLineaContinuo As Boolean Get Return CType(ViewState("TrazarLineaContinuo"), Boolean) End Get Set(value As Boolean) ViewState("TrazarLineaContinuo") = value End Set End Property Private Property CveTrayecto As Integer Get Return IfNull(ViewState("CveTrayecto"), -1, ViewState("CveTrayecto").ToString().ToEntero()).ToString().ToEntero() End Get Set(value As Integer) ViewState("CveTrayecto") = value End Set End Property Private Property CveDispositivo As Integer Get Return IfNull(ViewState("CveDispositivo"), -1, ViewState("CveDispositivo").ToString().ToEntero()).ToString().ToEntero() End Get Set(value As Integer) ViewState("CveDispositivo") = value End Set End Property Private Property CveCliente As Integer Get Return IfNull(ViewState("CveCliente"), -1, ViewState("CveCliente").ToString().ToEntero()).ToString().ToEntero() End Get Set(value As Integer) ViewState("CveCliente") = value End Set End Property Private Property DtCoordenadasContinuas As DataTable Get Return CType(ViewState("DtCoordenadasContinuas"), DataTable) End Get Set(value As DataTable) ViewState("DtCoordenadasContinuas") = value End Set End Property Private Property DtPosiciones As DataTable Get Return CType(ViewState("DtPosiciones"), DataTable) End Get Set(value As DataTable) ViewState("DtPosiciones") = value End Set End Property Property GlobalDTDispositivos(CveCliente As Integer) As DataTable Get Dim Str As StringBuilder = New StringBuilder() If CveCliente <> -1 Then Str.AppendFormat(" {0} CveCliente = {1}", If(Str.Length > 0, "AND", ""), CveCliente) If CveCliente <> -1 Then Dim Dv As New DataView(DirectCast(HttpContext.Current.Application("GlobalDTDispositivos"), DataTable), Str.ToString, "", DataViewRowState.CurrentRows) GlobalDTDispositivos = Dv.ToTable Dv.Dispose() Else GlobalDTDispositivos = DirectCast(HttpContext.Current.Application("GlobalDTDispositivos"), DataTable) End If End Get Set(value As DataTable) HttpContext.Current.Application("GlobalDTDispositivos") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then RegistraScript("$('#SideNav').click();initMap();") Me.CveTrayecto = 97 CreaDTPosiciones() CargaDatos() RastrearEquipos() CargaTabla() End If End Sub Private Sub CreaDTPosiciones() DtPosiciones = Nothing Dim dt As New DataTable dt.Columns.Add("CveDispositivo", Type.GetType("System.Int32")) dt.Columns.Add("Vehiculo", Type.GetType("System.String")) dt.Columns.Add("Fecha", Type.GetType("System.String")) dt.Columns.Add("Evento", Type.GetType("System.String")) dt.Columns.Add("TiempoDetenido", Type.GetType("System.Double")) dt.Columns.Add("Velocidad", Type.GetType("System.Double")) dt.Columns.Add("Posicion", Type.GetType("System.String")) dt.Columns.Add("KMRecorridos", Type.GetType("System.Double")) dt.Columns.Add("Icono", Type.GetType("System.String")) DtPosiciones = dt End Sub Private Sub CreaDTCoordenadas() Dim dt As New DataTable dt.Columns.Add("CveDispositivo", Type.GetType("System.Int32")) dt.Columns.Add("Coord", Type.GetType("System.String")) DtCoordenadasContinuas = dt End Sub Private Sub CargaDatos() Using ObjGPS As New ClsGPS If ObjGPS.GetTrayectos(CveTrayecto, -1, -1) AndAlso ObjGPS.DtResultados.Rows.Count > 0 Then Dim Row As DataRow = ObjGPS.DtResultados.Rows(0) Me.CveDispositivo = Row("CveDispositivo").ToString().ToEntero() Me.CveCliente = Row("CveCliente").ToString().ToEntero() End If End Using TrazarLineaContinuo = True CreaDTCoordenadas() End Sub Protected Sub TimmerRefresh_Tick(sender As Object, e As EventArgs) DtPosiciones.Rows.Clear() RegistraScript("DeleteMarkers();") Dim LastCoord As String = "" Dim TmpDT As New DataTable Dim Info = "" Dim Direccion = "" Dim SBBody As New StringBuilder Dim Icono As String = "/Imagenes/rsz_11rsz_car.png" Dim Fecha, Vehiculo As String Dim ObjGPS As New ClsGPS Try Dim RowVehiculo As DataRow = GlobalDTDispositivos(CveCliente).FiltroPrimero($"CveDispositivo = {CveDispositivo}") If ObjGPS.UltimaPosicionEquipoGet(CveDispositivo, MinFecha, MaxFecha) Then If ObjGPS.DtResultados.Rows.Count > 0 Then Dim Coord As String = SQLToGmaps(ObjGPS.DtResultados.Rows(0)("Posicion").ToString, "POINT") Fecha = ObjGPS.DtResultados.Rows(0)("FechaTrama").ToString Vehiculo = ObjGPS.DtResultados.Rows(0)("Vehiculo").ToString Info = InfoWindowCombustible($" Vehículo: {Vehiculo}", "-1", CveDispositivo, ObjGPS.DtResultados.Rows(0), False) If ObjGPS.DtResultados.Rows(0)("SPD").ToString.ToDouble > 1 Then Icono = $"/Imagenes/{RowVehiculo("Icono")}green.png" Else Icono = $"/Imagenes/{RowVehiculo("Icono")}.png" End If AddRowCoordenadasContinuas(Coord, CveDispositivo) Dim POLYPATH As String = "[" For Each RCC As DataRow In DtCoordenadasContinuas.FiltraParametros($"CveDispositivo = {CveDispositivo}", DistinctColumns:={"CveDispositivo", "Coord"}).Rows POLYPATH = $"{POLYPATH}{RCC("Coord").ToString}," Next POLYPATH = $"{POLYPATH.Substring(0, POLYPATH.Length - 1)}]" RegistraScript($"creaPolyline({POLYPATH}, '{RowVehiculo("ColorTrazo")}', '{Info}', {Coord}, '{RowVehiculo("NombreVehiculo")}', '{Icono}',{CveDispositivo}, 1)", $"{CveDispositivo}{DtCoordenadasContinuas.Rows.Count}") RegistraScript($"setTimeout(function(){{ CreaMarcador({Coord},'{RowVehiculo("NombreVehiculo").ToString()}', '{Info}', '{Icono}');}}, 1000);", CveDispositivo.ToString()) AddRowPosiciones(Vehiculo, Coord, ObjGPS.DtResultados.Rows(0)("SPD").ToString.ToDouble, Fecha, CveDispositivo, ObjGPS.DtResultados(0)("TiempoDetenido").ToString.ToDouble) End If End If TimmerRefresh.Enabled = True Catch ex As Exception OnError("Ocurrió un error al rastrear equipo", ex) End Try End Sub Private Sub RastrearEquipos() Dim LastCoord As String = "" Dim TmpDT As New DataTable Dim Info = "" Dim Direccion = "" Dim SBBody As New StringBuilder Dim Icono As String = "/Imagenes/rsz_11rsz_car.png" Dim Fecha, Vehiculo As String Dim ObjGPS As New ClsGPS Try Dim RowVehiculo As DataRow = GlobalDTDispositivos(CveCliente).FiltroPrimero($"CveDispositivo = {CveDispositivo}") If ObjGPS.UltimaPosicionEquipoGet(CveDispositivo, MinFecha, MaxFecha) Then If ObjGPS.DtResultados.Rows.Count > 0 Then Dim Coord As String = SQLToGmaps(ObjGPS.DtResultados.Rows(0)("Posicion").ToString, "POINT") Fecha = ObjGPS.DtResultados.Rows(0)("FechaTrama").ToString Vehiculo = ObjGPS.DtResultados.Rows(0)("Vehiculo").ToString Info = InfoWindowCombustible($" Vehículo: {Vehiculo}", "-1", CveDispositivo, ObjGPS.DtResultados.Rows(0), False) If ObjGPS.DtResultados.Rows(0)("SPD").ToString.ToDouble > 1 Then Icono = $"/Imagenes/{RowVehiculo("Icono")}green.png" Else Icono = $"/Imagenes/{RowVehiculo("Icono")}.png" End If AddRowCoordenadasContinuas(Coord, CveDispositivo) RegistraScript($"setTimeout(function(){{ CreaMarcador({Coord},'{RowVehiculo("NombreVehiculo").ToString()}', '{Info}', '{Icono}');}}, 1000);", CveDispositivo.ToString()) AddRowPosiciones(Vehiculo, Coord, ObjGPS.DtResultados.Rows(0)("SPD").ToString.ToDouble, Fecha, CveDispositivo, ObjGPS.DtResultados(0)("TiempoDetenido").ToString.ToDouble) End If End If TimmerRefresh.Enabled = True Catch ex As Exception OnError("Ocurrió un error al rastrear equipo", ex) End Try ObjGPS.Dispose() End Sub Private Sub CargaTabla() If DtPosiciones IsNot Nothing Then GvBarra.DataSource = DtPosiciones GvBarra.DataBind() End If If GvBarra.HeaderRow IsNot Nothing Then GvBarra.HeaderRow.Cells(3).Style.Add("display", "") GvBarra.HeaderRow.Cells(4).Style.Add("display", "none !important") End If End Sub Private Sub AddRowCoordenadasContinuas(Coord As String, CveDispositivo As Integer) Dim dr As DataRow = DtCoordenadasContinuas.NewRow() dr("CveDispositivo") = CveDispositivo dr("Coord") = Coord DtCoordenadasContinuas.Rows.Add(dr) End Sub Private Sub AddRowPosiciones(Vehiculo As String, Posicion As String, Velocidad As Double, Fecha As String, CveDispositivo As Integer, Optional TiempoDetenido As Double = 0, Optional Evento As String = "", Optional KMRecorridos As Double = 0, Optional Icono As String = "/Imagenes/rsz_11rsz_car.png") Dim dr As DataRow = DtPosiciones.NewRow() dr("Vehiculo") = Vehiculo dr("Fecha") = Fecha dr("TiempoDetenido") = TiempoDetenido dr("Velocidad") = Velocidad dr("Posicion") = Posicion dr("CveDispositivo") = CveDispositivo dr("Evento") = Evento dr("KMRecorridos") = KMRecorridos dr("Icono") = Icono DtPosiciones.Rows.Add(dr) End Sub Public Function InfoWindowCombustible(Header As String, ExtraBody As String, CveDispositivo As Integer, row As DataRow, Optional PermisoComandos As Boolean = True) As String Dim SBuilder As New StringBuilder SBuilder.Clear() SBuilder.Append($"
| Fecha : {row("FechaTrama")} |
| Conductor : {row("Conductor").ToString} |
| Combustible : {IfNull(row("Combustible"), "NO DISPONIBLE", $"{row("Combustible").ToString.FormatoNumero} lts").ToString} |
| Velocidad : {row("SPD").ToString} KM/H |
| Ver en google maps |