Imports Newtonsoft.Json
Imports System.Net
Imports System.Net.Http
Imports System.Net.Security
Imports System.Threading.Tasks
Imports WebIntranet.Models

Public Class home
    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
        If Session("modo") = "PERSONAL" Then
            divDP.Visible = False
            divNom.Visible = False
            divSol.Visible = False
            btnControlHorario.Attributes.Add("href", "/listPicadas.aspx")
        Else
            btnControlHorario.Attributes.Add("href", "/intPicada.aspx")
        End If
        If Session("RET") = "RET" AndAlso Session("modo") = "PROPIO" Then
            btnControlHorario.Visible = False
            divSol.Visible = False

        End If
    End Sub
    <System.Web.Services.WebMethod()>
    Public Shared Async Function ObtenerAcredDatos() As Task(Of String)
        Try
            Dim sessionUsuario As String = HttpContext.Current.Session("usuario")
            'Dim bd = New ODataService4.ODataService4Service(New Uri(UtilWebIntranet.UrlWebService))
            'Dim persona = bd.parlamentoDB_PERSONAS.Where(Function(x) x.NIF = sessionUsuario).ToList.First
            Dim ObjetoConsulta As New NifPersona
            ObjetoConsulta.Nif = sessionUsuario
            Dim persona = HttpContext.Current.Session("persona").personas(0)

            'ObjetoConsulta.texto1 = "2"
            Dim jsonConsulta As String = JsonConvert.SerializeObject(ObjetoConsulta)
            Dim url As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/ObtenerHAD"

            Dim clienteHTTP As New HttpClient
            Dim contenidoConsultaHTTP As New StringContent(jsonConsulta, Encoding.UTF8, "application/json")
            Debug.WriteLine("CargarListadodePicadasAsync:1===" + Now.ToLongTimeString)
            Dim respuestaHTTP As HttpResponseMessage = Await clienteHTTP.PostAsync(url, contenidoConsultaHTTP).ConfigureAwait(False)
            Debug.WriteLine("CargarListadodePicadasAsync:2===" + Now.ToLongTimeString)
            Dim sRespuesta As String = Await respuestaHTTP.Content.ReadAsStringAsync().ConfigureAwait(False)
            Debug.WriteLine("CargarListadodePicadasAsync:3===" + Now.ToLongTimeString)
            Dim settings As New Newtonsoft.Json.JsonSerializerSettings()
            settings.CheckAdditionalContent = True
            Dim objetoDatos As ResultadoObtenerHAD =
                    Newtonsoft.Json.JsonConvert.DeserializeObject(Of ResultadoObtenerHAD)(sRespuesta, settings)
            Dim resultado As Byte() = System.Convert.FromBase64String(objetoDatos.HAD)
            Dim archivo = Convert.ToBase64String(resultado)
            Dim Nombre = "HojaAcreditaciones_" + persona.Nombre.replace(",", "").replace(" ", "-") + ".pdf"
            Dim respuesta = "{""archivo"":""" + archivo + """,""nombre"":""" + Nombre + """}"
            'Return respuesta
            Return respuesta
        Catch ex As Exception
            'If UtilWebIntranet.CheckCred() = False Then
            '    Return "ERROR--1"
            '    Exit Function
            'End If
        End Try

    End Function
    <System.Web.Services.WebMethod()>
    Public Shared Async Function ObtenerConsolidacionGrado() As Task(Of String)
        Try


            ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
            Dim sessionUsuario = HttpContext.Current.Session("usuario")
            '// Aquí preparamos el objeto para la consulta.
            Dim objetoConsulta As New Models.NifPersona

            objetoConsulta.Nif = sessionUsuario 'New List(Of String)

            '// Aquí convertimos el objeto en una cadena JSON.
            Dim jsonConsulta As String = JsonConvert.SerializeObject(objetoConsulta)
            Dim url As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/SolicitudConsolidacionGrado"

            Dim clienteHTTP As New HttpClient
            Dim contenidoConsultaHTTP As New StringContent(jsonConsulta, Encoding.UTF8, "application/json")
            Debug.WriteLine("CargarListadodePicadasAsync:1===" + Now.ToLongTimeString)
            Dim respuestaHTTP As HttpResponseMessage = Await clienteHTTP.PostAsync(url, contenidoConsultaHTTP).ConfigureAwait(False)
            Debug.WriteLine("CargarListadodePicadasAsync:2===" + Now.ToLongTimeString)
            Dim sRespuesta As String = Await respuestaHTTP.Content.ReadAsStringAsync().ConfigureAwait(False)
            Debug.WriteLine("CargarListadodePicadasAsync:3===" + Now.ToLongTimeString)
            '// danmun: Aquí SÍ hay que poner `.ConfigureAwait(False)` al final de las llamadas a métodos Async()
            '// para que el control de ejecución vuelva a este hilo.

            ''// Deserializar a una clase.
            Dim settings As New Newtonsoft.Json.JsonSerializerSettings()
            settings.CheckAdditionalContent = True
            Dim objetoDatos As Models.ResultadoSolicitudConsolidacionGrado =
                Newtonsoft.Json.JsonConvert.DeserializeObject(Of Models.ResultadoSolicitudConsolidacionGrado)(sRespuesta, settings)

            Debug.WriteLine("Resultado: " & objetoDatos.Resultado)
            Return sRespuesta
        Catch ex As Exception

        End Try
    End Function

    <System.Web.Services.WebMethod()>
    Public Shared Async Function SituacionEmpleados() As Task(Of String)
        Dim url3 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/SituacionPersonal"
        Dim credenciales3 As New Net.CredentialCache()
        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()
        Dim settings As New Newtonsoft.Json.JsonSerializerSettings()
        settings.CheckAdditionalContent = True
        Dim Datos As List(Of Models.SituacionPersonalOficina) =
        deserializador3.Deserialize(Of List(Of Models.SituacionPersonalOficina))(respuesta3)

        Return respuesta3


    End Function
End Class