Files
SIG/GPS/TrayectoDetalle.aspx.vb

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