Files
SIG/GPS/GeoReferencias.aspx.vb

206 lines
8.5 KiB
VB.net

Option Strict On
Option Explicit On
Imports System.Data
Imports Extensiones
Partial Class GPS_GeoReferencias
Inherits ClsPaginas
Public Property DtVehiculos() As Data.DataTable
Get
Return DirectCast(ViewState("DtVehiculos"), DataTable)
End Get
Set(ByVal value As Data.DataTable)
ViewState("DtVehiculos") = value
End Set
End Property
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
CargaDispositivos()
CargaGrupos()
CreaTmpDT()
End If
End Sub
Protected Sub CreaTmpDT()
DtVehiculos = New DataTable
Dim pk = DtVehiculos.Columns.Add("CveDispositivo", GetType(Integer))
DtVehiculos.Columns.Add("NoEconomico", GetType(String))
DtVehiculos.Columns.Add("CveDispositivoGeoReferenciaDetalle", GetType(Integer))
DtVehiculos.PrimaryKey = New DataColumn() {pk}
GvDispositivos.DataSource = DtVehiculos
GvDispositivos.DataBind()
UpAgregar.Update()
End Sub
Private Sub CargaDispositivos()
DdlEquipo.DataSource = GlobalDTDispositivosUsuarios(UsuarioActual.CveCliente, UsuarioActual.CveUsuario).FiltraParametros("Estatus = 1")
DdlEquipo.DataBind()
DdlEquipo.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Private Sub CargaGrupos()
Using ObjGPS As New ClsGPS
If ObjGPS.GruposGet(-1, UsuarioActual.CveCliente) Then
DdlGrupo.DataSource = ObjGPS.DtResultados
DdlGrupo.DataBind()
End If
End Using
DdlGrupo.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Protected Sub GvDispositivos_RowDeleting(sender As Object, e As GridViewDeleteEventArgs)
DtVehiculos.Rows.RemoveAt(e.RowIndex)
GvDispositivos.DataSource = DtVehiculos
GvDispositivos.DataBind()
UpAgregar.Update()
End Sub
Protected Sub LnkAgregarDisp_Click(sender As Object, e As EventArgs)
Dim CveDispositivo As Integer = DdlEquipo.SelectedValue.ToEntero
If CveDispositivo > 0 Then
Dim NoEconomico As String = DdlEquipo.SelectedItem.Text
If Not DtVehiculos.Select($"CveDispositivo={CveDispositivo}").Any() Then
Dim Dr As DataRow = DtVehiculos.NewRow
Dr("CveDispositivo") = CveDispositivo
Dr("NoEconomico") = NoEconomico
Dr("CveDispositivoGeoReferenciaDetalle") = -1
DtVehiculos.Rows.Add(Dr)
DtVehiculos.AcceptChanges()
Else
Alert($"El dispositivo '{NoEconomico} ya existe en la tabla.'", TipoMensaje.MsgAdvertencia)
End If
GvDispositivos.DataSource = DtVehiculos
GvDispositivos.DataBind()
End If
UpAgregar.Update()
RegistraScript("CargaPickersHora();", "1")
End Sub
Protected Sub LnkAgregarGrupo_Click(sender As Object, e As EventArgs)
Dim CveGrupo As Integer = DdlGrupo.SelectedValue.ToEntero
Using ObjGPS As New ClsGPS
If ObjGPS.GruposDetallesGet(CveGrupo) Then
Dim Query = From dr In ObjGPS.DtResultados
Select CveDispositivo = dr("CveDispositivo").ToString.ToEntero, NoEconomico = dr("NoEconomico").ToString, CveDispositivoGeoReferenciaDetalle = -1
Dim dt As DataTable = Query.QueryToDataTable(True)
dt.PrimaryKey = New DataColumn() {dt.Columns(0)}
DtVehiculos.Merge(dt, True, MissingSchemaAction.Ignore)
End If
End Using
GvDispositivos.DataSource = DtVehiculos
GvDispositivos.DataBind()
UpAgregar.Update()
RegistraScript("CargaPickersHora();", "1")
End Sub
Protected Sub BtnCrear_Click(sender As Object, e As EventArgs)
Dim TieneError As Boolean = False
Dim ObjGPS As New ClsGPS
ObjGPS.IniciaTransacSQL()
Dim GeoRefString As String
Try
If HdnTipo.Value = "Georuta" Then
GeoRefString = CommandArg.Value
Dim CoordsPuntos() As String = GeoRefString.Split("+"c)
GeoRefString = ""
For Each coordenada As String In CoordsPuntos
If coordenada Is CoordsPuntos.Last Then
Exit For
End If
coordenada = coordenada.Replace("(", "").Replace(")", "")
Dim LatLng() As String = coordenada.Split(","c)
GeoRefString = $"{GeoRefString} {LatLng(1).Trim} {LatLng(0).Trim},"
Next
GeoRefString = GeoRefString.Substring(0, GeoRefString.Length - 1)
GeoRefString = $"LINESTRING({GeoRefString})"
If ObjGPS.GeoReferenciaAdd(TxtNombre.Text, -1, GeoRefString, "Ruta", True, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, chkLunes.Checked, chkMartes.Checked, chkMiercoles.Checked, chkJueves.Checked, chkViernes.Checked, chkSabado.Checked, chkDomingo.Checked, ($"{Date.Now.ToShortDateString} {TxtHoraI.Text}").ToDateTime, ($"{Date.Now.ToShortDateString} {TxtHoraF.Text}").ToDateTime, hdnColor.Value, TxtTolerancia.Text.ToEntero, UsuarioActual.CveCliente) Then
For Each Dr As GridViewRow In GvDispositivos.Rows
If Dr.RowType = DataControlRowType.DataRow Then
If Not ObjGPS.AddGeoReferenciaDetalle(ObjGPS.CveGeoReferencia, Dr.DataKey("CveDispositivo").ToString.ToEntero) Then
TieneError = True
Exit For
End If
End If
Next
Else
TieneError = True
End If
'RegistraScript("CreaRuta();")
ElseIf HdnTipo.Value = "Geocerca" Then
GeoRefString = $"POLYGON(({GeoCerca.Value} {CommandArg.Value}))"
If ObjGPS.GeoReferenciaAdd(TxtNombre.Text, -1, GeoRefString, "Geocerca", True, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, chkLunes.Checked, chkMartes.Checked, chkMiercoles.Checked, chkJueves.Checked, chkViernes.Checked, chkSabado.Checked, chkDomingo.Checked, ($"{Date.Now.ToShortDateString} {TxtHoraI.Text}").ToDateTime, ($"{Date.Now.ToShortDateString} {TxtHoraF.Text}").ToDateTime, hdnColor.Value, TxtTolerancia.Text.ToEntero, UsuarioActual.CveCliente) Then
For Each Dr As GridViewRow In GvDispositivos.Rows
If Dr.RowType = DataControlRowType.DataRow Then
If Not ObjGPS.AddGeoReferenciaDetalle(ObjGPS.CveGeoReferencia, Dr.DataKey("CveDispositivo").ToString.ToEntero) Then
TieneError = True
Exit For
End If
End If
Next
End If
End If
Catch ex As Exception
TieneError = False
OnError("Ocurrió un error al agregar la GeoReferencia.", ex)
Finally
If TieneError Then
ObjGPS.RollBack()
Alert("Ocurrió un error al agregar la georeferencia", TipoMensaje.MsgError)
Else
ObjGPS.Commit()
Alert("Se agregó correctamente la Ruta", TipoMensaje.MsgInformacion)
End If
ObjGPS.Dispose()
RegistraScript("Limpieza();")
GeoRefString = ""
TxtNombre.Text = ""
DdlEquipo.SelectedValue = "-1"
txtFechaI.Text = ""
txtFechaF.Text = ""
TxtTolerancia.Text = ""
chkLunes.Checked = False
chkMartes.Checked = False
chkMiercoles.Checked = False
chkJueves.Checked = False
chkViernes.Checked = False
chkSabado.Checked = False
chkDomingo.Checked = False
TxtHoraI.Text = ""
TxtHoraF.Text = ""
End Try
UpBodyTipoEquipo.Update()
End Sub
Private Function GetControlThatCausedPostBack(ByVal page As Page) As Control
'initialize a control and set it to null
Dim ctrl As Control = Nothing
'get the event target name and find the control
Dim ctrlName As String = page.Request.Params.Get("__EVENTTARGET")
If Not String.IsNullOrEmpty(ctrlName) Then
ctrl = page.FindControl(ctrlName)
End If
'return the control to the calling method
Return ctrl
End Function
End Class