<%@ 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 String) As String Dim retorno As String = "" Dim objTsoft As New ClsTSoft objTsoft.IniciaTransacSQL() Dim Continuar As Boolean = objTsoft.AddRemisiones(FolioRemision, NoEconomico, CveEstatus, GeoInicial, GeoCarga, GeoEntrega, Fecha) Dim objRem As New addRemisionObj If Continuar Then objTsoft.Commit() objRem.CveRemision = objTsoft.DtResultados.Rows(0)("CveRemision").ToString().ToEntero() objRem.CurrentError = "" Else objTsoft.RollBack() objRem.CveRemision = 0 objRem.CurrentError = objTsoft.MyCurrentError End If objTsoft.Dispose() retorno = JsonConvert.SerializeObject(objRem) Return retorno.ToString End Function Public Function UpEstatusRemision(FolioRemision As String, CveEstatus As String) 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) Return retorno.ToString End Function Public Function GetUltimaPosicion(DevID As String) As String Dim retorno As String = "" Dim ObjGPS As New ClsGPS Dim Continuar As Boolean = ObjGPS.UltimaPosicionEquipoGetWS(DevID) Dim ObjPos As New LatLng If Continuar Then ObjPos.Lat = ObjGPS.DtResultados.Rows("0")("Lat").ToString ObjPos.Lng = ObjGPS.DtResultados.Rows("0")("Lng").ToString Else ObjPos.CurrentError = "No se pudo obtener la posición." End If ObjGPS.Dispose() retorno = JsonConvert.SerializeObject(ObjPos) Return retorno.ToString 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) Return retorno.ToString End Function Public Function GetRemisionHistorial(FolioRemision As String, NoEconomico As String) As String Dim retorno As String = "" Dim objTsoft As New ClsTSoft Dim Continuar As Boolean = objTsoft.GETRemisionesHistorial(FolioRemision, NoEconomico) Dim objRem As New GetRemisionHistorialesObj If Continuar Then objRem.Historial = objTsoft.DtResultados.DataTableToObject(Of GetRemisionHistorialsObj) objRem.CurrentError = "" Else objRem.Historial = New List(Of GetRemisionHistorialsObj) objRem.CurrentError = objTsoft.MyCurrentError End If objTsoft.Dispose() retorno = JsonConvert.SerializeObject(objRem) Return retorno.ToString End Function Public Function GetInfoEventos(FechaInicio As String, FechaFin As String) As String Dim retorno As String = "[]" Dim objTsoft As New ClsTSoft If objTsoft.GetInfoEventosPenske(FechaInicio.ToDateTime(), FechaFin.ToDateTime()) Then If objTsoft.DtResultados.Rows.Count > 0 Then 'CONSULTA DIRECCIONES Dim Direcciones As JArray = ConsultarDirecciones(objTsoft.DtResultados) For Each Dir As JObject In Direcciones objTsoft.DtResultados.Rows(Dir("Indice").ToEntero())("Direccion") = Dir("Direccion").ToString() Next 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 objTsoft.Dispose() Return retorno.ToString End Function Public Function TieneRemisionesActivas(NoEconomico As String) As String Dim retorno As String = "" Dim Continuar As Boolean = False Dim ObjTSoft As New ClsTSoft Continuar = ObjTSoft.TieneRemisionesActivas(NoEconomico) Dim objRem As New MTieneRemisiones With { .TieneRemisiones = Continuar, .CurrentError = ObjTSoft.MyCurrentError } ObjTSoft.Dispose() retorno = JsonConvert.SerializeObject(objRem) Return retorno End Function Public Function ConsultarDirecciones(Dt As DataTable) 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("Latitud").ToString.ToDouble), New JProperty("lon", Row("Longitud").ToString.ToDouble) )) Dim Base64array = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(posicionesArray.ToString())) Using wc As New HttpClient() Try Dim Url = New Uri($"{ClsPaginas.UrlDirecciones}nominatim/reverseMultiple.php") 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) 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 Lat As String Public Lng As String Public 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 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