Imports System.Net
Imports System.Net.Security

Public Class bolsaDeHoras
    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
            VAAPBCBL.Visible = False
            'bolsaDeHorasBL.Visible = False
        End If


        'sessionUsuario = Session("usuario")
        Dim fechaToday = DateTime.Now.ToString("yyyy-MM-dd")
        inpFechaFinBolsa.Value = fechaToday
        inpFechaIniBolsa.Value = DateTime.Now.ToString("yyyy") + "-01-01"
    End Sub
    <System.Web.Services.WebMethod()>
    Public Shared Function ListaBolsaHoras(fechaInit As String, fechaEnd As String) As String
        Dim sessionUsuario As String = HttpContext.Current.Session("usuario")
        'Dim url1 As String = "https://172.16.89.216:81/api/HorasExtrasEntreFechas?Nif=28466610Q&FechaInicio=06%2F01%2F2022&FechaFin=06%2F30%2F2022"
        Dim url1 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/HorasExtrasEntreFechas?Nif=" + sessionUsuario + "&FechaInicio=" + fechaInit + "&FechaFin=" + fechaEnd
        '  Dim url1 As String = "https://192.168.41.122/api/HorasExtrasEntreFechas?Nif=28466610Q&FechaInicio=06%2F01%2F2022&FechaFin=06%2F30%2F2022"
        ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
        Dim clienteHTTP1 As New Net.WebClient()
        clienteHTTP1.Encoding = System.Text.Encoding.UTF8
        Dim sRespuesta1 As String = clienteHTTP1.DownloadString(url1)
        'Me.TextBoxResultados.Text = sRespuesta1


        '// 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 sbResultado As New Text.StringBuilder()
        sbResultado.AppendFormat("Resultado: {0}{1}", datos.Item("Resultado").ToString, vbCrLf)
        sbResultado.AppendFormat("Mensaje: {0}{1}", datos.Item("Mensaje"), vbCrLf)
        sbResultado.AppendFormat("ListadoEF: {0}{1}", datos.Item("ListadoEF"), vbCrLf)

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

        Debug.WriteLine("Resultado: " & objetoDatos.Resultado)
        Debug.WriteLine("Mensaje: " & objetoDatos.Mensaje)
        '   Debug.WriteLine("ListadoEF.FechaInicio: " & objetoDatos.ListadoEF.FechaInicio)

        objetoDatos.HorasEF.ListadoHorasExtras.Sort(Function(x, y) x.Fecha.CompareTo(y.Fecha))

        Dim json = ""
        json += "[{""Nombre"":""" + objetoDatos.HorasEF.Nombre + """,""HorasExtra"":"
        Dim cont = 0

        json += "["
        If Not objetoDatos.HorasEF.ListadoHorasExtras.Count = 0 Then
            For Each item As Models.HoraExtra In objetoDatos.HorasEF.ListadoHorasExtras
                If cont >= 1 Then
                    json += ","
                End If
                cont += 1
                json += "{""Fecha"":""" + item.Fecha + """,""Horas"":""" + item.Horas + """,""Descripcion"":""" + item.Descripcion + """}"
            Next
        Else
            json += ""
        End If
        json += "],"


        json += """SaldoPeriodo"":""" + objetoDatos.HorasEF.SaldoPeriodo + """,""SaldoAcumulado"":""" + objetoDatos.HorasEF.SalcoAcumulado + """}]"
        Return json

    End Function

End Class