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

Public Class desgSolicitudesComunicaciones
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Session("Persona") Is Nothing Then
            Response.Redirect("default.aspx")
        End If
        If Session("modo") = "PERSONAL" Then
            'bolsaDeHorasBL.Visible = False
            intPicadaBL.Visible = False
            VAAPBCBL.Visible = False

            'informPicadasBL.Visible = False
        Else
            VAAPBCBLpers.Visible = False
            intPicadaPersBL.Visible = False
        End If
        Dim sessionUsuario As String = HttpContext.Current.Session("usuario")
        Dim usuRoll As String = Session("persona").Personas(0).Roll
        'Dim sessionUsuario As String = HttpContext.Current.Session("usuario")
        'sessionUsuario = Session("usuario")
        Dim idAsistencia = Request.QueryString("idAsis")
        Session.Add("idAsis", idAsistencia)
        Dim cl = Request.QueryString("cl")
        Dim sCl2 = tsl5.crypt.SHA1("M3Soft." & idAsistencia.ToString)
        If sCl2 <> cl Then
            Response.Redirect("/default.aspx", False)
        Else


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

            ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
            Dim url1 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/EstadosAsistencias"
            Dim credenciales1 As New Net.CredentialCache()
            Dim clienteHTTP1 As New Net.WebClient()
            clienteHTTP1.Encoding = System.Text.Encoding.UTF8
            clienteHTTP1.Credentials = credenciales1
            Dim respuesta1 As String = clienteHTTP1.DownloadString(url1)
            Dim deserializador1 As New System.Web.Script.Serialization.JavaScriptSerializer()
            Dim settings As New Newtonsoft.Json.JsonSerializerSettings()
            settings.CheckAdditionalContent = True
            Dim listaEstados As List(Of Models.Estados) =
            deserializador1.Deserialize(Of List(Of Models.Estados))(respuesta1)


            ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
            Dim url2 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/ObtenAsistencia?idAsistencia=" + idAsistencia + "&Nif=" + sessionUsuario
            Dim credenciales2 As New Net.CredentialCache()
            Dim clienteHTTP2 As New Net.WebClient()
            clienteHTTP2.Encoding = System.Text.Encoding.UTF8
            clienteHTTP2.Credentials = credenciales2
            Dim respuesta2 As String = clienteHTTP2.DownloadString(url2)
            Dim deserializador2 As New System.Web.Script.Serialization.JavaScriptSerializer()
            Dim settings2 As New Newtonsoft.Json.JsonSerializerSettings()
            settings2.CheckAdditionalContent = True
            Dim usu = sessionUsuario
            Dim objetoDatos As ResultadoObtenAsistencia =
                            Newtonsoft.Json.JsonConvert.DeserializeObject(Of ResultadoObtenAsistencia)(respuesta2, settings2)
            Dim idAsis = objetoDatos.idAsistencia.ToString
            Dim sCl = tsl5.crypt.SHA1("M3Soft." & objetoDatos.idAsistencia.ToString)
            Dim urlfichero = "/fichero.aspx?id=" + idAsis + "&t=INCIDENCIA&nif=" + sessionUsuario + "&cl=" + sCl
            Dim desgloseIncidencia = objetoDatos

            Dim listP As List(Of Personal) = Session("persona").Personas
            Dim persResponsable = listP.Where(Function(x) x.Dni = desgloseIncidencia.Nif).ToList

            If persResponsable.Count = 0 OrElse (persResponsable(0).Dni = sessionUsuario AndAlso Session("modo") = "PERSONAL") Then
                Response.Redirect("/Default.aspx")
                Exit Sub
            End If

            Session.Add("idIncidencia", desgloseIncidencia)
            Dim idIncidencia = desgloseIncidencia.idIncidenciaControlHorario

            Dim url3 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/IncidenciasControlHorario"
            ' Dim url3 As String = "http://192.168.41.14:81/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 Incidencia) =
            deserializador3.Deserialize(Of List(Of Incidencia))(respuesta3)

            Dim incidencia = listaPicada.FirstOrDefault(Function(x) x.idIncidencias = idIncidencia)
            inciActual.Value = JsonConvert.SerializeObject(incidencia)
            Session.Add("incidencia", incidencia)
            'If incidencia Is Nothing Then
            '    Response.Redirect("/listSolicitudesComunicaciones.aspx")
            'End If
            Dim fechaIni = CDate(desgloseIncidencia.FechaInicio).ToString("dd/MM/yyyy")
            Dim fechaFin

            If desgloseIncidencia.FechaFin = Nothing Then
                fechaFin = ""
            Else
                fechaFin = CDate(desgloseIncidencia.FechaFin).ToString("dd/MM/yyyy")
            End If
            Dim htmllista = ""
            Dim html = "<div><h4 class='tituDesgSol'>" + desgloseIncidencia.ApellidosNombre + "</h4></div>" +
                         "<table class='tablaPicadas tablaDesgSol'> <tr id='FdI' runat='server'>" +
                         "<th colspan='2'>FECHA</th>"
            If incidencia.AdmiteRangosFechas = True Then
                html += "<td colspan='3' runat='server' id='FdI-I'><span>Inicio: </span>" + fechaIni + "</td>" +
                         "<td colspan='3' runat='server' id='FdI-F'><span>Final: </span>" + fechaFin + "</td></tr>"
            Else
                html += "<td colspan='6' runat='server' id='FdI-I'><span>Inicio: </span>" + fechaIni + "</td>"
            End If

            html += "<tr><th colspan='2'>INCIDENCIA</th>" +
                         "<td colspan='6'>" + incidencia.Nombre + "</td></tr>"
            If incidencia.AdmiteIntervaloHoras Then
                html += "<tr id='HdI-M'style=''><th colspan='2'>HORARIO MAÑANA</th>" +
                         "<td colspan='2'><span>Inicio: </span>" + desgloseIncidencia.HoraInicioManana + "</td>" +
                         "<td colspan='2'><span>Final: </span>" + desgloseIncidencia.HoraFinManana + "</td>" +
                         "<td colspan='2'><span>Total: </span>" + desgloseIncidencia.HorasTraManana + "</td></tr>" +
                         "<tr id='HdI-T'style=''><th colspan='2'>HORARIO TARDE</th>" +
                         "<td colspan='2'><span>Inicio: </span>" + desgloseIncidencia.HoraInicioTarde + "</td>" +
                         "<td colspan='2'><span>Final: </span>" + desgloseIncidencia.HoraFinTarde + "</td>" +
                         "<td colspan='2'><span>Total: </span>" + desgloseIncidencia.HorasTraTarde + "</td></tr>"
            End If
            html += "<tr><th colspan='2'>OBSERVACIONES</th>" +
                         "<td colspan='6'>" + desgloseIncidencia.Observaciones + "</td></tr>" +
                         "<tr><th colspan='2'>ESTADO</th>"
            If desgloseIncidencia.PuedeCambiarEstado = False OrElse (desgloseIncidencia.DesEstadoActual = "BORRADOR" And Session("modo") = "PERSONAL") OrElse ((desgloseIncidencia.DesEstadoActual.Contains("VISTO BUENO")) And (usuRoll = "SUPERVISOR" Or usuRoll = "DELEGADO") AndAlso Session("modo") = "PERSONAL") OrElse ((desgloseIncidencia.DesEstadoActual.Contains("SOLICITADA")) And (usuRoll = "SUPERVISOR" Or usuRoll = "DELEGADO") AndAlso Session("modo") = "PERSONAL") Then
                Dim estadoActual = ""
                estadoActual = desgloseIncidencia.DesEstadoActual
                'If desgloseIncidencia.DesEstadoActual = "ACEPTADA" Then
                '    estadoActual = "ACEPTADA"
                'ElseIf desgloseIncidencia.DesEstadoActual = "BORRADOR" Then
                '    estadoActual = "BORRADOR"
                'ElseIf desgloseIncidencia.DesEstadoActual = "PROPUESTA" Then
                '    estadoActual = "PROPUESTA"
                'Else

                '    For Each posiblesEstados As Estados In desgloseIncidencia.PosiblesEstados
                '        If posiblesEstados.idEstado = desgloseIncidencia.IdEstadoActual Then
                '            estadoActual = posiblesEstados.Descripcion
                '        End If
                '        If desgloseIncidencia.IdEstadoActual = 1 Then
                '            estadoActual = "ACEPTADA"
                '        End If
                '    Next
                'End If
                html += "<td style='font-weight: bold' colspan='6'>" + estadoActual + "</td></tr>"
                If desgloseIncidencia.ExisteArchivo = True Then
                    html += "<tr><th colspant='2'>ARCHIVO ADJUNTO</th><td colspan='6'><a class='btnAlargado' style='width:100%' href='" + urlfichero + "' target='_blank'>VISUALIZAR</a></td></tr></table>"
                Else
                    html += "</table>"
                End If

            Else
                If desgloseIncidencia.IdEstadoActual = Nothing Then
                    desgloseIncidencia.IdEstadoActual = 0
                End If
                html += "<td style='font-weight: bold' colspan='6'>" +
                    "<select id='selEstadoAsis' style='width:100%; height: 30px;'>"
                If desgloseIncidencia.DesEstadoActual = "PROPUESTA" Then
                    html += "<option value=" + desgloseIncidencia.IdEstadoActual.ToString() + ">PROPUESTA</option>"
                ElseIf desgloseIncidencia.DesEstadoActual = "ACEPTADA" Then
                    html += "<option value=" + desgloseIncidencia.IdEstadoActual.ToString() + ">ACEPTADA</option>"
                ElseIf desgloseIncidencia.DesEstadoActual = "BORRADOR" Then
                    html += "<option value=" + desgloseIncidencia.IdEstadoActual.ToString() + ">BORRADOR</option>"
                Else
                    For Each Est As Estados In listaEstados
                        If desgloseIncidencia.IdEstadoActual = Est.idEstado Then
                            html += "<option value=" + Est.idEstado + ">" + Est.Descripcion + "</option>"
                        End If
                    Next
                End If
                For Each posibleEst As Estados In desgloseIncidencia.PosiblesEstados
                    html += "<option value=" + posibleEst.idEstado + ">" + posibleEst.Descripcion + "</option>"
                Next
                html += "</select>" +
                    "</tr>" +
                             "<tr><th colspan='2'>OBSERVACIÓN ESTADO</th><td colspan='6'><textarea id='obsEstado' rows='3' style='width:100%'></textarea></tr>"
                If desgloseIncidencia.ExisteArchivo = True Then
                    html += "<tr><th colspant='2'>ARCHIVO ADJUNTO</th><td colspan='6'><a class='btnAlargado' style='width:100%' href='" + urlfichero + "' target='_blank'>VISUALIZAR</a></td></tr></table>"
                Else
                    html += "</table>"
                End If
                html += "<div style='width:100%; display:flex; justify-content:center;'><input type='button' value='ACTUALIZAR ESTADO' class='btnAzul btnAlargado' style='!important; width: 740px; margin-top:15px;' onclick='CambiarEstado()'/>"
                If Session("modo") = "PROPIO" And (desgloseIncidencia.DesEstadoActual = "BORRADOR") Then
                    btnModIncDiv.InnerHtml = "<input type=""button"" style=""width: 740px; margin-inline:auto"" value=""MODIFICAR INCIDENCIA"" onclick=""modInc()"" class=""btnAzul btnAlargado"" />"
                Else
                    btnModIncDiv.InnerHtml = ""
                End If

                If Session("modo") = "PROPIO" And desgloseIncidencia.DesEstadoActual = "BORRADOR" Then
                    btnBorrarIncDiv.InnerHtml = "<input type=""button"" style=""width: 740px; margin-inline:auto"" value=""ELIMINAR"" onclick=""BorrarInc(" + idAsistencia + ")"" class=""btnAzul btnAlargado"" />"
                Else
                    btnBorrarIncDiv.InnerHtml = ""
                End If
            End If

            tablaIncidencia.InnerHtml = html
            Dim infAnexa
            Dim observaciones
            If desgloseIncidencia.EstadosAsistencia IsNot Nothing Then
                htmllista += "<table class=""tablaPicadas""><tr><th>Fecha/Hora</th>" +
                    "<th>Estado</th>" +
                    "<th>Usuario</th>" +
                    "<th>Información Anexa</th>" +
                    "<th>Observaciones</th></tr>"

                For Each est As EstadosdelaAsistencia In desgloseIncidencia.EstadosAsistencia
                    'If est.IdTipoEstado = 3 And Session("modo") = "PERSONAL" Then
                    'Else
                    htmllista += "<tr><td>" + CDate(est.FechaHora).ToString("dd/MM/yyyy") + "</td>" +
                                            "<td style='text-align: center;'>" + listaEstados.FirstOrDefault(Function(x) x.idEstado = est.IdTipoEstado).Descripcion + "</td>" +
                                            "<td>" + est.Usuario + "</td>"
                        If est.InformacionAnexa Is Nothing Then
                            infAnexa = ""
                        Else
                            infAnexa = est.InformacionAnexa
                        End If
                        htmllista += "<td>" + infAnexa + "</td>"
                        If est.Observaciones Is Nothing Then
                            observaciones = ""
                        Else
                            observaciones = est.Observaciones
                        End If

                        htmllista += "<td>" + observaciones + "</td></tr>"
                    'End If
                Next
                htmllista += "</table>"
                tablaEstadoInc.InnerHtml = htmllista
            End If

        End If

    End Sub
    <System.Web.Services.WebMethod()>
    Public Shared Async Function CargarDesgloseAsis(i As String, h As String) As Task(Of String)
        Dim sessionUsuario As String = HttpContext.Current.Session("usuario")
        Dim idAsistencia As String = i
        'Dim idAsistencia As String = HttpContext.Current.Session("idAsis")
        Dim cl = h
        Dim sCl2 = tsl5.crypt.SHA1("M3Soft." & idAsistencia.ToString)
        If sCl2 <> cl Then
            Dim json = "{""cuerpo"":""ERROR--1""}"

            Return json
            'HttpContext.Current.Response.Redirect("/Default.aspx", False)
        Else
            ' Dim incidencia As Incidencia = HttpContext.Current.Session("incidencia")
            ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
            Dim url2 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/ObtenAsistencia?idAsistencia=" + idAsistencia + "&Nif=" + sessionUsuario
            Dim credenciales2 As New Net.CredentialCache()
            Dim clienteHTTP2 As New Net.WebClient()
            clienteHTTP2.Encoding = System.Text.Encoding.UTF8
            clienteHTTP2.Credentials = credenciales2
            Dim respuesta2 As String = clienteHTTP2.DownloadString(url2)
            Dim deserializador2 As New System.Web.Script.Serialization.JavaScriptSerializer()
            Dim settings2 As New Newtonsoft.Json.JsonSerializerSettings()
            settings2.CheckAdditionalContent = True
            Dim usu = sessionUsuario
            Dim objetoDatos As ResultadoObtenAsistencia =
                                Newtonsoft.Json.JsonConvert.DeserializeObject(Of ResultadoObtenAsistencia)(respuesta2, settings2)
            Dim idAsis = objetoDatos.idAsistencia.ToString
            Dim sCl = tsl5.crypt.SHA1("M3Soft." & objetoDatos.idAsistencia.ToString)
            Dim urlfichero = "/ficheroParlamento.aspx?id=" + idAsis + "&t=INCIDENCIA&nif=" + sessionUsuario + "&cl=" + sCl
            Dim desgloseIncidencia = objetoDatos

            Dim idIncidencia = desgloseIncidencia.idIncidenciaControlHorario
            Dim usuario As String = "tecnosis"
            Dim contraseña As String = "patata2022"
            Dim url3 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/IncidenciasControlHorario"
            ' Dim url3 As String = "http://192.168.41.14:81/api/IncidenciasControlHorario"
            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()
            deserializador3.MaxJsonLength = Integer.MaxValue
            Dim listaPicada As List(Of Incidencia) =
                deserializador3.Deserialize(Of List(Of Incidencia))(respuesta3)

            Dim incidencia = listaPicada.FirstOrDefault(Function(x) x.idIncidencias = idIncidencia)


            'Dim incidencia As Incidencia = HttpContext.Current.Session("incidencia")
            ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
            Dim url4 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/ObtenAsistencia?idAsistencia=" + idAsistencia + "&Nif=" + sessionUsuario
            Dim credenciales4 As New Net.CredentialCache()
            Dim clienteHTTP4 As New Net.WebClient()
            clienteHTTP4.Encoding = System.Text.Encoding.UTF8
            clienteHTTP4.Credentials = credenciales4
            Dim respuesta4 As String = clienteHTTP4.DownloadString(url4)

            Dim deserializador4 As New System.Web.Script.Serialization.JavaScriptSerializer()
            Dim settings As New Newtonsoft.Json.JsonSerializerSettings()
            settings.CheckAdditionalContent = True
            'Dim usu = sessionUsuario
            Dim objetoDatos1 As ResultadoObtenAsistencia =
        Newtonsoft.Json.JsonConvert.DeserializeObject(Of ResultadoObtenAsistencia)(respuesta4, settings)

            Dim listP As List(Of Personal) = HttpContext.Current.Session("persona").Personas
            Dim persResponsable = listP.Where(Function(x) x.Dni = desgloseIncidencia.Nif).ToList
            If persResponsable.Count = 0 OrElse (persResponsable(0).Dni = sessionUsuario AndAlso HttpContext.Current.Session("modo") = "PERSONAL") Then
                Return "{""cuerpo"":""ERROR--1""}"
                Exit Function
            End If
            ' Dim idAsis = objetoDatos.idAsistencia.ToString
            'Dim sCl = tsl5.crypt.SHA1("M3Soft." & objetoDatos.idAsistencia.ToString)
            '     Dim urlfichero = "/fichero.aspx?id=" + idAsis + "&t=INCIDENCIA&nif=" + sessionUsuario + "&cl=" + sCl
            Dim incidenciaActual = JsonConvert.SerializeObject(incidencia)
            Dim json = "{""cuerpo"":" + respuesta4 + ",""link"":""" + urlfichero + """,""incidencia"":" + incidenciaActual + ",""modo"":""" + HttpContext.Current.Session("modo") + """}"


            Return json
        End If
    End Function
    <System.Web.Services.WebMethod()>
    Public Shared Async Function CargarListadoEstados() As Task(Of String)
        ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
        Dim url1 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/EstadosAsistencias"
        Dim credenciales1 As New Net.CredentialCache()
        Dim clienteHTTP1 As New Net.WebClient()
        clienteHTTP1.Encoding = System.Text.Encoding.UTF8
        clienteHTTP1.Credentials = credenciales1
        Dim respuesta1 As String = clienteHTTP1.DownloadString(url1)
        Dim deserializador1 As New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim settings As New Newtonsoft.Json.JsonSerializerSettings()
        settings.CheckAdditionalContent = True
        Dim listaEstados As List(Of Models.Estados) =
        deserializador1.Deserialize(Of List(Of Models.Estados))(respuesta1)
        'liEstInc.Value = respuesta3
        Return respuesta1
    End Function
    <System.Web.Services.WebMethod()>
    Public Shared Function ModificarEstado(i As String, h As String, idEstado As Integer, FechaInicio As String, FechaFin As String, horainiciomanana As String, horafinmanana As String,
                                                horastrabajadasmanana As String, horainiciotarde As String, horafintarde As String, horastrabajadastarde As String, observaciones As String, fichero As String) ', nif As String, expediente As String

        'Dim desgloseIncidencia As ResultadoObtenAsistencia = HttpContext.Current.Session("idIncidencia")
        Dim sessionUsuario As String = HttpContext.Current.Session("usuario")
        'Dim idAsistencia As String = HttpContext.Current.Session("idAsis")

        Dim idAsistencia As String = i

        Dim cl = h
        Dim sCl2 = tsl5.crypt.SHA1("M3Soft." & idAsistencia.ToString)
        If sCl2 <> cl Then
            Dim json = "ERROR--1"
            Return json
            'HttpContext.Current.Response.Redirect("/Default.aspx", False)
        Else

            ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
            Dim url2 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/ObtenAsistencia?idAsistencia=" + idAsistencia + "&Nif=" + sessionUsuario
            Dim credenciales2 As New Net.CredentialCache()
            Dim clienteHTTP2 As New Net.WebClient()
            clienteHTTP2.Encoding = System.Text.Encoding.UTF8
            clienteHTTP2.Credentials = credenciales2
            Dim respuesta2 As String = clienteHTTP2.DownloadString(url2)
            Dim deserializador2 As New System.Web.Script.Serialization.JavaScriptSerializer()
            Dim settings2 As New Newtonsoft.Json.JsonSerializerSettings()
            settings2.CheckAdditionalContent = True
            Dim usu = sessionUsuario
            Dim objetoDatos As ResultadoObtenAsistencia =
                            Newtonsoft.Json.JsonConvert.DeserializeObject(Of ResultadoObtenAsistencia)(respuesta2, settings2)
            Dim idAsis = objetoDatos.idAsistencia.ToString
            Dim sCl = tsl5.crypt.SHA1("M3Soft." & objetoDatos.idAsistencia.ToString)
            Dim urlfichero = "/ficheroParlamento.aspx?id=" + idAsis + "&t=INCIDENCIA&nif=" + sessionUsuario + "&cl=" + sCl
            Dim desgloseIncidencia = objetoDatos

            Dim listP As List(Of Personal) = HttpContext.Current.Session("persona").Personas
            Dim persResponsable = listP.Where(Function(x) x.Dni = desgloseIncidencia.Nif).ToList

            If persResponsable.Count = 0 OrElse (persResponsable(0).Dni = sessionUsuario AndAlso HttpContext.Current.Session("modo") = "PERSONAL") Then
                Return "ERROR--1"
                Exit Function
            End If
            If idEstado = 0 Then
            idEstado = desgloseIncidencia.IdEstadoActual
        End If
        horainiciomanana = If(horainiciomanana = "" Or horainiciomanana = "undefined", "00:00", horainiciomanana)
        horafinmanana = If(horafinmanana = "" Or horafinmanana = "undefined", "00:00", horafinmanana)
        horastrabajadasmanana = If(horastrabajadasmanana = "" Or horastrabajadasmanana = "undefined", "00:00", horastrabajadasmanana)
        horainiciotarde = If(horainiciotarde = "" Or horainiciotarde = "undefined", "00:00", horainiciotarde)
        horafintarde = If(horafintarde = "" Or horafintarde = "undefined", "00:00", horafintarde)
        horastrabajadastarde = If(horastrabajadastarde = "" Or horastrabajadastarde = "undefined", "00:00", horastrabajadastarde)


        If FechaFin = "" Or FechaFin = "undefined" Then
            FechaFin = FechaInicio
        End If
            Dim nif = sessionUsuario
            Dim expediente = ""
        Dim us = sessionUsuario
        Dim fcIn As Date = DateTime.Parse(FechaInicio)
        Dim fcFn As Date = DateTime.Parse(FechaFin)
        Dim fechaIni = fcIn.Month.ToString.PadLeft(2, "0") + "%2F" + fcIn.Day.ToString.PadLeft(2, "0") + "%2F" + fcIn.Year.ToString
        Dim fechaEnd = fcFn.Month.ToString.PadLeft(2, "0") + "%2F" + fcFn.Day.ToString.PadLeft(2, "0") + "%2F" + fcFn.Year.ToString


        ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
        Dim clienteHTTP1 As New Net.WebClient()
        clienteHTTP1.Encoding = System.Text.Encoding.UTF8
            Dim FechaI As String
            Dim FechaF As String
            Dim idIn As String
            Dim HIM As String
            Dim HFM As String
            Dim HTM As String
            Dim HIT As String
            Dim HFT As String
            Dim HTT As String
            Dim Ob As String

            If (sessionUsuario <> desgloseIncidencia.Nif Or desgloseIncidencia.DesEstadoActual <> "BORRADOR") Then
                FechaI = desgloseIncidencia.FechaInicio.Month.ToString.PadLeft(2, "0") + "%2F" + desgloseIncidencia.FechaInicio.Day.ToString.PadLeft(2, "0") + "%2F" + desgloseIncidencia.FechaInicio.Year.ToString
                FechaF = desgloseIncidencia.FechaFin.Month.ToString.PadLeft(2, "0") + "%2F" + desgloseIncidencia.FechaFin.Day.ToString.PadLeft(2, "0") + "%2F" + desgloseIncidencia.FechaFin.Year.ToString
                idIn = desgloseIncidencia.idIncidenciaControlHorario.ToString
                HIM = desgloseIncidencia.HoraInicioManana.Replace(":", "%3A")
                HFM = desgloseIncidencia.HoraFinManana.Replace(":", "%3A")
                HTM = desgloseIncidencia.HorasTraManana.Replace(":", "%3A")
                HIT = desgloseIncidencia.HoraInicioTarde.Replace(":", "%3A")
                HFT = desgloseIncidencia.HoraFinTarde.Replace(":", "%3A")
                HTT = desgloseIncidencia.HorasTraTarde.Replace(":", "%3A")
                Ob = observaciones
            Else
                FechaI = fechaIni
                FechaF = fechaEnd
                idIn = desgloseIncidencia.idIncidenciaControlHorario.ToString
                HIM = horainiciomanana.Replace(":", "%3A")
                HFM = horafinmanana.Replace(":", "%3A")
                HTM = horastrabajadasmanana.Replace(":", "%3A")
                HIT = horainiciotarde.Replace(":", "%3A")
                HFT = horafintarde.Replace(":", "%3A")
                HTT = horastrabajadastarde.Replace(":", "%3A")
                Ob = observaciones
            End If

            Dim url1 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/CamEstAsis?usuario=" + us + "&idAsistencia=" + idAsistencia + "&idEstado=" + idEstado.ToString + "&nif=" + nif +
                "&FechaInicio=" + FechaI + "&FechaFin=" + FechaF + "&idincidencia=" + idIn + "&horainiciomanana=" + HIM + "&horafinmanana=" + HFM + "&horastrabajadasmanana=" + HTM +
                "&horainiciotarde=" + HIT + "&horafintarde=" + HFT + "&horastrabajadastarde=" + HTT +
                "&observaciones=" + Ob + "&expediente=" + expediente
            Dim sRespuesta1 As String = clienteHTTP1.UploadString(url1, "")

            '// 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 objetoaAlmacenar As New Models.AlmacenaFicheroIncidencia
            objetoaAlmacenar.idAsistencia = idAsistencia
            objetoaAlmacenar.Fichero = fichero
            Dim jsonalmacenar As String = JsonConvert.SerializeObject(objetoaAlmacenar)
            If fichero IsNot "" Then
                'Dim url2 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/AlmacenaFicheroIncidencia" '?idAsistencia=" + objetoDatos.idAsistencia.ToString + "&Fichero=" + fichero
                'Dim sRespuesta2 As String = clienteHTTP2.UploadString(url2, Cuerpo)
                Dim respuesta = Almacenafichero(idAsistencia, fichero)
            End If

            '// Deserializar a una clase.
            Dim settings As New Newtonsoft.Json.JsonSerializerSettings()
            settings.CheckAdditionalContent = True
            Dim objetoDatos1 As ResultadoListPicaEntreFechas =
    Newtonsoft.Json.JsonConvert.DeserializeObject(Of ResultadoListPicaEntreFechas)(sRespuesta1, settings)
            Dim Json = "[{""resultado"":""" + objetoDatos1.resultado.ToString + """,""mensaje"":""" + objetoDatos1.Mensaje + """}]"
            Return Json
        End If
    End Function
    <System.Web.Services.WebMethod()>
    Public Shared Function BorrarIncidencia(id As String)
        Dim sessionUsuario As String = HttpContext.Current.Session("usuario")
        Dim us = sessionUsuario
        Dim url2 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/ObtenAsistencia?idAsistencia=" + id + "&Nif=" + sessionUsuario
        Dim credenciales2 As New Net.CredentialCache()
        Dim clienteHTTP2 As New Net.WebClient()
        clienteHTTP2.Encoding = System.Text.Encoding.UTF8
        clienteHTTP2.Credentials = credenciales2
        Dim respuesta2 As String = clienteHTTP2.DownloadString(url2)
        Dim deserializador2 As New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim settings2 As New Newtonsoft.Json.JsonSerializerSettings()
        settings2.CheckAdditionalContent = True
        Dim usu = sessionUsuario
        Dim objetoDatos As ResultadoObtenAsistencia =
                            Newtonsoft.Json.JsonConvert.DeserializeObject(Of ResultadoObtenAsistencia)(respuesta2, settings2)
        Dim idAsis = objetoDatos.idAsistencia.ToString
        Dim sCl = tsl5.crypt.SHA1("M3Soft." & objetoDatos.idAsistencia.ToString)
        Dim urlfichero = "/ficheroParlamento.aspx?id=" + idAsis + "&t=INCIDENCIA&nif=" + sessionUsuario + "&cl=" + sCl
        Dim desgloseIncidencia = objetoDatos

        Dim listP As List(Of Personal) = HttpContext.Current.Session("persona").Personas
        Dim persResponsable = listP.Where(Function(x) x.Dni = desgloseIncidencia.Nif).ToList

        If persResponsable.Count = 0 OrElse (sessionUsuario <> desgloseIncidencia.Nif) Then
            Return "ERROR--1"
            Exit Function
        End If

        ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
        Dim clienteHTTP1 As New Net.WebClient()
        clienteHTTP1.Encoding = System.Text.Encoding.UTF8

        Dim url1 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/EliminarBorrador?idAsistencia=" + id + "&Nif=" + us
        Dim sRespuesta1 As String = clienteHTTP1.UploadString(url1, "")
        Return sRespuesta1

    End Function
    <System.Web.Services.WebMethod()>
    Public Shared Async Function Almacenafichero(id As String, cuerpo As String) As Task(Of String)
        Try

            Dim ruta = "incidencia/" + id + ".pdf"

            'Dim archivo As Byte() = System.Text.Encoding.Unicode.GetBytes(file)

            Dim ObjetoConsulta As New FicheroAtrasnmitir
            ObjetoConsulta.idRegistro = id
            ObjetoConsulta.tabla = "INCIDENCIA"
            'ObjetoConsulta.Fichero = System.Convert.ToBase64String(archivo)
            ObjetoConsulta.Fichero = cuerpo

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

            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 ResultadoAlmacenaFicheroAtransmitir =
            Newtonsoft.Json.JsonConvert.DeserializeObject(Of ResultadoAlmacenaFicheroAtransmitir)(sRespuesta, settings)
            'ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
            'Dim clienteHTTP2 As New Net.WebClient()
            'clienteHTTP2.Encoding = System.Text.Encoding.UTF8
            'clienteHTTP2.Headers.Add("Content-Type", "application/json")
            'Dim url2 As String = ConfigurationManager.AppSettings("RutaRes").ToString + "/api/AlmacenaFicheroIncidencia"
            'Dim sRespuesta2 As String = clienteHTTP2.UploadString(url2, cuerpo)
        Catch ex As Exception
            Debug.Print(ex.Message)
            Debug.Print(ex.StackTrace)
        End Try
    End Function
End Class