From 0493a18d50512f691d71d2d87fa441593d5393e7 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 21 Jan 2020 15:54:15 -0700 Subject: [PATCH] Notificaciones Trayectos --- Ashx/SIGGPS.ashx | 156 ++++++++++++++++++++++++++++++++++- GPS/RastreoTrayectos.aspx.vb | 66 ++++++++++++--- GPS/Trayectos.aspx.vb | 135 +++++++----------------------- 3 files changed, 237 insertions(+), 120 deletions(-) diff --git a/Ashx/SIGGPS.ashx b/Ashx/SIGGPS.ashx index f9736c0e1..a58642f67 100644 --- a/Ashx/SIGGPS.ashx +++ b/Ashx/SIGGPS.ashx @@ -18,7 +18,9 @@ Public Class SIGGPS : Implements IHttpHandler, IRequiresSessionState Case "getimginstalacion" GetImgInstalacion(context) Case "EjecutarNotificaciones" - EjecutarNotificaciones(context) + EjecutarNotificaciones(context) + Case "EjecutaTrayectos" + EnviarCorreoTrayectos(context, context.Request("CveTrayecto").ToString().ToEntero()) End Select ElseIf context.Request.InputStream IsNot Nothing Then Using reader As New StreamReader(context.Request.InputStream) @@ -224,5 +226,155 @@ Public Class SIGGPS : Implements IHttpHandler, IRequiresSessionState ) Return Json - End Function + End Function + +#Region "N O T F I C A C I O N - T R A Y E C T O S" + Private Sub EnviarCorreoTrayectos(ByVal context As HttpContext, CveTrayecto As Integer) + Dim Retorno As JObject = New JObject(New JProperty("EnvioCorreo", False), New JProperty("Mensaje", "")) + + Dim DtInfoTrayecto As DataTable = Nothing + Dim DtTrayecto As DataTable = Nothing + + Using ObjGPS As New ClsGPS + If ObjGPS.GetTrayectos(CveTrayecto, -1, -1) AndAlso ObjGPS.DtResultados.Rows.Count > 0 Then + DtTrayecto = ObjGPS.DtResultados.Copy() + End If + + If ObjGPS.GetTrayectosDatos(CveTrayecto) Then + DtInfoTrayecto = ObjGPS.DtSetResultados.Tables(0).Copy() + End If + End Using + + If DtTrayecto IsNot Nothing AndAlso DtInfoTrayecto IsNot Nothing AndAlso DtInfoTrayecto.Rows.Count > 0 Then + Dim RowTrayecto As DataRow = DtTrayecto.Rows(0) + Dim RowInfo As DataRow = DtInfoTrayecto.Rows(0) + + Dim EnviarLiga As Boolean = CBool(RowTrayecto("EnviarLiga").ToString()) + + Dim Asunto As String = "Estatus de Trayecto" + Dim Cuerpo As String = GeneraCorreo(CveTrayecto, EnviarLiga, RowInfo) + Dim Correos As String = RowTrayecto("CorreosNotificacion").ToString() + + Dim ObjMail As New ClsSisMail + If ObjMail.SendMail(ClsPaginas.EmpresaNotificaciones, Correos, Asunto, Cuerpo) Then + Retorno("EnvioCorreo") = True + Retorno("Mensaje") = "El correo fue enviado correctamente" + Else + Retorno("EnvioCorreo") = False + Retorno("Mensaje") = "Ocurrió un error al enviar el correo" + End If + + End If + + context.Response.Write(Retorno.ToString()) + End Sub + + Protected Function GeneraCorreo(CveTrayecto As Integer, EnviarLiga As Boolean, Row As DataRow) As String + Dim strBody As New StringBuilder + Try + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.Append("
") + strBody.Append(" ") + strBody.Append("
") + strBody.Append("
") + strBody.Append("
Datos del Trayecto") + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.AppendFormat("", Row("Trayecto")) + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.AppendFormat("", Row("Vehiculo")) + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.AppendFormat("", Row("Estatus")) + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.AppendFormat("", Row("LatitudActual")) + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.AppendFormat("", Row("LongitudActual")) + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.AppendFormat("", Row("LatitudActual"), Row("LongitudActual")) + strBody.Append("") + If EnviarLiga Then + strBody.Append("") + strBody.Append("") + strBody.AppendFormat("", Encripta($"CveTrayecto={Row("CveTrayecto").ToString()}")) + strBody.Append("") + End If + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.Append("
 Trayecto: {0}
 Vehículo: {0}strong>
 Estatus: {0}
 Latitud: {0}
 Longitud: {0}
 Posición: Ver en google maps
 Rastreo: Rastrear Vehículo
