Imports System.Net
Imports System.Net.Security

Public Class intPicada
    Inherits System.Web.UI.Page
    'Shared sessionUsuario As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Session("usuario") = "" Then
            Response.Redirect("default.aspx")
        End If

        If Session("modo") = "PERSONAL" Then
            'intPicadaBL.Visible = False
            'intTeletrabajoBL.Visible = False
        End If
        'sessionUsuario = Session("usuario")
    End Sub
    Private Sub selIncidencia_Init(sender As Object, e As EventArgs) Handles selIncidencia.Init

        Dim ListadoIncidencias = CargarSelectIncidenciasControlHorario(True)
        selIncidencia.DataSource = ListadoIncidencias
        'selIncidencia.DataTextField = "Descripcion"
        'selIncidencia.DataValueField = "idIncidencias"
        selIncidencia.DataBind()

    End Sub

    Private Function CargarSelectIncidenciasControlHorario(Soloreloj As Boolean) As List(Of Models.Incidencia)

        Dim usuario As String = "tecnosis"
        Dim contraseña As String = "patata2022"

        Dim url3 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/IncidenciasControlHorario"

        Dim credenciales3 As New Net.CredentialCache()
        credenciales3.Add(New Uri(url3), "Basic", New Net.NetworkCredential(usuario, contraseña))
        Dim clienteHTTP3 As New Net.WebClient()
        clienteHTTP3.Encoding = System.Text.Encoding.UTF8
        clienteHTTP3.Credentials = credenciales3
        Dim respuesta3 As String = clienteHTTP3.DownloadString(url3)
        Dim deserializador3 As New System.Web.Script.Serialization.JavaScriptSerializer()
        deserializador3.MaxJsonLength = Integer.MaxValue

        Dim listaPicada As List(Of Models.Incidencia) =
            deserializador3.Deserialize(Of List(Of Models.Incidencia))(respuesta3)

        Dim InciVacia As New Models.Incidencia
        InciVacia.idIncidencias = 0
        InciVacia.Descripcion = ""
        InciVacia.EsInciReloj = True
        listaPicada.Add(InciVacia)

        Return listaPicada.Where(Function(x) x.EsInciReloj = Soloreloj).OrderBy(Function(x) x.Descripcion).ToList

    End Function
    <System.Web.Services.WebMethod()>
    Public Shared Function Picar(incidencia As String) As String
        '// A continuación, se realizará una petición al servicio REST
        '// de la Oficina Antifraude para identificar al usuario "manuel".
        ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
        Dim sessionUsuario As String = HttpContext.Current.Session("usuario")
        Dim clienteHTTP1 As New Net.WebClient()
        clienteHTTP1.Encoding = System.Text.Encoding.UTF8
        Dim nif = sessionUsuario

        Dim fechaActual = DateTime.Now
        Dim FechahoraFormatoRest = fechaActual.Month.ToString.PadLeft(2, "0") & "%2F" & fechaActual.Day.ToString.PadLeft(2, "0") & "%2F" & fechaActual.Year.ToString & "%20" & fechaActual.Hour.ToString.PadLeft(2, "0") & "%3A" & fechaActual.Minute.ToString.PadLeft(2, "0") & "%3A" & fechaActual.Second.ToString.PadLeft(2, "0")
        Dim IdIncidencia As String = incidencia
        If IdIncidencia = "null" Then
            IdIncidencia = "0"
        End If
        Dim url1 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/PicadaNueva?Nif=" + nif + "&FechaHora=" + FechahoraFormatoRest + "&idIncideniaReloj=" + IdIncidencia
        Dim sRespuesta1 As String = clienteHTTP1.UploadString(url1, "")
        Console.WriteLine(fechaActual)

        '// Esta es una manera "genérica" de acceder a datos JSON mediante LINQ,
        '// usando la biblioteca Newtonsoft.Json.
        Dim datos As Newtonsoft.Json.Linq.JObject =
            Newtonsoft.Json.JsonConvert.DeserializeObject(Of Newtonsoft.Json.Linq.JObject)(sRespuesta1)
        Dim resultado = datos.Item("resultado").ToString
        Dim errores = datos.Item("Mensaje").ToString

        Dim MensPicada = ""
        MensPicada = errores
        Dim json = ""
        json += "[{""result"":""" + resultado + """,""mensaje"":""" + errores + """}]"

        Return json
    End Function
End Class