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_Trayectos Inherits ClsPaginas #Region "P R O P I E D A D E S" Private Property DtGeocercasAgregar As DataTable Get Return CType(ViewState("DtGeocercasAgregar"), DataTable) End Get Set(value As DataTable) ViewState("DtGeocercasAgregar") = value End Set End Property 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 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 CargaDatos() End If End Sub Private Sub CargaDatos() CargaDispositivos() CargaGeoReferencias() CargaEstatus() CargaDdlTrayectos() CargaTrayectos() End Sub Public Sub CargaDispositivos() DdlDispositivo.DataSource = GlobalDTDispositivosUsuarios(UsuarioActual.CveCliente, UsuarioActual.CveUsuario) DdlDispositivo.DataBind() DdlDispositivo.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlDispositivoNuevo.DataSource = GlobalDTDispositivosUsuarios(UsuarioActual.CveCliente, UsuarioActual.CveUsuario) DdlDispositivoNuevo.DataBind() DdlDispositivoNuevo.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlDispositivoFiltro.DataSource = GlobalDTDispositivosUsuarios(UsuarioActual.CveCliente, UsuarioActual.CveUsuario) DdlDispositivoFiltro.DataBind() DdlDispositivoFiltro.Items.Insert(0, New ListItem("Seleccione", "-1")) UpAgregar.Update() End Sub Public Sub CargaGeoReferencias() Dim ObjGPS As New ClsGPS If ObjGPS.GeoReferenciaGet(-1, 1, "-1", UsuarioActual.CveCliente) Then DtGeocercasAgregar = ObjGPS.DtResultados.Copy() End If ObjGPS.Dispose() DdlGeocerca.DataSource = DtGeocercasAgregar DdlGeocerca.DataBind() DdlGeocerca.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Public Sub CargaTrayectos() Dim FechaI As String = If(IsDate(txtFechaI.Text), txtFechaI.Text, "-1") Dim FechaF As String = If(IsDate(txtFechaF.Text), txtFechaF.Text, "-1") Dim ObjGPS As New ClsGPS If ObjGPS.GetTrayectos(-1, DdlDispositivoFiltro.SelectedValue.ToEntero(), UsuarioActual.CveCliente, DdlEstatusTrayecto.SelectedValue.ToEntero(), FechaI, FechaF) Then If ChkActivas.Checked Then GvBarra.DataSource = ObjGPS.DtResultados.FiltraParametros($"EsFin = False") Else GvBarra.DataSource = ObjGPS.DtResultados End If End If ObjGPS.Dispose() GvBarra.DataBind() UPGV.Update() End Sub Public Sub CargaDdlTrayectos() Dim ObjGPS As New ClsGPS If ObjGPS.GetTrayectos(-1, -1, UsuarioActual.CveCliente) Then DdlTrayecto.DataSource = ObjGPS.DtResultados.FiltraParametros("EsFin = True") End If ObjGPS.Dispose() DdlTrayecto.DataBind() UpAgregar.Update() End Sub Public Sub CargaEstatus() Dim ObjGPS As New ClsGPS If ObjGPS.GetEstatusTrayectos(-1, UsuarioActual.CveCliente) Then GvEstatus.DataSource = ObjGPS.DtResultados GvEstatusNuevo.DataSource = ObjGPS.DtResultados DdlEstatusTrayecto.DataSource = ObjGPS.DtResultados End If ObjGPS.Dispose() GvEstatus.DataBind() GvEstatusNuevo.DataBind() DdlEstatusTrayecto.DataBind() DdlEstatusTrayecto.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Protected Sub GvEstatus_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then e.Row.FCDropDownList("DdlGeocerca").DataSource = DtGeocercasAgregar e.Row.FCDropDownList("DdlGeocerca").DataBind() Dim EsInicio As Boolean = CBool(If(String.IsNullOrEmpty(e.Row.DBCampo("EsInicio")), "False", e.Row.DBCampo("EsInicio"))) Dim EsFin As Boolean = CBool(If(String.IsNullOrEmpty(e.Row.DBCampo("EsFin")), "False", e.Row.DBCampo("EsFin"))) If EsInicio OrElse EsFin Then e.Row.FCCheckBox("chkDis").Checked = True e.Row.FCCheckBox("chkDis").Enabled = False Else e.Row.FCCheckBox("chkDis").CssClass = "ChkAllEvt" End If e.Row.FCLinkButton("imgE").OnClientClick = $"CargaModalGeo({e.Row.RowIndex}); return false;" End If End Sub Protected Sub GvEstatusNuevo_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then e.Row.FCDropDownList("DdlGeocerca").DataSource = DtGeocercasAgregar e.Row.FCDropDownList("DdlGeocerca").DataBind() Dim EsInicio As Boolean = CBool(If(String.IsNullOrEmpty(e.Row.DBCampo("EsInicio")), "False", e.Row.DBCampo("EsInicio"))) Dim EsFin As Boolean = CBool(If(String.IsNullOrEmpty(e.Row.DBCampo("EsFin")), "False", e.Row.DBCampo("EsFin"))) If EsInicio OrElse EsFin Then e.Row.FCCheckBox("chkDis").Checked = True e.Row.FCCheckBox("chkDis").Enabled = False Else e.Row.FCCheckBox("chkDis").CssClass = "ChkAllEvt" End If If DtGeocercas IsNot Nothing Then Dim CveEstatus = e.Row.DataKey("CveEstatusTrayecto") Dim CveGeoReferencia = DtGeocercas.FiltroPrimeroValor("CveGeoReferencia", $"CveEstatusTrayecto={CveEstatus}") If Not String.IsNullOrEmpty(CveGeoReferencia) Then e.Row.FCDropDownList("DdlGeocerca").SelectedValue = CveGeoReferencia e.Row.FCCheckBox("chkDis").Checked = True End If End If End If End Sub Protected Sub BtnAgregar_Click(sender As Object, e As EventArgs) If GvEstatus.Rows.Count > 0 Then Dim Nombre As String = TxtNombre.Text Dim CveDispositivo As Integer = DdlDispositivo.SelectedValue.ToEntero Dim Rows = GvBarra.Rows.Cast(Of GridViewRow).Where(Function(x) x.RowType = DataControlRowType.DataRow) Dim TieneFilas As Boolean = True ' Rows.Any(Function(z) z.FCCheckBox("chkDis").Checked) 'Dim Filas = From Dr In GvBarra.Rows ' Where Dr.Row ' Select Row If TieneFilas Then Dim TieneError As Boolean = False Dim ObjGPS As New ClsGPS ObjGPS.IniciaTransacSQL() Try Dim CveTrayecto As Integer = ObjGPS.AddTrayecto(Nombre, DateTime.Now, "", CveDispositivo, UsuarioActual.CveCliente) If CveTrayecto > 0 Then For Each Row As GridViewRow In GvEstatus.Rows If Row.RowType = DataControlRowType.DataRow Then If Row.FCCheckBox("chkDis").Checked Then Dim CveGeoReferencia As Integer = Row.FCDropDownList("DdlGeocerca").SelectedValue.ToEntero Dim CveEstatusTrayecto As Integer = Row.DataKey("CveEstatusTrayecto").ToEntero If Not ObjGPS.AddTrayectoGeoReferencia(CveTrayecto, CveGeoReferencia, CveEstatusTrayecto) Then TieneError = True Exit For End If End If End If Next Else TieneError = True End If Catch ex As Exception OnError("Ocurrió un error al agregar el trayecto.", ex) End Try If TieneError Then ObjGPS.RollBack() Alert("Ocurrió un error al agregar el trayecto.", TipoMensaje.MsgError) Else ObjGPS.Commit() Alert("El trayecto se agrego correctamente.") End If ObjGPS.Dispose() RegistraScript("$('#DivAgregar').modal('hide');") Else Alert("No ha seleccionado ningun estatus para este trayecto.", TipoMensaje.MsgAdvertencia) End If Else Alert("No hay estatus seleccionables para este trayecto.", TipoMensaje.MsgAdvertencia) End If CargaDatos() End Sub Protected Sub LnkCrear_Click(sender As Object, e As EventArgs) Dim CveTrayecto As Integer = DdlTrayecto.SelectedValue.ToEntero If CveTrayecto > 0 Then Dim ObjGPS As New ClsGPS Dim TieneError As Boolean = False ObjGPS.IniciaTransacSQL() Try Dim Nombre As String = TxtNombreNuevo.Text Dim CveDispositivo As Integer = DdlDispositivoNuevo.SelectedValue.ToEntero If CveDispositivo > 0 Then Dim CveTrayectoNuevo As Integer = ObjGPS.AddTrayecto(Nombre, DateTime.Now, "", CveDispositivo, UsuarioActual.CveCliente) If CveTrayectoNuevo > 0 Then For Each Row As GridViewRow In GvEstatusNuevo.Rows If Row.RowType = DataControlRowType.DataRow Then If Row.FCCheckBox("chkDis").Checked Then Dim CveGeoReferencia As Integer = Row.FCDropDownList("DdlGeocerca").SelectedValue.ToEntero Dim CveEstatusTrayecto As Integer = Row.DataKey("CveEstatusTrayecto").ToEntero If Not ObjGPS.AddTrayectoGeoReferencia(CveTrayectoNuevo, CveGeoReferencia, CveEstatusTrayecto) Then TieneError = True Exit For End If End If End If Next Else TieneError = True End If End If Catch ex As Exception OnError("Ocurrió un error al agregar el trayecto.", ex) End Try If TieneError Then ObjGPS.RollBack() Alert("Ocurrió un error al agregar el trayecto.", TipoMensaje.MsgError) Else ObjGPS.Commit() Alert("El trayecto se agrego correctamente.") End If ObjGPS.Dispose() RegistraScript("$('#DivCrearApatir').modal('hide');") Else Alert("Debe seleccionar un trayecto.", TipoMensaje.MsgAdvertencia) End If CargaTrayectos() End Sub Private Sub LimpiaCampos() TxtNombre.Text = "" DdlDispositivo.SelectedIndex = 0 End Sub #Region "C O N S U L T A " Protected Sub LnkConsultar_Click(sender As Object, e As EventArgs) CargaTrayectos() End Sub #End Region Protected Sub GvBarra_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then e.Row.ID = String.Format("row{0}", e.Row.RowIndex) e.Row.Attributes.Add("idgv", e.Row.RowIndex.ToString) If e.Row.DBCampo("EsFin") = "True" Then e.Row.FCLabel("LblEstatus").CssClass = "badge badge-primary" ElseIf e.Row.DBCampo("EsInicio") = "True" Then e.Row.FCLabel("LblEstatus").CssClass = "badge badge-success" ElseIf e.Row.DBCampo("EsInicio") = "False" AndAlso e.Row.DBCampo("EsFin") = "False" Then e.Row.FCLabel("LblEstatus").CssClass = "badge badge-secondary" End If End If End Sub Protected Sub DdlTrayecto_SelectedIndexChanged(sender As Object, e As EventArgs) Dim CveTrayecto As Integer = DdlTrayecto.SelectedValue.ToEntero Dim ObjGPS As New ClsGPS If ObjGPS.GetTrayectosGeoReferencias(CveTrayecto) Then DtGeocercas = ObjGPS.DtResultados End If If ObjGPS.GetTrayectos(CveTrayecto, -1, UsuarioActual.CveCliente) Then If ObjGPS.DtResultados.Rows.Count > 0 Then DdlDispositivoNuevo.SelectedValueExist(ObjGPS.DtResultados.Rows(0)("CveDispositivo")) End If End If ObjGPS.Dispose() CargaEstatus() End Sub Protected Sub BtnAgregarGeoreferencia_Click(sender As Object, e As EventArgs) If String.IsNullOrEmpty(TxtNombreGeo.Text.Trim) Then Alert("El campo 'Nombre' es necesario favor de introducirlo.", TipoMensaje.MsgAdvertencia) RegistraScript("setTimeout(function(){ initMapGeo(); DeletemarkersGeo();},1000);") Return End If If String.IsNullOrEmpty(GeoCerca.Value.Trim) Then Alert("La GeoReferencia no tiene una geocerca dibujada.", TipoMensaje.MsgAdvertencia) RegistraScript("setTimeout(function(){ initMapGeo(); DeletemarkersGeo();},1000);") Return End If Dim Importe As Decimal = 0 Dim GeoRefString = $"POLYGON(({GeoCerca.Value} {CommandArg.Value}))" Dim TieneError As Boolean = False Dim ObjGPS As New ClsGPS ObjGPS.IniciaTransacSQL() Dim CveGeoReferencia As Integer = -1 If ObjGPS.AddGeoReferencia(TxtNombreGeo.Text, -1, GeoRefString, "Geocerca", True, "-1", "-1", -1, -1, -1, -1, -1, -1, -1, "-1", "-1", hdnColor.Value, -1, Importe, UsuarioActual.CveCliente, EsParada:=False) Then CveGeoReferencia = ObjGPS.CveGeoReferencia Else TieneError = True End If If TieneError Then ObjGPS.RollBack() Alert("Ocurrió un error al crear la GeoReferencia", TipoMensaje.MsgInformacion) Else ObjGPS.Commit() Alert("La GeoReferencia se agregó correctamente", TipoMensaje.MsgInformacion) End If ObjGPS.Dispose() UpGeocercas.Update() CargaGeoReferencias() Dim index As Integer = HdnIndexEstatus.Value.ToEntero() If index > -1 AndAlso CveGeoReferencia > 0 Then For Each GvRow As GridViewRow In GvEstatus.Rows If GvRow.RowType = DataControlRowType.DataRow Then GvRow.FCDropDownList("DdlGeocerca").DataSource = DtGeocercasAgregar GvRow.FCDropDownList("DdlGeocerca").DataBind() End If Next GvEstatus.Rows(index).FCDropDownList("DdlGeocerca").SelectedValueExist(CveGeoReferencia) End If UpAgregar.Update() RegistraScript("$('#DivGeocercas').modal('hide');") End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) CargaTrayectos() End Sub Protected Sub GvBarra_RowDeleting1(sender As Object, e As GridViewDeleteEventArgs) Dim CveTrayecto As Integer = GvBarra.Rows(e.RowIndex).DataKey("CveTrayecto").ToEntero() If CveTrayecto > 0 Then Dim ObjGPS As New ClsGPS() Dim TieneError As Boolean = Not ObjGPS.RemoveTrayecto(CveTrayecto) ObjGPS.Dispose() If Not TieneError Then Alert("El trayecto se eliminó correctamente.") RegistraScript("DeleteMarkers();") CargaTrayectos() End If Else Alert("No se pudo eliminar el trayecto", TipoMensaje.MsgError) End If End Sub Public Shared Function WsGeocercas(ByVal Id As System.String) As System.String Dim CveGeoReferencia As Integer = Id.ToEntero Dim Retorno As String = "{}" If CveGeoReferencia > 0 Then Dim ObjGPS As New ClsGPS If ObjGPS.GeoReferenciaGet(CveGeoReferencia, 1, "-1", -1) Then Try Dim DrGeocercas As DataRow = ObjGPS.DtResultados.Rows(0) If DrGeocercas IsNot Nothing Then Dim Coords = ModExtensiones.SQLToGmapsJArray(DrGeocercas("Coordenadas").ToString, "POLYGON") Dim Json As New JObject(New JProperty("Posiciones", Coords)) Retorno = Json.ToString End If Catch ex As Exception ModExtensiones.GuardaLog("Ocurrió un error al obtener la geocerca " + ex.ToString) End Try End If ObjGPS.Dispose() End If Return Retorno End Function End Class