") + strBody.Append("
") + strBody.Append("
") + strBody.Append(" ") + strBody.Append("
") + strBody.Append("
") + strBody.Append("") + Catch ex As Exception + OnError("Ocurrio un error al general el correo.", ex) + End Try + Return strBody.ToString() + End Function +#End Region + End Class \ No newline at end of file diff --git a/GPS/RastreoTrayectos.aspx.vb b/GPS/RastreoTrayectos.aspx.vb index 46c849a09..96c2666bd 100644 --- a/GPS/RastreoTrayectos.aspx.vb +++ b/GPS/RastreoTrayectos.aspx.vb @@ -13,6 +13,14 @@ Partial Class GPS_RastreoTrayectos Inherits Page #Region "P R O P I E D A D E S" + Private Property RastreoValido As Boolean + Get + Return CType(ViewState("RastreoValido"), Boolean) + End Get + Set(value As Boolean) + ViewState("RastreoValido") = value + End Set + End Property Private Property TrazarLineaContinuo As Boolean Get Return CType(ViewState("TrazarLineaContinuo"), Boolean) @@ -87,12 +95,19 @@ Partial Class GPS_RastreoTrayectos Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then RegistraScript("$('#SideNav').click();initMap();") - Me.CveTrayecto = 97 - - CreaDTPosiciones() - CargaDatos() - RastrearEquipos() - CargaTabla() + If Request("P") IsNot Nothing Then + Dim URLParametros = Parametros(Decripta((Request("P").ToString))) + Me.CveTrayecto = URLParametros("CVETRAYECTO").ToString().ToEntero() + CargaDatos() + If RastreoValido Then + TrazarLineaContinuo = True + CreaDTCoordenadas() + CreaDTPosiciones() + RastrearEquipos() + CargaTabla() + End If + + End If End If End Sub Private Sub CreaDTPosiciones() @@ -123,16 +138,19 @@ Partial Class GPS_RastreoTrayectos Using ObjGPS As New ClsGPS If ObjGPS.GetTrayectos(CveTrayecto, -1, -1) AndAlso ObjGPS.DtResultados.Rows.Count > 0 Then Dim Row As DataRow = ObjGPS.DtResultados.Rows(0) + Me.CveDispositivo = Row("CveDispositivo").ToString().ToEntero() Me.CveCliente = Row("CveCliente").ToString().ToEntero() + Me.RastreoValido = Not CBool(Row("EsFin")) + End If End Using - TrazarLineaContinuo = True - CreaDTCoordenadas() End Sub Protected Sub TimmerRefresh_Tick(sender As Object, e As EventArgs) DtPosiciones.Rows.Clear() RegistraScript("DeleteMarkers();") + + Dim LastCoord As String = "" Dim TmpDT As New DataTable Dim Info = "" @@ -143,6 +161,14 @@ Partial Class GPS_RastreoTrayectos Dim ObjGPS As New ClsGPS Try + If ObjGPS.GetTrayectos(CveTrayecto, -1, -1) AndAlso ObjGPS.DtResultados.Rows.Count > 0 Then + Dim Row As DataRow = ObjGPS.DtResultados.Rows(0) + Me.RastreoValido = Not CBool(Row("EsFin")) + End If + If Not RastreoValido Then + Alert("El trayecto ha sido finalizado.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If Dim RowVehiculo As DataRow = GlobalDTDispositivos(CveCliente).FiltroPrimero($"CveDispositivo = {CveDispositivo}") If ObjGPS.UltimaPosicionEquipoGet(CveDispositivo, MinFecha, MaxFecha) Then @@ -178,7 +204,12 @@ Partial Class GPS_RastreoTrayectos OnError("Ocurrió un error al rastrear equipo", ex) End Try End Sub - Private Sub RastrearEquipos() + Private Sub RastrearEquipos() + If Not RastreoValido Then + Alert("El trayecto ha sido finalizado.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + Dim LastCoord As String = "" Dim TmpDT As New DataTable Dim Info = "" @@ -217,7 +248,6 @@ Partial Class GPS_RastreoTrayectos End Try ObjGPS.Dispose() End Sub - Private Sub CargaTabla() If DtPosiciones IsNot Nothing Then GvBarra.DataSource = DtPosiciones @@ -229,7 +259,6 @@ Partial Class GPS_RastreoTrayectos GvBarra.HeaderRow.Cells(4).Style.Add("display", "none !important") End If End Sub - Private Sub AddRowCoordenadasContinuas(Coord As String, CveDispositivo As Integer) Dim dr As DataRow = DtCoordenadasContinuas.NewRow() dr("CveDispositivo") = CveDispositivo @@ -333,8 +362,19 @@ Partial Class GPS_RastreoTrayectos RegistraScript("setTimeout(function(){OpcionesHistorico();},500);") End Sub - - + Private Function Parametros(Cadena As String) As Hashtable + Dim P1() As String = Cadena.Split("&"c) + Dim Tmp As String + Dim P2() As String + + Dim URLParametros As New Hashtable + + For Each Tmp In P1 + P2 = Tmp.Replace("%26%", "&").Split("="c) + URLParametros.Add(P2(0).ToString.ToUpper, P2(1)) + Next + Return URLParametros + End Function Public Sub RegistraScript(Script As String, Optional valuetick As String = "") Dim Rdm As Random = New Random() ScriptManager.RegisterStartupScript(Page, Me.GetType(), String.Format("{0}{1}{2}", (DateTime.Now.Ticks + 1), Rdm.Next(), valuetick), String.Format("", Script), False) diff --git a/GPS/Trayectos.aspx.vb b/GPS/Trayectos.aspx.vb index a1977fccd..ac950d613 100644 --- a/GPS/Trayectos.aspx.vb +++ b/GPS/Trayectos.aspx.vb @@ -8,10 +8,11 @@ Imports Extensiones Imports Microsoft.Reporting.WebForms Imports Newtonsoft.Json.Linq Imports System.Linq - +Imports System.Net.Http + Partial Class GPS_Trayectos - Inherits ClsPaginas - + Inherits ClsPaginas + #Region "P R O P I E D A D E S" Private Property DtGeocercasAgregar As DataTable Get @@ -36,9 +37,9 @@ Partial Class GPS_Trayectos Set(value As DataTable) ViewState("DtPosiciones") = value End Set - End Property + 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 @@ -276,12 +277,12 @@ Partial Class GPS_Trayectos Private Sub LimpiaCampos() TxtNombre.Text = "" DdlDispositivo.SelectedIndex = 0 - End Sub - + 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 Sub #End Region Protected Sub GvBarra_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then @@ -413,105 +414,29 @@ Partial Class GPS_Trayectos Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) Dim CveTrayecto As Integer = GvRow.DataKey("CveTrayecto").ToEntero() - Dim EnviarLiga As Boolean = CBool(GvRow.DataKey("EnviarLiga")) If CveTrayecto > 0 Then - Dim DtInfoTrayecto As DataTable = Nothing - Using ObjGPS As New ClsGPS - If ObjGPS.GetTrayectosDatos(CveTrayecto) Then - DtInfoTrayecto = ObjGPS.DtSetResultados.Tables(0).Copy() + Dim Url = New Uri(String.Format("{0}/ashx/SIGGPS.ashx?metodo=EjecutaTrayectos&CveTrayecto={1}", "https://gps.signalsgps.com", CveTrayecto)) + Dim Retorno As String = "{}" + Try + Using httpClient = New HttpClient() + httpClient.Timeout = New TimeSpan(0, 0, 15) + Using request = New HttpRequestMessage(HttpMethod.Get, Url) + Dim response = httpClient.SendAsync(request).Result + If response.StatusCode = Net.HttpStatusCode.OK Then + Retorno = response.Content.ReadAsStringAsync().Result + End If + End Using + End Using + + Dim Resp = JObject.Parse(Retorno) + If CBool(Resp("EnvioCorreo").ToString()) Then + Alert(Resp("Mensaje").ToString(), TipoMensaje.MsgInformacion) + Else + Alert(Resp("Mensaje").ToString(), TipoMensaje.MsgError) End If - End Using - If DtInfoTrayecto IsNot Nothing AndAlso DtInfoTrayecto.Rows.Count > 0 Then - Dim Row As DataRow = DtInfoTrayecto.Rows(0) - GeneraCorreo(CveTrayecto, EnviarLiga, Row) - End If + Catch ex As Exception + OnError("Ocurrió un error al descargar la factura", ex) + End Try End If End Sub - - Protected Function GeneraCorreo(CveTrayecto As Integer, EnviarLiga As Boolean, Row As DataRow) As String - Dim strBody As New StringBuilder - Try - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.Append("
") - strBody.Append(" ") - strBody.Append("
") - strBody.Append("
Datos del Trayecto ") - strBody.Append(" ") - strBody.Append(" ") - strBody.AppendFormat(" ", Row("Trayecto")) - strBody.Append(" ") - strBody.Append(" ") - strBody.AppendFormat(" ", Row("Vehiculo")) - strBody.Append(" ") - strBody.Append(" ") - strBody.AppendFormat(" ", Row("Estatus")) - strBody.Append(" ") - If EnviarLiga Then - strBody.Append(" ") - strBody.AppendFormat(" ", String.Format("http://gps.signalsgps.com/GPS/RastreoTrayectos.aspx?P={0}", Encripta($"CveTrayecto={CveTrayecto}"))) - strBody.Append(" ") - End If - strBody.Append(" ") - strBody.AppendFormat(" ", Row("LigaImagen")) - strBody.Append(" ") - strBody.Append("
Trayecto:{0}
Vehículo:{0}
Estatus:{0}
Rastrea Equipo:{0}
Posición:
") - strBody.Append("
") - strBody.Append("
") - strBody.Append(" ") - strBody.Append("
") - strBody.Append("
") - strBody.Append("") - Catch ex As Exception - OnError("Ocurrio un error al general el correo.", ex) - End Try - Return strBody.ToString() - End Function End Class