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