Imports System.Net
Imports System.Net.Security

Public Class intPicadaPersonal
    Inherits System.Web.UI.Page

    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
        estIncPicBL.Visible = False
        If Session("modo") = "PERSONAL" Then
            If Session("persona").Personas(0).Dni = "44286377S" Then
                estIncPicBL.Visible = True
            End If
            Dim persons As List(Of Models.Personal) = Session("persona").Personas
            Dim listaPersonas As New List(Of Models.Personal)
            Dim listDni = Session("usuariosSeleccionados")
            For Each pers As String In listDni
                Dim per = persons.FirstOrDefault(Function(x) x.Dni = pers)
                listaPersonas.Add(per)
            Next
            cbPersonas.DataSource = listaPersonas.OrderBy(Function(x) x.Nombre)
            cbPersonas.DataBind()
            'Dim DivSelect = "<select class='selectIn' style='width:100%'>"
            'For Each pers As Models.Personal In listaPersonas
            '    DivSelect += "<option value='" + pers.Dni + "'>" + pers.Nombre + "</option>"
            'Next
            'DivSelect += "</select>"
            'selPersonas.InnerHtml = DivSelect
        Else
            Li1.Visible = False
        End If

    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, fecha As String, hora As String, dni 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 = dni
        Dim thisDate = CDate(fecha)
        Dim thisTime = If(hora IsNot Nothing AndAlso hora <> "", hora, "12:00:00")

        Dim fechaActual = DateTime.Now
        Dim FechahoraFormatoRest = thisDate.Month.ToString.PadLeft(2, "0") & "%2F" & thisDate.Day.ToString.PadLeft(2, "0") & "%2F" & thisDate.Year.ToString & "%20" & thisTime.Substring(0, 2) & "%3A" & thisTime.Substring(3, 2) & "%3A" & thisTime.Substring(6, 2)
        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
        'Return "hecho"
    End Function
End Class