Files
SIG/GPS/RepGeoReferencias.aspx.vb
JORGE LUIS CAUDILLO ESPARZA c35cf91883 Commit inicial Ventas Productivo
2019-08-14 16:40:54 -07:00

420 lines
19 KiB
VB.net

Option Strict On
Imports Extensiones
Imports System.Data
Partial Class GPS_RepGeoReferencias
Inherits ClsPaginas
Public Property CveGeoReferencia As Integer
Get
Return ViewState("CveGeoReferencia").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveGeoReferencia") = 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
Public Property DtDetalle() As Data.DataTable
Get
Return DirectCast(ViewState("DtDetalle"), DataTable)
End Get
Set(ByVal value As Data.DataTable)
ViewState("DtDetalle") = value
End Set
End Property
Public Property DtDetalleEliminar() As Data.DataTable
Get
Return DirectCast(ViewState("DtDetalleEliminar"), DataTable)
End Get
Set(ByVal value As Data.DataTable)
ViewState("DtDetalleEliminar") = value
End Set
End Property
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
CargaGeoReferencias()
CargaDispositivos()
CreaTmpDTDetalle()
CargaGrupos()
' RegistraScript("$('#dvConsulta').modal()")
End If
End Sub
Private Sub CargaGeoReferencias()
Dim Estatus = If(ChkEstatusGeocerca.Checked, 1, 0)
Dim GPS As New ClsGPS
If GPS.GeoReferenciaGet(-1, Estatus, "-1", UsuarioActual.CveCliente) Then
GVGeoreferencias.DataSource = GPS.DtResultados
Else
GVGeoreferencias.DataSource = Nothing
End If
GPS.Dispose()
GVGeoreferencias.DataBind()
End Sub
Private Sub CargaDispositivos()
DdlEquipoD.DataSource = GlobalDTDispositivos(UsuarioActual.CveCliente)
DdlEquipoD.DataBind()
DdlEquipoD.Items.Insert(0, New ListItem("Seleccione", "-1"))
GvDispositivos.DataSource = GlobalDTDispositivosUsuarios(UsuarioActual.CveCliente, UsuarioActual.CveUsuario).FiltraParametros("Estatus = 1")
GvDispositivos.DataBind()
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 CreaTmpDTDetalle()
DtDetalle = New DataTable
Dim pk = DtDetalle.Columns.Add("CveDispositivo", GetType(Integer))
DtDetalle.Columns.Add("NoEconomico", GetType(String))
DtDetalle.Columns.Add("CveDispositivoGeoReferenciaDetalle", GetType(Integer))
DtDetalle.PrimaryKey = New DataColumn() {pk}
GvEquiposDetalle.DataSource = DtDetalle
GvEquiposDetalle.DataBind()
UpAgregar.Update()
End Sub
Protected Sub CreaTmpDTDetalleEliminar()
DtDetalleEliminar = New DataTable
Dim pk2 = DtDetalleEliminar.Columns.Add("CveDispositivo", GetType(Integer))
DtDetalleEliminar.Columns.Add("NoEconomico", GetType(String))
Dim pk3 = DtDetalleEliminar.Columns.Add("CveDispositivoGeoReferenciaDetalle", GetType(Integer))
DtDetalleEliminar.PrimaryKey = New DataColumn() {pk2, pk3}
UpAgregar.Update()
End Sub
Protected Sub GvGeoreferencias_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GVGeoreferencias.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.FCLinkButton("imgColor").Style.Add("background-color", e.Row.DBCampo("Color").ToString)
e.Row.FCLinkButton("imgE").CommandArgument = e.Row.DBCampo("CveGeoReferencia").ToString
If e.Row.DBCampo("Estatus").ToString = "True" Then
e.Row.FCLabel("LblEstatus").Text = "Activo"
e.Row.FCLabel("LblEstatus").ForeColor = Drawing.Color.Green
Else
e.Row.FCLabel("LblEstatus").Text = "Inactivo"
e.Row.FCLabel("LblEstatus").ForeColor = Drawing.Color.Red
End If
End If
End Sub
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click
Dim Coord As String = ""
Dim count = 0
CreaDTPosiciones()
For Each row As GridViewRow In GVGeoreferencias.Rows
If row.FCCheckBox("chkGR").Checked Then
If row.DataKey("Tipo") = "Geocerca" Then
Coord = SQLToGmaps(row.DataKey("Coordenadas").ToString, "POLYGON")
RegistraScript($"creaPoligono({Coord}, '{row.DataKey("Color").ToString}', '{row.DataKey("GeoReferencia")}')", count.ToString())
AddRowPosiciones(row.DataKey("GeoReferencia").ToString, Coord)
ElseIf row.DataKey("Tipo") = "Ruta" Then
Coord = SQLToGmaps(row.DataKey("Coordenadas").ToString, "LINESTRING")
RegistraScript($"creaPolyline({Coord}, '{row.DataKey("Color").ToString}', '{row.DataKey("GeoReferencia")}')", count.ToString())
AddRowPosiciones(row.DataKey("GeoReferencia").ToString, Coord)
End If
End If
count += 1
Next
If chkUp.Checked Then
Dim gps As New ClsGPS
Dim Fecha, Vehiculo, Icono, CoordDis, Info As String
For Each GVRow As GridViewRow In GvDispositivos.Rows
If GVRow.FCCheckBox("chkDis").Checked Then
If gps.UltimaPosicionEquipoGet(GVRow.DataKey("CveDispositivo").ToEntero, MinFecha, MaxFecha) Then
If gps.DtResultados.Rows.Count > 0 Then
CoordDis = gps.DtResultados.Rows(0)("Posicion").ToString.SQLToGmaps("POINT")
Fecha = gps.DtResultados.Rows(0)("FechaTrama").ToString
Vehiculo = gps.DtResultados.Rows(0)("Vehiculo").ToString
Info = InfoWindow($"Vehículo:{Vehiculo}", "-1", GVRow.DataKey("CveDispositivo").ToString.ToEntero, gps.DtResultados.Rows(0))
If gps.DtResultados.Rows(0)("SPD").ToString.ToDouble > 1 Then
Icono = $"/Imagenes/{GlobalDTDispositivos(UsuarioActual.CveCliente).FiltroPrimeroValor("Icono", $"CveDispositivo = {GVRow.DataKey("CveDispositivo").ToString}")}green.png"
Else
Icono = $"/Imagenes/{GlobalDTDispositivos(UsuarioActual.CveCliente).FiltroPrimeroValor("Icono", $"CveDispositivo = {GVRow.DataKey("CveDispositivo").ToString}")}.png"
End If
RegistraScript($"CreaMarcador({CoordDis},'{GVRow.DataKey("NombreVehiculo")}', '{Info}', '{Icono}');", $"{GVRow.DataKey("CveDispositivo").ToString}D")
Else
Alert($"No se encontraron resultados del vehículo con serie: {GVRow.DataKey("SerieVehiculo").ToString}", TipoMensaje.MsgAdvertencia)
End If
End If
End If
Next
gps.Dispose()
End If
chkUp.Checked = False
UpUp.Update()
UPModalBusqueda.Update()
GvBarra.DataSource = DtPosiciones
GvBarra.DataBind()
UPGV.Update()
RegistraScript($"FitBounds();", "XBounds")
End Sub
Protected Sub imgE_Click(sender As Object, e As EventArgs)
Dim Boton = CType(sender, LinkButton)
CveGeoReferencia = Boton.CommandArgument.ToEntero
DtDetalle = Nothing
DtDetalleEliminar = Nothing
Try
Dim GvRow As GridViewRow = DirectCast(Boton.NamingContainer, GridViewRow)
TxtNombre.Text = GvRow.DataKey("GeoReferencia").ToString
TxtTolerancia.Text = GvRow.DataKey("Tolerancia").ToString
'DdlEquipo.SelectedValueExist(GvRow.DataKey("CveDispositivo").ToString)
txtFechaI.Text = GvRow.DataKey("FechaInicio").ToString.ToDate.ToString("dd/MM/yyyy")
txtFechaF.Text = GvRow.DataKey("FechaFin").ToString.ToDate.ToString("dd/MM/yyyy")
chkLunes.Checked = CBool(GvRow.DataKey("AplicaLunes").ToString)
chkMartes.Checked = CBool(GvRow.DataKey("AplicaMartes").ToString)
chkMiercoles.Checked = CBool(GvRow.DataKey("AplicaMiercoles").ToString)
chkJueves.Checked = CBool(GvRow.DataKey("AplicaJueves").ToString)
chkViernes.Checked = CBool(GvRow.DataKey("AplicaViernes").ToString)
chkSabado.Checked = CBool(GvRow.DataKey("AplicaSabado").ToString)
chkDomingo.Checked = CBool(GvRow.DataKey("AplicaDomingo").ToString)
chkEstatus.Checked = CBool(GvRow.DataKey("Estatus").ToString)
TxtHoraI.Text = GvRow.DataKey("HoraInicio").ToString.ToDateTime.ToString("HH:mm")
TxtHoraF.Text = GvRow.DataKey("HoraFin").ToString.ToDateTime.ToString("HH:mm")
Using ObjGPS As New ClsGPS
If ObjGPS.GetReferenciaDetalle(-1, CveGeoReferencia, -1, UsuarioActual.CveCliente) Then
If ObjGPS.DtResultados.Rows.Count > 0 Then
DtDetalle = ObjGPS.DtResultados
GvEquiposDetalle.DataSource = DtDetalle
Else
DtDetalle = Nothing
DtDetalleEliminar = Nothing
GvEquiposDetalle.DataSource = Nothing
End If
End If
End Using
GvEquiposDetalle.DataBind()
Catch ex As Exception
OnError("Ocurrió un error al cargar la GeoReferencia.", ex)
End Try
RegistraScript("CargaModal();")
UpBodyGeoReferencia.Update()
End Sub
Private Function SQLToGmaps(CoordsSQL As String, Tipo As String) As String
Dim CoordsPoligono As String = CoordsSQL.Replace($"{Tipo}", "").Replace(")", "").Replace("(", "")
Dim CoordsPuntos() As String = CoordsPoligono.Split(","c)
Dim Var As String = If(Tipo = "POINT", "", "[")
For Each coordenada As String In CoordsPuntos
If coordenada Is CoordsPuntos.Last Then
Dim latlng() As String = coordenada.Trim.Split(" "c)
Var = $"{Var}{{lat: {latlng(1)}, lng: {latlng(0)} }}"
Else
Dim latlng() As String = coordenada.Trim.Split(" "c)
Var = $"{Var}{{lat: {latlng(1)}, lng: {latlng(0)} }},"
End If
Next
Var = If(Tipo = "POINT", Var, $"{Var}]")
Return Var
End Function
Protected Sub BtnActualizarGeoreferencia_Click(sender As Object, e As EventArgs)
If DtDetalle IsNot Nothing AndAlso DtDetalle.Rows.Count > 0 Then
Dim ObjGPS As New ClsGPS
ObjGPS.IniciaTransacSQL()
Dim TieneError As Boolean = False
Try
Dim HoraI As Date = ($"{Date.Now.ToString("dd/MM/yyyy")} {TxtHoraI.Text}").ToDate
Dim HoraF As Date = ($"{Date.Now.ToString("dd/MM/yyyy")} {TxtHoraF.Text}").ToDate
If ObjGPS.GeoReferenciaUpdate(CveGeoReferencia, TxtNombre.Text, -1, chkEstatus.Checked, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, chkLunes.Checked, chkMartes.Checked, chkMiercoles.Checked, chkJueves.Checked, chkViernes.Checked,
chkSabado.Checked, chkDomingo.Checked, HoraI, HoraF, TxtTolerancia.Text.ToEntero, UsuarioActual.CveCliente) Then
For Each Dr As DataRow In DtDetalle.Rows
Dim CveGeoReferenciaDetalle = Dr("CveDispositivoGeoreferenciaDetalle").ToString.ToEntero
If CveGeoReferenciaDetalle > 0 Then
If Not ObjGPS.UpdateReferenciaDetalle(CveGeoReferenciaDetalle, CveGeoReferencia, Dr("CveDispositivo").ToString.ToEntero) Then
TieneError = True
Exit For
End If
Else
If Not ObjGPS.AddGeoReferenciaDetalle(CveGeoReferencia, Dr("CveDispositivo").ToString.ToEntero) Then
TieneError = True
Exit For
End If
End If
Next
If Not TieneError Then
For Each DrE As DataRow In DtDetalleEliminar.Rows
TieneError = Not ObjGPS.RemoveferenciaDetalle(DrE("CveDispositivoGeoreferenciaDetalle").ToString.ToEntero)
Next
End If
Else
TieneError = True
End If
Catch ex As Exception
GuardaLog(ex.ToString())
Finally
If TieneError Then
ObjGPS.RollBack()
Alert("Ocurrió un error al guardar la georeferencia.", TipoMensaje.MsgError)
Else
ObjGPS.Commit()
Alert("La georeferencia se actualizó correctamente.", TipoMensaje.MsgInformacion)
End If
ObjGPS.Dispose()
End Try
Else
Alert("No hay vehiculos asignados a esta georeferencia", TipoMensaje.MsgAdvertencia)
End If
End Sub
Protected Sub gvMarcas_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GVGeoreferencias.RowDeleting
Dim GPS As New ClsGPS
Dim CveGeoReferencia As Integer = GVGeoreferencias.Rows(e.RowIndex).DataKey("CveGeoReferencia").ToEntero
If GPS.GeoReferenciaDelete(CveGeoReferencia, UsuarioActual.CveCliente) Then
Alert("La GeoReferencia se eliminó correctamente", TipoMensaje.MsgInformacion)
End If
GPS.Dispose()
CargaGeoReferencias()
RegistraScript("$('#divAgregarTipo').modal('hide')")
End Sub
#Region "DATA TABLES"
Private Sub CreaDTPosiciones()
ViewState("DtPosiciones") = Nothing
Dim dt As New DataTable
dt.Columns.Add("Nombre", Type.GetType("System.String"))
dt.Columns.Add("Posicion", Type.GetType("System.String"))
ViewState("DtPosiciones") = dt
End Sub
Private Sub AddRowPosiciones(Nombres As String, Posicion As String)
Dim dr As DataRow = DtPosiciones.NewRow()
dr("Nombre") = Nombres
dr("Posicion") = Posicion
DtPosiciones.Rows.Add(dr)
End Sub
Protected Sub GvBarra_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvBarra.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Attributes.Add("onClick", $" CenterPoligono({e.Row.DBCampo("Posicion")});")
End If
End Sub
#End Region
'Protected Sub LnkAgregarDisp_Click(sender As Object, e As EventArgs)
'End Sub
'Protected Sub LnkAgregarGrupo_Click(sender As Object, e As EventArgs)
'End Sub
'Protected Sub GvEquiposDetalle_RowDeleting(sender As Object, e As GridViewDeleteEventArgs)
'End Sub
Protected Sub GvEquiposDetalle_RowDeleting(sender As Object, e As GridViewDeleteEventArgs)
If DtDetalleEliminar Is Nothing Then
CreaTmpDTDetalleEliminar()
End If
If DtDetalle.Rows.Count > 0 Then
Dim Dr As DataRow = DtDetalle.Rows(e.RowIndex)
Dim CveGeoReferenciaDetalle = Dr("CveDispositivoGeoreferenciaDetalle").ToString.ToEntero
If CveGeoReferenciaDetalle > 0 Then
Dim DrEliminar = DtDetalleEliminar.NewRow
DrEliminar("CveDispositivoGeoreferenciaDetalle") = CveGeoReferenciaDetalle
DrEliminar("CveDispositivo") = Dr("CveDispositivo").ToString.ToEntero
DrEliminar("NoEconomico") = Dr("NoEconomico").ToString
DtDetalleEliminar.Rows.Add(DrEliminar)
DtDetalleEliminar.AcceptChanges()
End If
DtDetalle.Rows.RemoveAt(e.RowIndex)
GvEquiposDetalle.DataSource = DtDetalle
GvEquiposDetalle.DataBind()
End If
UpAgregar.Update()
End Sub
Protected Sub LnkAgregarDisp_Click(sender As Object, e As EventArgs)
Dim CveDispositivo As Integer = DdlEquipoD.SelectedValue.ToEntero
If CveDispositivo > 0 Then
Dim NoEconomico As String = DdlEquipoD.SelectedItem.Text
If DtDetalle IsNot Nothing Then
If Not DtDetalle.Select($"CveDispositivo={CveDispositivo}").Any() Then
Dim Dr As DataRow = DtDetalle.NewRow
Dr("CveDispositivo") = CveDispositivo
Dr("NoEconomico") = NoEconomico
Dr("CveDispositivoGeoReferenciaDetalle") = -1
DtDetalle.Rows.Add(Dr)
DtDetalle.AcceptChanges()
Else
Alert($"El dispositivo '{NoEconomico} ya existe en la tabla.'", TipoMensaje.MsgAdvertencia)
End If
Else
CreaTmpDTDetalle()
CreaTmpDTDetalleEliminar()
Dim Dr As DataRow = DtDetalle.NewRow
Dr("CveDispositivo") = CveDispositivo
Dr("NoEconomico") = NoEconomico
Dr("CveDispositivoGeoReferenciaDetalle") = -1
DtDetalle.Rows.Add(Dr)
DtDetalle.AcceptChanges()
End If
GvEquiposDetalle.DataSource = DtDetalle
GvEquiposDetalle.DataBind()
End If
UpAgregar.Update()
CargaGeoReferencias()
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)}
DtDetalle.Merge(dt, True, MissingSchemaAction.Ignore)
End If
End Using
GvEquiposDetalle.DataSource = DtDetalle
GvEquiposDetalle.DataBind()
UpAgregar.Update()
RegistraScript("CargaPickersHora();", "1")
End Sub
Protected Sub ChkEstatusGeocerca_CheckedChanged(sender As Object, e As EventArgs)
CargaGeoReferencias()
End Sub
End Class