260 lines
13 KiB
VB.net
260 lines
13 KiB
VB.net
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
|
|
Imports System.Net.Http
|
|
|
|
Partial Class GPS_TrayectoDetalle
|
|
Inherits ClsPaginas
|
|
|
|
#Region "P R O P I E D A D E S"
|
|
Private Property DtGeocercas As DataTable
|
|
Get
|
|
Return CType(ViewState("DtGeocercas"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtGeocercas") = 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
|
|
#End Region
|
|
|
|
Private Property CveTrayecto As Integer
|
|
Get
|
|
Return CType(ViewState("CveTrayecto"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveTrayecto") = value
|
|
End Set
|
|
End Property
|
|
|
|
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
If Not Page.IsPostBack Then
|
|
DirectCast(Master.FindControl("TSM"), ScriptManager).EnablePageMethods = True
|
|
CveTrayecto = Request("CveTrayecto").ToString().ToEntero()
|
|
If CveTrayecto > 0 Then
|
|
CargaTrayectoHistorial(CveTrayecto)
|
|
CargaReporte()
|
|
End If
|
|
End If
|
|
End Sub
|
|
Private Sub CargaTrayectoHistorial(CveTrayecto As Integer)
|
|
Dim ObjGPS As New ClsGPS
|
|
Try
|
|
If CveTrayecto > 0 Then
|
|
RegistraScript("initMap();")
|
|
If ObjGPS.GetTrayectosEstatusHistorial(CveTrayecto) Then
|
|
Dim Direcciones = ConsultarDirecciones(ObjGPS.DtResultados)
|
|
For Each Dir As JObject In Direcciones
|
|
ObjGPS.DtResultados.Rows(Dir("Indice").ToEntero())("Direccion") = Dir("Direccion").ToString()
|
|
Next
|
|
GvEstatus.DataSource = ObjGPS.DtResultados
|
|
GvEstatus.DataBind()
|
|
End If
|
|
If ObjGPS.GetTrayectosDatos(CveTrayecto) Then
|
|
Dim DtDatos = ObjGPS.DtSetResultados.Tables(0)
|
|
If DtDatos.Rows.Count > 0 Then
|
|
Dim RowEstatus As DataRow = DtDatos.Rows(0)
|
|
LblTitulo.Text = $"Trayecto: {RowEstatus("Trayecto")}"
|
|
LtlEstatusActual.Text = RowEstatus("Estatus").ToString()
|
|
LtlDispositivo.Text = RowEstatus("Vehiculo").ToString()
|
|
LtlFechaI.Text = If(String.IsNullOrEmpty(RowEstatus("FechaInicio").ToString()), "No ha ingresado a la geocerca de inicio", String.Format("{0:dd/MM/yyyy HH:mm tt}", RowEstatus("FechaInicio").ToString().ToDateTime()))
|
|
LtlFechaF.Text = If(String.IsNullOrEmpty(RowEstatus("FechaFin").ToString()), "No ha Terminado", String.Format("{0:dd/MM/yyyy HH:mm tt}", RowEstatus("FechaFin").ToString().ToDateTime()))
|
|
LtlVMedia.Text = String.Format("{0:N2} KM/H", RowEstatus("VMedia"))
|
|
LtlVMax.Text = String.Format("{0:N2} KM/H", RowEstatus("VMax"))
|
|
LtlTiempo.Text = String.Format("{0}", RowEstatus("TiempoOperativo"))
|
|
LtlKM.Text = String.Format("{0:N2} KM", RowEstatus("Dist"))
|
|
LtlExcesosVelo.Text = String.Format("{0}", RowEstatus("ExcesosVelocidad"))
|
|
|
|
LtlCombustibleI.Text = If(String.IsNullOrEmpty(RowEstatus("CombustibleInicial").ToString()), "No Disponible", String.Format("{0:N2}", RowEstatus("CombustibleInicial")))
|
|
LtlCombustibleF.Text = If(String.IsNullOrEmpty(RowEstatus("CombustibleFinal").ToString()), "No Disponible", String.Format("{0:N2}", RowEstatus("CombustibleFinal")))
|
|
|
|
LtlCargas.Text = String.Format("{0:N0}", RowEstatus("Cargas"))
|
|
LtlDescargas.Text = String.Format("{0:N0}", RowEstatus("Descargas"))
|
|
LtlCombustibleConsumido.Text = String.Format("{0:N2} L", RowEstatus("CombustibleConsumido"))
|
|
LtlRendimiento.Text = String.Format("{0:N2} KM/L", RowEstatus("Rendimiento"))
|
|
|
|
GvIgnicion.DataSource = ObjGPS.DtSetResultados.Tables(1)
|
|
GvIgnicion.DataBind()
|
|
|
|
GvExcesos.DataSource = ObjGPS.DtSetResultados.Tables(2)
|
|
GvExcesos.DataBind()
|
|
|
|
GvRalenti.DataSource = ObjGPS.DtSetResultados.Tables(3)
|
|
GvRalenti.DataBind()
|
|
|
|
GvCombustible.DataSource = ObjGPS.DtSetResultados.Tables(4)
|
|
GvCombustible.DataBind()
|
|
|
|
GvGastos.DataSource = ObjGPS.DtSetResultados.Tables(5)
|
|
GvGastos.DataBind()
|
|
|
|
End If
|
|
End If
|
|
Dim count = 0
|
|
If ObjGPS.GetTrayectosGeoReferencias(CveTrayecto) Then
|
|
DtGeocercas = ObjGPS.DtResultados
|
|
If DtGeocercas IsNot Nothing Then
|
|
Dim Coord As String = ""
|
|
Dim CoordAnterior As String = ""
|
|
Dim CveEstatus As Integer = -1
|
|
Dim CveEstatusAnterior As Integer = -1
|
|
'GEOCERCAS
|
|
For Each Row As DataRow In DtGeocercas.Rows
|
|
count += 1
|
|
Coord = SQLToGmaps(Row("Geom").ToString, "POLYGON")
|
|
CveEstatus = Row("CveEstatusTrayecto").ToString.ToEntero
|
|
CveEstatusAnterior = Row("CveEstatusAnterior").ToString.ToEntero
|
|
Dim EsInicio As Boolean = CBool(IfNull(Row("EsInicio"), 0))
|
|
Dim EsFin As Boolean = CBool(IfNull(Row("EsFin"), 0))
|
|
Dim InicioFin As Integer = If(EsInicio, 1, If(EsFin, 2, 0))
|
|
RegistraScript($"creaPoligono({Coord}, '{Row("Color").ToString}', '{Row("GeoReferencia")}', '{Row("EstatusTrayecto")}',{InicioFin},{CveEstatus},{CveEstatusAnterior})", count.ToString())
|
|
Next
|
|
End If
|
|
End If
|
|
If ObjGPS.GetTrayectosHistorial(CveTrayecto, UsuarioActual.CveCliente) Then
|
|
DtPosiciones = ObjGPS.DtResultados
|
|
If DtPosiciones IsNot Nothing Then
|
|
Dim Fecha, Vehiculo, Icono, CoordDis, Info As String
|
|
For Each Row As DataRow In DtPosiciones.Rows
|
|
CoordDis = Row("PosicionVehiculo").ToString.SQLToGmaps("POINT")
|
|
Fecha = Row("FechaTrama").ToString
|
|
Vehiculo = Row("Vehiculo").ToString
|
|
Info = InfoWindow($"{Row("EventoTexto")}", "-1", Row("CveDispositivo").ToString.ToEntero, Row, PermisoComandos:=False)
|
|
If Row("Velocidad").ToString.ToDouble > 1 Then
|
|
Icono = $"/Imagenes/{Row("Icono")}green.png"
|
|
Else
|
|
Icono = $"/Imagenes/{Row("Icono")}.png"
|
|
End If
|
|
RegistraScript($"CreaMarcador({CoordDis},'{Row("Vehiculo")}', '{Info}', '{Icono}');", count.ToString())
|
|
Next
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al consultar el trayecto.", ex)
|
|
End Try
|
|
ObjGPS.Dispose()
|
|
|
|
'UpIgniciones.Update()
|
|
'UpEventos.Update()
|
|
End Sub
|
|
Public Sub CargaReporte()
|
|
Dim ObjGPS As New ClsGPS
|
|
If ObjGPS.GetTrayectosDetalle(CveTrayecto) Then
|
|
Dim Direcciones = ConsultarDirecciones(ObjGPS.DtResultados)
|
|
|
|
If Direcciones IsNot Nothing Then
|
|
For Each Dir As JObject In Direcciones
|
|
ObjGPS.DtResultados.Rows(Dir("Indice").ToEntero())("Direccion") = Dir("Direccion").ToString()
|
|
Next
|
|
End If
|
|
|
|
GvEventos.DataSource = ObjGPS.DtResultados
|
|
End If
|
|
ObjGPS.Dispose()
|
|
GvEventos.DataBind()
|
|
UpEventos.Update()
|
|
'RegistraScript("$('#ShowDiv3').click();")
|
|
End Sub
|
|
|
|
Public Function ConsultarDirecciones(Dt As DataTable) As JArray
|
|
Dim retorno As JArray = Nothing
|
|
Dim posicionesArray = New JArray(From Row As DataRow In Dt
|
|
Let index = Dt.Rows().IndexOf(Row)
|
|
Select New JObject(
|
|
New JProperty("indice", index),
|
|
New JProperty("cveTrama", -1),
|
|
New JProperty("lat", Row("Lat").ToString.ToDouble),
|
|
New JProperty("lon", Row("Lng").ToString.ToDouble)
|
|
))
|
|
|
|
Dim Base64array = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(posicionesArray.ToString()))
|
|
|
|
Using wc As New HttpClient()
|
|
Try
|
|
Dim Url = New Uri(String.Format("{0}nominatim/reverseMultiple.php", ClsPaginas.UrlDirecciones))
|
|
Dim FormStuff = String.Format("formato=json&posiciones={0}", Base64array)
|
|
Dim content = New StringContent(FormStuff, Encoding.UTF8, "application/x-www-form-urlencoded")
|
|
Dim response = wc.PostAsync(Url, content).Result
|
|
Dim result = response.Content.ReadAsStringAsync().Result
|
|
retorno = JArray.Parse(result)
|
|
response.Dispose()
|
|
content = Nothing
|
|
Url = Nothing
|
|
FormStuff = Nothing
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al obtener las direcciones", ex)
|
|
End Try
|
|
End Using
|
|
Return retorno
|
|
End Function
|
|
|
|
Protected Sub BtnTerminarTrayeto_Click(sender As Object, e As EventArgs)
|
|
Dim DtEstatus As DataTable = Nothing
|
|
Dim ObjGPS As New ClsGPS
|
|
If ObjGPS.GetEstatusTrayectos(-1, UsuarioActual.CveCliente) Then
|
|
DtEstatus = ObjGPS.DtResultados.Copy()
|
|
End If
|
|
Dim CveEstatusFinal As Integer = DtEstatus.FiltroPrimeroValor("CveEstatusTrayecto", "EsFin = True").ToEntero()
|
|
If CveEstatusFinal > 0 Then
|
|
If ObjGPS.UpdateTrayectoEstatus(CveTrayecto, CveEstatusFinal) Then
|
|
Alert("El trayecto se finalizo correctamente")
|
|
End If
|
|
Else
|
|
Alert("No se pudo obtener el estatus final", TipoMensaje.MsgError)
|
|
End If
|
|
ObjGPS.Dispose()
|
|
End Sub
|
|
Protected Sub GvGastos_RowDataBound(sender As Object, e As GridViewRowEventArgs)
|
|
If e.Row.RowType = DataControlRowType.DataRow Then
|
|
If String.IsNullOrEmpty(e.Row.DBCampo("CveGPSGasto")) Then
|
|
e.Row.CssClass = "Totales"
|
|
End If
|
|
End If
|
|
End Sub
|
|
Protected Sub LimpiaModal()
|
|
TxtCantidad.Text = ""
|
|
TxtPrecio.Text = ""
|
|
TxtDescripcion.Text = ""
|
|
TxtObs.Text = ""
|
|
TxtFecha.Text = ""
|
|
End Sub
|
|
Protected Sub LnkAgregar_Click(sender As Object, e As EventArgs)
|
|
LimpiaModal()
|
|
'Modalidad = "A"
|
|
BtnGuardar.Text = "Agregar"
|
|
ltlMotititulo.Text = "Agregar Gasto"
|
|
|
|
UpModal.Update()
|
|
RegistraScript("$('#DModal').modal()")
|
|
End Sub
|
|
Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs)
|
|
Dim ObjPS As New ClsGPS
|
|
'If Modalidad = "A" Then
|
|
|
|
'ElseIf Modalidad = "U" Then
|
|
' If ObjPS.UpdateGasto(CveGPSGasto, TxtCantidad.Text.ToDecimal(), TxtPrecio.Text.Trim().ToDecimal(), TxtDescripcion.Text.Trim(), TxtObs.Text.Trim(), TxtFecha.Text.ToDateTime(), UsuarioActual.CveUsuario) Then
|
|
' RegistraScript("$('#DModal').modal('hide')")
|
|
' Alert("El Gasto se agregó correctamente.", TipoMensaje.MsgInformacion)
|
|
' End If
|
|
'End If
|
|
If ObjPS.AddGasto(TxtCantidad.Text.ToDecimal(), TxtPrecio.Text.Trim().ToDecimal(), TxtDescripcion.Text.Trim(), TxtObs.Text.Trim(), TxtFecha.Text.ToDateTime(),
|
|
2, UsuarioActual.CveUsuario, UsuarioActual.CveCliente, CveTrayecto:=Me.CveTrayecto) Then
|
|
RegistraScript("$('#DModal').modal('hide')")
|
|
Alert("El Gasto se agregó correctamente.", TipoMensaje.MsgInformacion)
|
|
End If
|
|
ObjPS.Dispose()
|
|
'CargaDatos()
|
|
End Sub
|
|
End Class
|