Files
SIG/asmx/WsTSoft.asmx

415 lines
15 KiB
Plaintext

<%@ 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.
' <System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://TractoSoft.org/")>
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)>
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Public Class WsTSoft
Inherits System.Web.Services.WebService
<WebMethod()>
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 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
<WebMethod()>
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)
objRem = Nothing
Return retorno
End Function
<WebMethod()>
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
<WebMethod()>
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
<WebMethod()>
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
<WebMethod()>
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
<WebMethod()>
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
<Serializable>
Public Class addRemisionObj
Public CveRemision As Integer
Public CurrentError As String
End Class
<Serializable>
Public Class upEstatusRemisionObj
Public SeActualizo As Integer
Public CurrentError As String
End Class
<Serializable>
Public Class MTieneRemisiones
Public TieneRemisiones As Boolean
Public CurrentError As String
End Class
<Serializable>
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
<Serializable>
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
<Serializable>
Public Class GetRemisionHistorialesObj
Public Historial As List(Of GetRemisionHistorialsObj)
Public CurrentError As String
End Class
<Serializable>
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