<%@ WebService Language="VB" Class="WsTSoft" %> Imports System.Web Imports System.Net.Http Imports System.Web.Services Imports System.Data Imports System.Web.Services.Protocols Imports System.Collections.Generic Imports System.Linq Imports Extensiones Imports Newtonsoft.Json Imports Newtonsoft.Json.Linq ' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. ' _ Public Class WsTSoft Inherits System.Web.Services.WebService Public Function AddRemision(FolioRemision As String, NoEconomico As String, CveEstatus As Integer, GeoInicial As String, GeoCarga As String, GeoEntrega As String, Fecha As Date) As String Dim retorno As String = "" Dim Continuar As Boolean = False Dim objTsoft As New ClsTSoft objTsoft.IniciaTransacSQL() Try Continuar = objTsoft.AddRemisiones(FolioRemision, NoEconomico, CveEstatus, GeoInicial, GeoCarga, GeoEntrega, Fecha) Dim objRem As New addRemisionObj If Continuar Then objRem.CveRemision = objTsoft.DtResultados.Rows(0)("CveRemision").ToString().ToEntero() objRem.CurrentError = "" Else objRem.CveRemision = 0 objRem.CurrentError = objTsoft.MyCurrentError End If retorno = JsonConvert.SerializeObject(objRem) objRem = Nothing Catch ex As Exception Continuar = False Finally If Continuar Then objTsoft.Commit() Else objTsoft.RollBack() End If End Try objTsoft.Dispose() Return retorno End Function Public Function UpEstatusRemision(FolioRemision As String, CveEstatus As Integer) As String Dim retorno As String = "" Dim objTsoft As New ClsTSoft Dim Continuar As Boolean = objTsoft.UpEstatusRemision(FolioRemision, CveEstatus) Dim objRem As New upEstatusRemisionObj If Continuar Then objRem.SeActualizo = 1 objRem.CurrentError = "" Else objRem.SeActualizo = 0 objRem.CurrentError = objTsoft.MyCurrentError End If objTsoft.Dispose() retorno = JsonConvert.SerializeObject(objRem) objRem = Nothing Return retorno End Function Public Function GetUltimaPosicion(DevID As String) As String Dim retorno As String = "" Dim DtPosicion As DataTable = Nothing Dim Continuar As Boolean = False Using ObjGPS As New ClsGPS If ObjGPS.UltimaPosicionEquipoGetWS(DevID) Then DtPosicion = ObjGPS.DtResultados.Copy() Continuar = True End If End Using Dim ObjPos As New LatLng Try If Continuar AndAlso DtPosicion IsNot Nothing Then 'CONSULTA DIRECCIONES If DtPosicion IsNot Nothing AndAlso DtPosicion.Rows.Count > 0 Then Try Dim Direcciones As JArray = ConsultarDirecciones(DtPosicion, "Lat", "Lng") If Direcciones IsNot Nothing Then For Each Dir As JObject In Direcciones DtPosicion.Rows(Dir("Indice").ToEntero())("Direccion") = Dir("Direccion").ToString() Next End If Catch ex As Exception ObjPos.CurrentError = "No se pudo obtener la posición." OnError("Ocurrió un error al asignar las direcciones", ex) End Try Dim RowPosicion As DataRow = DtPosicion.Rows(0) ObjPos.Fecha = RowPosicion("Fecha").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm:ss") ObjPos.Lat = RowPosicion("Lat").ToString() ObjPos.Lng = RowPosicion("Lng").ToString() ObjPos.Direccion = RowPosicion("Direccion").ToString() Else ObjPos.CurrentError = "No se encontraron resultados." End If Else ObjPos.CurrentError = "No se pudo obtener la posición." End If If DtPosicion IsNot Nothing Then DtPosicion.Dispose() DtPosicion = Nothing End If retorno = JsonConvert.SerializeObject(ObjPos) Catch ex As Exception OnError("Ocurrió un error al obtener los datos", ex) End Try ObjPos = Nothing Return retorno End Function Public Function TerminoRemision(FolioRemision As String, NoEconomico As String) As String Dim retorno As String = "" Dim objTsoft As New ClsTSoft Dim Continuar As Boolean = objTsoft.UpEstatusRemision(FolioRemision, 6) Dim objRem As New upEstatusRemisionObj If Continuar Then objRem.SeActualizo = 1 objRem.CurrentError = "" Else objRem.SeActualizo = 0 objRem.CurrentError = objTsoft.MyCurrentError End If objTsoft.Dispose() retorno = JsonConvert.SerializeObject(objRem) objRem = Nothing Return retorno End Function Public Function GetRemisionHistorial(FolioRemision As String, NoEconomico As String) As String Dim retorno As String = "" Dim objTsoft As New ClsTSoft Try Dim Continuar As Boolean = objTsoft.GETRemisionesHistorial(FolioRemision, NoEconomico) Dim objRem As New GetRemisionHistorialesObj If Continuar Then Dim Dt = objTsoft.DtResultados.Copy() Try Dt.Columns.Add("Direccion", GetType(String)) 'CONSULTA DIRECCIONES Dim Direcciones As JArray = ConsultarDirecciones(Dt, "Lat", "Lon") If Direcciones IsNot Nothing Then For Each Dir As JObject In Direcciones Dt.Rows(Dir("Indice").ToEntero())("Direccion") = Dir("Direccion").ToString() Next End If objRem.CurrentError = "" Catch ex As Exception objRem.CurrentError = "Ocurrió un error al asignar las direcciones" OnError("Ocurrió un error al asignar las direcciones", ex) End Try objRem.Historial = Dt.DataTableToObject(Of GetRemisionHistorialsObj) Dt.Dispose() Dt = Nothing Else objRem.Historial = New List(Of GetRemisionHistorialsObj) objRem.CurrentError = objTsoft.MyCurrentError End If retorno = JsonConvert.SerializeObject(objRem) objRem = Nothing Catch ex As Exception OnError("Ocurrió un error al obtener los datos", ex) End Try objTsoft.Dispose() Return retorno End Function Public Function GetInfoEventos(FechaInicio As String, FechaFin As String) As String Dim retorno As String = "[]" Dim objTsoft As New ClsTSoft Try If objTsoft.GetInfoEventosPenske(FechaInicio.ToDateTime(), FechaFin.ToDateTime()) Then If objTsoft.DtResultados.Rows.Count > 0 Then Try 'CONSULTA DIRECCIONES Dim Direcciones As JArray = ConsultarDirecciones(objTsoft.DtResultados) If Direcciones IsNot Nothing Then For Each Dir As JObject In Direcciones objTsoft.DtResultados.Rows(Dir("Indice").ToEntero())("Direccion") = Dir("Direccion").ToString() Next End If Catch ex As Exception OnError("Ocurrió un error al asignar las direcciones", ex) End Try retorno = objTsoft.DtResultados.DataTableToJSONIPP() Else retorno = Newtonsoft.Json.JsonConvert.SerializeObject(New With {.Mensaje = "No se encontraron resultados"}) End If Else retorno = Newtonsoft.Json.JsonConvert.SerializeObject(New With {.Mensaje = "Ocurrío un error al consultar los datos"}) End If Catch ex As Exception retorno = "[]" OnError("Ocurrió un error al obtener los datos", ex) End Try objTsoft.Dispose() Return retorno End Function Public Function TieneRemisionesActivas(NoEconomico As String) As String Dim retorno As String = "" Dim Continuar As Boolean = False Dim ObjTSoft As New ClsTSoft Try If ObjTSoft.TieneRemisionesActivas(NoEconomico) Then Dim objRem As New MTieneRemisiones With { .TieneRemisiones = Continuar, .CurrentError = ObjTSoft.MyCurrentError } retorno = JsonConvert.SerializeObject(objRem) objRem = Nothing End If Catch ex As Exception OnError("Ocurrió un error al obtener los datos", ex) End Try ObjTSoft.Dispose() Return retorno End Function Public Function ConsultarDirecciones(Dt As DataTable, Optional LatName As String = "Latitud", Optional LonName As String = "Longitud") 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(LatName).ToString.ToDouble), New JProperty("lon", Row(LonName).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 Public Class addRemisionObj Public CveRemision As Integer Public CurrentError As String End Class Public Class upEstatusRemisionObj Public SeActualizo As Integer Public CurrentError As String End Class Public Class MTieneRemisiones Public TieneRemisiones As Boolean Public CurrentError As String End Class Public Class LatLng Public Property Lat As String Public Property Lng As String Public Property Fecha As String Public Property Direccion As String Public Property CurrentError As String End Class Public Class GetRemisionHistorialsObj Public Property Fecha As DateTime Public Property FolioRemision As String Public Property NoEconomico As String Public Property Lat As String Public Property Lon As String Public Property Direccion As String Public Property Distancia As String Public Property TrackingNumber As String Public Property CveEstatus As Integer End Class Public Class GetRemisionHistorialesObj Public Historial As List(Of GetRemisionHistorialsObj) Public CurrentError As String End Class Public Class ObjRemisiones Public Property cveRemisiones() As Integer Get Return m_cveRemisiones End Get Set m_cveRemisiones = Value End Set End Property Private m_cveRemisiones As Integer Public Property folioRemision() As String Get Return m_folioRemision End Get Set m_folioRemision = Value End Set End Property Private m_folioRemision As String Public Property cveDispositivo() As Integer Get Return m_cveDispositivo End Get Set m_cveDispositivo = Value End Set End Property Private m_cveDispositivo As Integer Public Property iMEI() As String Get Return m_iMEI End Get Set m_iMEI = Value End Set End Property Private m_iMEI As String Public Property cveEstatus() As Integer Get Return m_cveEstatus End Get Set m_cveEstatus = Value End Set End Property Private m_cveEstatus As Integer Public Property geoInicio() As String Get Return m_geoInicio End Get Set m_geoInicio = Value End Set End Property Private m_geoInicio As String Public Property geoFin() As String Get Return m_geoFin End Get Set m_geoFin = Value End Set End Property Private m_geoFin As String Public Property lat() As String Get Return m_lat End Get Set m_lat = Value End Set End Property Private m_lat As String Public Property lon() As String Get Return m_lon End Get Set m_lon = Value End Set End Property Private m_lon As String End Class End Class